Rev 1545 | 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\Authentication\AuthenticationService;use Laminas\Authentication\Result as AuthResult;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\Authentication\AuthAdapter;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Mapper\EmailTemplateMapper;use LeadersLinked\Model\User;use LeadersLinked\Model\UserType;use LeadersLinked\Library\AesCipher;use LeadersLinked\Library\QueueEmail;use LeadersLinked\Library\Functions;use LeadersLinked\Model\EmailTemplate;use LeadersLinked\Mapper\UserPasswordMapper;use LeadersLinked\Mapper\DeviceMapper;use LeadersLinked\Model\Device;use LeadersLinked\Mapper\ApplicationMapper;use LeadersLinked\Model\Application;use LeadersLinked\Validator\PasswordStrengthCheck;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Model\Company;use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;use LeadersLinked\Model\CompanyMicrolearningSlide;use LeadersLinked\Mapper\CompanyMicrolearningUserLogMapper;use LeadersLinked\Mapper\CompanyMicrolearningUserProgressMapper;use LeadersLinked\Mapper\CompanyMicrolearningQuizMapper;use LeadersLinked\Mapper\CompanyMicrolearningQuestionMapper;use LeadersLinked\Mapper\CompanyMicrolearningAnswerMapper;use LeadersLinked\Model\CompanyMicrolearningUserProgress;use LeadersLinked\Model\CompanyMicrolearningUserLog;use LeadersLinked\Mapper\DeviceHistoryMapper;use LeadersLinked\Model\DeviceHistory;use LeadersLinked\Mapper\PushMapper;use LeadersLinked\Model\Push;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleUserMapper;use LeadersLinked\Mapper\CompanyServiceMapper;use LeadersLinked\Model\Service;use LeadersLinked\Model\CompanyService;use LeadersLinked\Model\CompanyMicrolearningCapsuleUser;use LeadersLinked\Model\CompanyMicrolearningUserQuiz;use LeadersLinked\Mapper\CompanyMicrolearningUserQuizMapper;use LeadersLinked\Mapper\CompanyMicrolearningUserMapper;use LeadersLinked\Model\CompanyMicrolearningUser;use LeadersLinked\Mapper\PushTemplateMapper;use LeadersLinked\Model\PushTemplate;use LeadersLinked\Mapper\SyncLogMapper;use LeadersLinked\Model\SyncLog;use LeadersLinked\Model\CompanyMicrolearningExtendUser;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserMapper;use LeadersLinked\Model\CompanyMicrolearningExtendUserCompany;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserCompanyMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserFunctionMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserGroupMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserInstitutionMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserPartnerMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserProgramMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserStudentTypeMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserSectorMapper;use LeadersLinked\Model\CompanyMicrolearningTopic;use LeadersLinked\Model\CompanyMicrolearningCapsule;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleCommentMapper;use LeadersLinked\Form\SelfEvaluation\CapsuleCommentForm;use LeadersLinked\Model\CompanyMicrolearningCapsuleComment;class ServiceCapsuleCommentsController 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(){$request = $this->getRequest();if($request->isGet()) {$serviceDatetimeFormat = $this->config['leaderslinked.services.datetime'];$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$capsule_id = $this->params()->fromRoute('capsule_id');$capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);$capsule = $capsuleMapper->fetchOneByUuid($capsule_id);if(!$capsule) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_NOT_FOUND']);}$capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);$capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);if(! $capsuleUser) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',]);}$capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);$records = $capsuleCommentsMapper->fetchAllByCapsuleIdAndUserId($capsule->id, $currentUser->id);$data = [];foreach($records as $record){$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);array_push($data, ['date' => $dt->format($serviceDatetimeFormat),'rating' => $record->rating,'comment' => $record->comment]);}return new JsonModel(['success' => true,'data' => $data]);}return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}public function getAction(){$request = $this->getRequest();if($request->isGet()) {$serviceDatetimeFormat = $this->config['leaderslinked.services.datetime'];$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$capsule_id = $this->params()->fromRoute('capsule_id');$comment_id = $this->params()->fromRoute('comment_id');$capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);$capsule = $capsuleMapper->fetchOneByUuid($capsule_id);if(!$capsule) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_NOT_FOUND']);}$capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);$capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);if(! $capsuleUser) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',]);}$capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);$capsuleComment = $capsuleCommentsMapper->fetchOneByUuid($comment_id);if(!$capsuleComment) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_COMMENT_NOT_FOUND',]);}if($capsuleComment->capsule_id != $capsule->id || $capsuleComment->user_id != $currentUser->id) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE_COMMENT',]);}$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $capsuleComment->added_on);return new JsonModel(['success' => true,'data' => ['date' => $dt->format($serviceDatetimeFormat),'rating' => $capsuleComment->rating,'comment' => $capsuleComment->comment]]);}return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}public function deleteAction(){$request = $this->getRequest();if($request->isPost()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$capsule_id = $this->params()->fromRoute('capsule_id');$comment_id = $this->params()->fromRoute('comment_id');$capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);$capsule = $capsuleMapper->fetchOneByUuid($capsule_id);if(!$capsule) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_NOT_FOUND']);}$capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);$capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);if(! $capsuleUser) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',]);}$capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);$capsuleComment = $capsuleCommentsMapper->fetchOneByUuid($comment_id);if(!$capsuleComment) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_COMMENT_NOT_FOUND',]);}if($capsuleComment->capsule_id != $capsule->id || $capsuleComment->user_id != $currentUser->id) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE_COMMENT',]);}$result =$capsuleCommentsMapper->delete($capsuleComment->id);if($result) {return new JsonModel(['success' => true,'data' => 'LABEL_CAPSULE_COMMENT_HAVE_BEEN_SUCCESSFULLY_DELETE']);} else {return new JsonModel(['success' => false,'data' => $capsuleCommentsMapper->getError()]);}}return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}public function addAction(){$request = $this->getRequest();if($request->isPost()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$capsule_id = $this->params()->fromRoute('capsule_id');$capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);$capsule = $capsuleMapper->fetchOneByUuid($capsule_id);if(!$capsule) {return new JsonModel(['success' => false,'data' => 'ERROR_CAPSULE_NOT_FOUND']);}$capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);$capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);if(! $capsuleUser) {return new JsonModel(['success' => false,'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',]);}$form = new CapsuleCommentForm();$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if($form->isValid()) {$dataPost = (array) $form->getData();$capsuleComment = new CompanyMicrolearningCapsuleComment();$capsuleComment->company_id = $capsule->company_id;$capsuleComment->topic_id = $capsule->topic_id;$capsuleComment->capsule_id = $capsule->id;$capsuleComment->user_id = $currentUser->id;$capsuleComment->comment = $dataPost['comment'];$capsuleComment->rating = $dataPost['rating'];$capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);$result = $capsuleCommentsMapper->insert($capsuleComment);if($result) {return new JsonModel(['success' => true,'data' => 'LABEL_CAPSULE_COMMENT_HAVE_BEEN_SUCCESSFULLY_ADDED']);} else {return new JsonModel(['success' => false,'data' => $capsuleCommentsMapper->getError()]);}} else {$messages = [];$form_messages = (array) $form->getMessages();foreach($form_messages as $fieldname => $field_messages){$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}