Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16768 | 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\Library\Functions;
use LeadersLinked\Mapper\LogMapper;
use LeadersLinked\Model\Log;
use LeadersLinked\Mapper\DeviceMapper;

class DeviceController 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->isPost())
        {
            $search = $this->params()->fromQuery('search', []);
            $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
            
            $page               = intval($this->params()->fromQuery('start', 1), 10);
            $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
            $order =  $this->params()->fromQuery('order', []);
            $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
            $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));

            $fields =  ['device_id', 'device', 'model', 'product', 'osversion', 'user', 'email'];
            $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'device_id';
            
            if(!in_array($order_direction, ['ASC', 'DESC'])) {
                $order_direction = 'ASC';
            }


            
            
            $deviceMapper = DeviceMapper::getInstance($this->adapter);
            $paginator = $deviceMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction);
            
            
            $items = [];
            $records = $paginator->getCurrentItems();
            foreach($records as $record)
            {
                
                $item = [
                    'user' => $record->user,
                    'email' => $record->email,
                    'device_id' => $record->device_id,
                    'device' => $record->device,
                    'model' => $record->model,
                    'product' => $record->product,
                    'osversion' => $record->osversion,
                    'updated_on' => $record->updated_on,
                    'push'  => $record->token ? true : false,
                    
                ];
                
                array_push($items, $item);
            }
            return new JsonModel([
                'success' => true,
                'data' => [
                    'items' => $items,
                    'total' => $paginator->getTotalItemCount(),
                ]
            ]);
            
            
        }
        else if($request->isGet()) {
            
            $this->layout()->setTemplate('layout/layout.phtml');
            $viewModel = new ViewModel();
            $viewModel->setTemplate('leaders-linked/devices/index.phtml');
            return $viewModel ;
      
        } else {
            return new JsonModel([
                'success' => false,
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
            ]);;
        }
    }
    
  
}