Rev 15664 | 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\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 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()) {$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) ? '' : filter_var($search, FILTER_SANITIZE_STRING);$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']);;}}}