Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16127 | Rev 16139 | 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 LeadersLinked\Model\User;
use Laminas\View\Model\JsonModel;
use Laminas\View\Model\ViewModel;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\DiscoveryContactMapper;
use LeadersLinked\Mapper\DiscoveryContactLogMapper;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Hydrator\ArraySerializableHydrator;
use Laminas\Db\ResultSet\HydratingResultSet;
use Laminas\Paginator\Adapter\DbSelect;
use Laminas\Paginator\Paginator;
use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Model\DiscoveryContactLog;
use LeadersLinked\Model\Push;

// Create an action controller.
class DiscoveryContactProgressController 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()
    {
        //Obtenemos los datos el usuario actualmente logueado
        $currentUserPlugin = $this->plugin('currentUserPlugin');
        $currentUser = $currentUserPlugin->getUser();
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
        $currentNetwork = $currentNetworkPlugin->getNetwork();
        $request = $this->getRequest();

        //if ($request->isGet()) {
        $headers  = $request->getHeaders();
        $isJson = false;

        if ($headers->has('Accept')) {
            $accept = $headers->get('Accept');

            $prioritized = $accept->getPrioritized();

            foreach ($prioritized as $key => $value) {
                $raw = trim($value->getRaw());

                if (!$isJson) {
                    $isJson = strpos($raw, 'json');
                }
            }
        }

        //if ($isJson) {
        $startDate = $this->params()->fromQuery('startDate');
        if (empty($startDate)) {
            $startDate = date('Y-m-d');
        }

        $endDate = $this->params()->fromQuery('endDate');
        if (empty($endDate)) {
            $endDate = date('Y-m-d');
        }

        $startDate = '2023-01-01';
        $endDate = '2023-05-16';

        $dtStartDate = \DateTime::createFromFormat('Y-n-d', $startDate);
        $dtEndDate = \DateTime::createFromFormat('Y-n-d', $endDate);

        if (!$dtStartDate || !$dtEndDate) {
            $startDate = date('Y-m-d');
            $endDate = date('Y-m-d');
        } else {

            if ($dtStartDate->getTimestamp() > $dtEndDate->getTimestamp()) {
                $startDate = date('Y-m-d');
                $endDate = date('Y-m-d');
            }
        }

        $contactProgressRecordMapper = DiscoveryContactLogMapper::getInstance($this->adapter);
        $dailyProgress = $contactProgressRecordMapper->fetchAllDataByDateRange($currentUser->id, $startDate, $endDate);


        $total = count($dailyProgress);
        $users = [];
        $added_on = [];
        $total = [];
        $data = [];
        $data = [
            'total_by_day' => [],
            'added_on' => [],
            'total' => []
        ];

        foreach ($dailyProgress as $record) {
            $users = $record['user_id'];
            $added_on = $record['added_on'];
            $total = count($dailyProgress);
            array_push($data['total_by_day'], $users);
            array_push($data['added_on'], $added_on);
            array_push($data['total'], $total);
        }

        // array_push($data['total_by_day'], $users);
        // array_push($data['added_on'], $added_on);
        // array_push($data['total'], $total);


        return new JsonModel([
            'success' => true,
            'data' => $data
        ]);
        // } else {
        //     $this->layout()->setTemplate('layout/layout-backend');
        //     $viewModel = new ViewModel();
        //     $viewModel->setTemplate('leaders-linked/discovery-contact-progress/index.phtml');
        //     return $viewModel;
        // }
        //}
    }
}