Rev 16769 | 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\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Library\Functions;use LeadersLinked\Mapper\AptitudeMapper;use LeadersLinked\Form\AptitudeForm;use LeadersLinked\Model\Aptitude;use LeadersLinked\Hydrator\ObjectPropertyHydrator;use LeadersLinked\Mapper\DiscoveryContactMapper;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Model\DiscoveryContactLog;use LeadersLinked\Mapper\DiscoveryContactLogMapper;use LeadersLinked\Mapper\UserMapper;use Laminas\Hydrator\Iterator\HydratingArrayIterator;use Laminas\Paginator\Adapter\DbSelect;use Laminas\Paginator\Paginator;class DiscoveryContactLogController extends AbstractActionController{/**** @var \Laminas\Db\Adapter\AdapterInterface*/private $adapter;/**** @var \LeadersLinked\Cache\CacheInterface*/private $cache;/**** @var \Laminas\Log\LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @var \Laminas\Mvc\I18n\Translator*/private $translator;/**** @param \Laminas\Db\Adapter\AdapterInterface $adapter* @param \LeadersLinked\Cache\CacheInterface $cache* @param \Laminas\Log\LoggerInterface LoggerInterface $logger* @param array $config* @param \Laminas\Mvc\I18n\Translator $translator*/public function __construct($adapter, $cache, $logger, $config, $translator){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;$this->translator = $translator;}public function indexAction(){$request = $this->getRequest();if ($request->isGet()) {$request = $this->getRequest();$uuid = $this->params()->fromRoute('id');if (!$uuid) {$data = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($data);}$discoveryContactMapper = DiscoveryContactMapper::getInstance($this->adapter);$discoveryContact = $discoveryContactMapper->fetchOneByUuid($uuid);if (!$discoveryContact) {$data = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($data);}$search = $this->params()->fromQuery('search');$search = empty($search['value']) ? '' : Functions::sanitizeFilterString($search['value']);$page = intval($this->params()->fromQuery('start', 1), 10);$records_x_page = intval($this->params()->fromQuery('length', 10), 10);$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->from(['tb1' => DiscoveryContactLogMapper::_TABLE]);$select->columns(['activity', 'details', 'added_on']);$select->join(['tb2' => UserMapper::_TABLE], 'tb1.user_id = tb2.id', ['first_name', 'last_name', 'email']);$select->where->equalTo('company_id', $discoveryContact->company_id);$select->where->equalTo('contact_id', $discoveryContact->id);if ($search) {$select->where->nest()->like('first_name', '%' . $search . '%')->or->like('last_name', '%' . $search . '%')->or->like('email', '%' . $search . '%')->or->like('activity', '%' . $search . '%')->unnest();}$select->order('added_on DESC');$page = intval($this->params()->fromQuery('start', 1), 10);$adapter = new DbSelect($select, $queryMapper->getSql());$paginator = new Paginator($adapter);$paginator->setItemCountPerPage($records_x_page);$paginator->setCurrentPageNumber($page);$items = [];$records = $paginator->getCurrentItems();foreach ($records as $record) {$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);$item = ['first_name' => $record['first_name'],'last_name' => $record['last_name'],'email' => $record['email'],'activity' => $record['activity'],'details' => $record['details'],'added_on' => $dt->format('d/m/Y H:i a'),];array_push($items, $item);}$total_items = $paginator->getTotalItemCount();if ($total_items <= 10) {$total_pages = 1;} else {$total_pages = ($total_items / 10);if (($total_pages * 10) < $total_items) {$total_pages++;}}return new JsonModel(['success' => true,'data' => ['current' => ['items' => $items,'page' => $paginator->getCurrentPageNumber()],'total' => ['items' => $total_items,'pages' => $total_pages],]]);} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);;}}}