Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16244 | Rev 16305 | 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()
    {
        $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');
                    }
                }
            }
            //Anderson
            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);
                $data = [
                    'total_by_day' => [],
                    'added_on' => [],
                    'total' => []
                ];

                foreach ($dailyProgress as $record) {
                    $users = $record['user_id'];
                    $added_on = date("d-m-Y", strtotime($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);
                }


                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;
            }
        }
    }
}