Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16626 | Rev 16629 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15670 anderson 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
15718 anderson 7
use LeadersLinked\Model\User;
15682 anderson 8
use Laminas\View\Model\JsonModel;
9
use Laminas\View\Model\ViewModel;
15718 anderson 10
use LeadersLinked\Mapper\UserMapper;
11
use LeadersLinked\Mapper\QueryMapper;
12
use LeadersLinked\Mapper\DiscoveryContactMapper;
15682 anderson 13
use LeadersLinked\Mapper\DiscoveryContactLogMapper;
15670 anderson 14
use Laminas\Mvc\Controller\AbstractActionController;
15727 anderson 15
use Laminas\Hydrator\ArraySerializableHydrator;
16
use Laminas\Db\ResultSet\HydratingResultSet;
17
use Laminas\Paginator\Adapter\DbSelect;
18
use Laminas\Paginator\Paginator;
15732 anderson 19
use LeadersLinked\Mapper\CompanyMapper;
15806 anderson 20
use LeadersLinked\Model\DiscoveryContactLog;
15970 anderson 21
use LeadersLinked\Model\Push;
15670 anderson 22
 
23
// Create an action controller.
24
class DiscoveryContactProgressController extends AbstractActionController
25
{
15682 anderson 26
    /**
27
     *
28
     * @var AdapterInterface
29
     */
30
    private $adapter;
31
 
32
 
33
    /**
34
     *
35
     * @var AbstractAdapter
36
     */
37
    private $cache;
38
 
39
    /**
40
     *
41
     * @var  LoggerInterface
42
     */
43
    private $logger;
44
 
45
    /**
46
     *
47
     * @var array
48
     */
49
    private $config;
50
 
51
    /**
52
     *
53
     * @param AdapterInterface $adapter
54
     * @param AbstractAdapter $cache
55
     * @param LoggerInterface $logger
56
     * @param array $config
57
     */
58
    public function __construct($adapter, $cache, $logger, $config)
59
    {
60
        $this->adapter      = $adapter;
61
        $this->cache        = $cache;
62
        $this->logger       = $logger;
63
        $this->config       = $config;
64
    }
65
 
15670 anderson 66
 
15678 anderson 67
 
15679 anderson 68
 
15788 anderson 69
    public function indexAction()
70
    {
15792 anderson 71
        $currentUserPlugin = $this->plugin('currentUserPlugin');
72
        $currentUser = $currentUserPlugin->getUser();
15793 anderson 73
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
74
        $currentNetwork = $currentNetworkPlugin->getNetwork();
15796 anderson 75
        $request = $this->getRequest();
15793 anderson 76
 
16238 anderson 77
 
16239 anderson 78
 
16305 anderson 79
        if ($request->isGet()) {
80
            $headers  = $request->getHeaders();
81
            $isJson = false;
15795 anderson 82
 
16305 anderson 83
            if ($headers->has('Accept')) {
84
                $accept = $headers->get('Accept');
15796 anderson 85
 
16305 anderson 86
                $prioritized = $accept->getPrioritized();
15796 anderson 87
 
16305 anderson 88
                foreach ($prioritized as $key => $value) {
89
                    $raw = trim($value->getRaw());
15796 anderson 90
 
16305 anderson 91
                    if (!$isJson) {
92
                        $isJson = strpos($raw, 'json');
93
                    }
15796 anderson 94
                }
95
            }
16305 anderson 96
            //Anderson
97
            if ($isJson) {
16241 anderson 98
 
16305 anderson 99
                $startDate = $this->params()->fromQuery('startDate');
100
                if (empty($startDate)) {
101
                    $startDate = date('Y-m-d');
102
                }
15798 anderson 103
 
16305 anderson 104
                $endDate = $this->params()->fromQuery('endDate');
105
                if (empty($endDate)) {
106
                    $endDate = date('Y-m-d');
107
                }
15800 anderson 108
 
16305 anderson 109
                $startDate = '2023-01-01';
16306 anderson 110
                $endDate = '2023-12-31';
15800 anderson 111
 
16305 anderson 112
                $dtStartDate = \DateTime::createFromFormat('Y-n-d', $startDate);
113
                $dtEndDate = \DateTime::createFromFormat('Y-n-d', $endDate);
15800 anderson 114
 
16305 anderson 115
                if (!$dtStartDate || !$dtEndDate) {
116
                    $startDate = date('Y-m-d');
117
                    $endDate = date('Y-m-d');
118
                } else {
16125 anderson 119
 
16305 anderson 120
                    if ($dtStartDate->getTimestamp() > $dtEndDate->getTimestamp()) {
121
                        $startDate = date('Y-m-d');
122
                        $endDate = date('Y-m-d');
123
                    }
124
                }
15806 anderson 125
 
16305 anderson 126
                $contactProgressRecordMapper = DiscoveryContactLogMapper::getInstance($this->adapter);
16551 anderson 127
                $dailyProgress = $contactProgressRecordMapper->fetchAllDataByDateRange($currentUser->id, $startDate, $endDate);
16562 anderson 128
                $dateByRage = $contactProgressRecordMapper->anderson($startDate, $endDate);
129
                $items = [];
16552 anderson 130
                $i = 0;
16558 anderson 131
 
16616 anderson 132
 
16562 anderson 133
                foreach ($dateByRage as $key => $value) {
16558 anderson 134
                    setlocale(LC_TIME, "es_ES");
135
                    setlocale(LC_TIME, 'es_ES.UTF-8');
16618 anderson 136
                    $userOne = UserMapper::getInstance($this->adapter);
137
                    $users = $userOne->fetchOne($value['user_id']);
16555 anderson 138
                    $added_on = strtoupper(date("d/F", strtotime($value['date'])));
16627 anderson 139
                    $items[$i]["month"] = $added_on;
16623 anderson 140
                    $items[$i]["users"] = $users->first_name . ' ' . $users->last_name;
16625 anderson 141
                    $items[$i]["total"] = $value['total'];
16626 anderson 142
                    $items[$i]["users_id"] = $users->id;
16552 anderson 143
                    $i++;
144
                }
15806 anderson 145
 
16624 anderson 146
                var_dump($items);
147
                die();
15970 anderson 148
 
16616 anderson 149
 
16559 anderson 150
                //var_dump($ander);
16552 anderson 151
 
16559 anderson 152
                //die();
16551 anderson 153
 
16305 anderson 154
                $total = count($dailyProgress);
16616 anderson 155
 
16538 anderson 156
                $data = [
157
                    'total_by_day' => [],
158
                    'added_on' => [],
159
                    'total' => [],
160
                    'first_name' => [],
161
                    'last_name' => [],
162
                    'email' => []
163
                ];
16562 anderson 164
                //$items = [];
16125 anderson 165
 
16551 anderson 166
 
16624 anderson 167
 
16305 anderson 168
                foreach ($dailyProgress as $record) {
169
                    $users = $record['user_id'];
170
                    $added_on = date("d-m-Y", strtotime($record['added_on']));
171
                    $total = count($dailyProgress);
16330 anderson 172
                    $first_name = $record['first_name'];
173
                    $last_name = $record['last_name'];
174
                    $email = $record['email'];
16538 anderson 175
                    array_push($data['total_by_day'], $users);
176
                    array_push($data['added_on'], $added_on);
177
                    array_push($data['total'], $total);
178
                    array_push($data['first_name'], $first_name);
179
                    array_push($data['last_name'], $last_name);
180
                    array_push($data['email'], $email);
16562 anderson 181
                    // $item = [
182
                    //     'total_by_day' => $users,
183
                    //     'added_on' => $added_on,
184
                    //     'total' => $total,
185
                    //     'first_name' =>  $first_name,
186
                    //     'last_name' => $last_name,
187
                    //     'email' => $email,
188
                    // ];
16536 anderson 189
 
16562 anderson 190
                    // array_push($items, $item);
16305 anderson 191
                }
15842 anderson 192
 
16143 anderson 193
 
16305 anderson 194
                return new JsonModel([
195
                    'success' => true,
16559 anderson 196
                    'data' => $data, //grafica
16562 anderson 197
                    'items' => $items //tabla
16305 anderson 198
                ]);
199
            } else {
200
                $this->layout()->setTemplate('layout/layout-backend');
201
                $viewModel = new ViewModel();
202
                $viewModel->setTemplate('leaders-linked/discovery-contact-progress/index.phtml');
203
                return $viewModel;
204
            }
205
        }
15670 anderson 206
    }
207
}