Rev 6001 | Rev 6749 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Cache\Storage\Adapter\AbstractAdapter;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\JsonModel;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Mapper\DailyPulseEmojiMapper;use LeadersLinked\Mapper\DailyPulseRecordMapper;use LeadersLinked\Mapper\EngagementUserMapper;use LeadersLinked\Model\DailyPulseRecord;use LeadersLinked\Model\DailyPulseEmoji;use LeadersLinked\Mapper\EngagementMapper;use LeadersLinked\Model\EngagementUser;use LeadersLinked\Mapper\EngagementRecordMapper;use LeadersLinked\Model\EngagementRecord;class DailyPulseController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @param AdapterInterface $adapter* @param AbstractAdapter $cache* @param LoggerInterface $logger* @param array $config*/public function __construct($adapter, $cache , $logger, $config){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;}public function indexAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchDefaultForNetworkByNetworkId($currentNetwork->id);$request = $this->getRequest();if($request->isGet()) {$emojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);$engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);$engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($engagementUser) {$points = $engagementUser->points;} else {$points = 0;}$dailyRecordMapper = DailyPulseRecordMapper::getInstance($this->adapter);$howAreYouFeelRecord = $dailyRecordMapper->fetchOneCurrentByUserIdAndType($currentUser->id, DailyPulseRecord::TYPE_HOW_ARE_YOU_FEEL);$climateOnYourOrganization = $dailyRecordMapper->fetchOneCurrentByUserIdAndType($currentUser->id, DailyPulseRecord::TYPE_CLIMATE_ON_YOUR_ORGANIZATION);$emojis_how_are_you_feel = [];$emojis_climate_on_your_organization = [];$records = $emojiMapper->fetchAllActiveByCompanyId($company->id);foreach($records as $record){if($record->type == DailyPulseEmoji::TYPE_HOW_ARE_YOU_FEEL) {if($howAreYouFeelRecord) {$link_save = '';if($howAreYouFeelRecord->emoji_id != $record->id) {continue;}} else {$link_save = $this->url()->fromRoute('daily-pulse/how_are_you_feel', ['id' => $record->uuid]);}array_push($emojis_how_are_you_feel, ['id' => $record->uuid,'link_save' => $link_save,'image' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'daily-pulse', 'filename' => $record->image]),]);}if($record->type == DailyPulseEmoji::TYPE_CLIMATE_ON_YOUR_ORGANIZATION) {if($climateOnYourOrganization) {$link_save = '';if($climateOnYourOrganization->emoji_id != $record->id) {continue;}} else {$link_save = $this->url()->fromRoute('daily-pulse/climate_on_your_organization', ['id' => $record->uuid]);}array_push($emojis_climate_on_your_organization, ['id' => $record->uuid,'link_save' => $link_save,'image' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'daily-pulse', 'filename' => $record->image]),]);}}$data = ['success' => true,'data' => ['points' => $points,'emojis_how_are_you_feel' => $emojis_how_are_you_feel,'emojis_climate_on_your_organization' => $emojis_climate_on_your_organization,]];return new JsonModel($data);} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}return new JsonModel($data);}public function howAreYouFeelAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchDefaultForNetworkByNetworkId($currentNetwork->id);$id = $this->params()->fromRoute('id');$emojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);$emoji = $emojiMapper->fetchOneByUuid($id);if(!$emoji) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_NOT_FOUND'];return new JsonModel($data);}if($emoji->status == DailyPulseEmoji::STATUS_INACTIVE) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_IS_INACTIVE'];return new JsonModel($data);}if($emoji->type != DailyPulseEmoji::TYPE_HOW_ARE_YOU_FEEL) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_IS_WRONG_TYPE'];return new JsonModel($data);}if($emoji->company_id != $company->id) {$data = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($data);}$request = $this->getRequest();if($request->isPost()) {$dailyPulseRecordMapper = DailyPulseRecordMapper::getInstance($this->adapter);$dailyPulse = $dailyPulseRecordMapper->fetchOneCurrentByUserIdAndType($currentUser->id, DailyPulseRecord::TYPE_HOW_ARE_YOU_FEEL);if($dailyPulse) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_RECORD_USER_ALREADY_FOUND'];} else {$engagementMapper = EngagementMapper::getInstance($this->adapter);$engagement = $engagementMapper->fetchOneByCompanyId($company->id);$dailyPulse = new DailyPulseRecord();$dailyPulse->company_id = $company->id;$dailyPulse->user_id = $currentUser->id;$dailyPulse->emoji_id = $emoji->id;$dailyPulse->type = DailyPulseRecord::TYPE_HOW_ARE_YOU_FEEL;$dailyPulse->engagement = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;$dailyPulse->points = $emoji->points;$result = $dailyPulseRecordMapper->insert($dailyPulse);if($result) {if($engagement) {$engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);$engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($engagementUser) {$engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_how_are_you_feel : 0);$engagementUserMapper->update( $engagementUser );} else {$engagementUser = new EngagementUser();$engagementUser->company_id = $company->id;$engagementUser->user_id = $currentUser->id;$engagementUser->points = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;$engagementUserMapper->insert( $engagementUser );}$engagementRecord = new EngagementRecord();$engagementRecord->company_id = $company->id;$engagementRecord->user_id = $currentUser->id;$engagementRecord->points = $engagement->daily_pulse_how_are_you_feel;$engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_HOW_ARE_YOU_FEEL;$engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);$engagementRecordMapper->insert($engagementRecord);}$data = ['success' => true,'data' => 'LABEL_DAILY_PULSE_EMOJI_ADDED'];} else {$data = ['success' => false,'data' => $dailyPulseRecordMapper->getError()];}}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);}public function climateOnYourOrganizationAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchDefaultForNetworkByNetworkId($currentNetwork->id);$id = $this->params()->fromRoute('id');$emojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);$emoji = $emojiMapper->fetchOneByUuid($id);if(!$emoji) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_NOT_FOUND'];return new JsonModel($data);}if($emoji->status == DailyPulseEmoji::STATUS_INACTIVE) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_IS_INACTIVE'];return new JsonModel($data);}if($emoji->type != DailyPulseEmoji::TYPE_CLIMATE_ON_YOUR_ORGANIZATION) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_EMOJI_IS_WRONG_TYPE'];return new JsonModel($data);}if($emoji->company_id != $company->id) {$data = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($data);}$request = $this->getRequest();if($request->isPost()) {$dailyPulseRecordMapper = DailyPulseRecordMapper::getInstance($this->adapter);$dailyPulse = $dailyPulseRecordMapper->fetchOneCurrentByUserIdAndType($currentUser->id, DailyPulseRecord::TYPE_CLIMATE_ON_YOUR_ORGANIZATION);if($dailyPulse) {$data = ['success' => false,'data' => 'ERROR_DAILY_PULSE_RECORD_USER_ALREADY_FOUND'];} else {$engagementMapper = EngagementMapper::getInstance($this->adapter);$engagement = $engagementMapper->fetchOneByCompanyId($company->id);$dailyPulse = new DailyPulseRecord();$dailyPulse->company_id = $company->id;$dailyPulse->user_id = $currentUser->id;$dailyPulse->emoji_id = $emoji->id;$dailyPulse->type = DailyPulseRecord::TYPE_CLIMATE_ON_YOUR_ORGANIZATION;$dailyPulse->engagement = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;$dailyPulse->points = $emoji->points;$result = $dailyPulseRecordMapper->insert($dailyPulse);if($result) {if($engagement) {$engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);$engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($engagementUser) {$engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_climate_on_your_organization : 0);$engagementUserMapper->update( $engagementUser );} else {$engagementUser = new EngagementUser();$engagementUser->company_id = $company->id;$engagementUser->user_id = $currentUser->id;$engagementUser->points = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;$engagementUserMapper->insert( $engagementUser );}$engagementRecord = new EngagementRecord();$engagementRecord->company_id = $company->id;$engagementRecord->user_id = $currentUser->id;$engagementRecord->points = $engagement->daily_pulse_climate_on_your_organization;$engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_CLIMATE_ON_YOUR_ORGANIZATION;$engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);$engagementRecordMapper->insert($engagementRecord);}$data = ['success' => true,'data' => 'LABEL_DAILY_PULSE_EMOJI_ADDED'];} else {$data = ['success' => false,'data' => $dailyPulseRecordMapper->getError()];}}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);}}