Rev 1302 | 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\Db\Adapter\AdapterInterface;
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Model\Page;
use LeadersLinked\Mapper\NotificationMapper;
use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Mapper\CompanyUserMapper;
use LeadersLinked\Model\Company;
use LeadersLinked\Mapper\PageMapper;
use LeadersLinked\Mapper\MessageMapper;
use LeadersLinked\Mapper\CompanyUserRoleMapper;
use LeadersLinked\Model\Role;
use LeadersLinked\Library\Functions;
use LeadersLinked\Mapper\PostMapper;
use LeadersLinked\Model\Post;
class HomeController 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()
{
$authService = new \Laminas\Authentication\AuthenticationService();
if($authService->hasIdentity()) {
return $this->redirect()->toRoute('dashboard');
} else {
return $this->redirect()->toRoute('signin');
}
}
public function dashboardAction()
{
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/dashboard.phtml');
return $viewModel ;
}
public function privacyPolicyAction()
{
$pageMapper = PageMapper::getInstance($this->adapter);
$page = $pageMapper->fetchOne(Page::PAGE_ID_PRIVACY_POLICY);
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/privacy-policy.phtml');
$viewModel->setVariable('page', $page);
return $viewModel ;
}
public function cookiesAction()
{
$pageMapper = PageMapper::getInstance($this->adapter);
$page = $pageMapper->fetchOne(Page::PAGE_ID_COOKIES);
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/cookies.phtml');
$viewModel->setVariable('page', $page);
return $viewModel ;
}
public function professionalismPolicyAction()
{
//
$pageMapper = PageMapper::getInstance($this->adapter);
$page = $pageMapper->fetchOne(Page::PAGE_ID_PROFESSIONALISM_POLICY);
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/professionalism-policy');
$viewModel->setVariable('page', $page);
return $viewModel ;
}
public function termsAndConditionsAction()
{
$pageMapper = PageMapper::getInstance($this->adapter);
$page = $pageMapper->fetchOne(Page::PAGE_ID_TERMS_AND_CONDITIONS);
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/terms-and-conditions.phtml');
$viewModel->setVariable('page', $page);
return $viewModel ;
}
public function checkSessionAction()
{
$request = $this->getRequest();
if($request->isGet()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
if(!$currentUserPlugin->hasIdentity()) {
$flashMessenger = $this->plugin('FlashMessenger');
$flashMessenger->addErrorMessage('ERROR_SESSION_NOT_FOUND');
$response = [
'success' => false,
'data' => [
'message' => 'ERROR_SESSION_NOT_FOUND',
'url' => $this->url()->fromRoute('signout')
]
];
return new JsonModel($response);
}
$currentUser = $currentUserPlugin->getUser();
if($currentUser->last_activity_on) {
$last_activity_on = strtotime($currentUser->last_activity_on);
} else {
$last_activity_on = strtotime('-1 day');
}
$expiry_time = $last_activity_on + $this->config['leaderslinked.security.last_activity_expired'];
if (time() > $expiry_time) {
//$flashMessenger = $this->plugin('FlashMessenger');
//$flashMessenger->addErrorMessage('ERROR_SESSION_EXPIRED');
$response = [
'success' => false,
'data' => [
'message' => 'ERROR_SESSION_EXPIRED',
'url' => $this->url()->fromRoute('signout')
]
];
} else {
$notificationMapper = NotificationMapper::getInstance($this->adapter);
$total_notifications = $notificationMapper->fetchUnreadNotificationsCount($currentUser->id);
$messageMapper = MessageMapper::getInstance($this->adapter);
$total_messages = $messageMapper->fetchCountUnreadMessagesReceiverId($currentUser->id);
$response = [
'success' => true,
'data' => [
'total_notifications' => $total_notifications,
'total_messages' => $total_messages
]
];
}
} else {
$response = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
}
return new JsonModel($response);
}
public function notificationsAction()
{
$request = $this->getRequest();
if($request->isGet()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$notificationMapper = NotificationMapper::getInstance($this->adapter);
$records = $notificationMapper->fetchAllsUnreadByUserId($currentUser->id);
$items = [];
foreach($records as $record)
{
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);
array_push($items,[
'message' => $record->message,
'link' => $record->url,
'time_elapsed' => Functions::timeElapsedString($dt->getTimestamp())
]);
}
$response = [
'success' => true,
'data' => $items
];
} else {
$response = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
}
return new JsonModel($response);
}
public function postAction()
{
$id = $this->params()->fromRoute('id');
$postMapper = PostMapper::getInstance($this->adapter);
$post = $postMapper->fetchOneByUuid($id);
if(!$post || $post->status != Post::STATUS_ACTIVE) {
$flashMessenger = $this->plugin('FlashMessenger');
if(!$id) {
$flashMessenger->addErrorMessage('ERROR_POST_NOT_AVAILABLE');
return $this->redirect()->toRoute('dashboard');
}
}
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/home/post.phtml');
$viewModel->setVariable('post', $post);
return $viewModel ;
}
}