Rev 1545 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(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'
]);
}
}