Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15397 | Rev 15664 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 15397 Rev 15663
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
 
2
declare(strict_types=1);
3
declare(strict_types=1);
Línea 3... Línea 4...
3
 
4
 
Línea 4... Línea 5...
4
namespace LeadersLinked\Controller;
5
namespace LeadersLinked\Controller;
Línea 31... Línea 32...
31
    /**
32
    /**
32
     *
33
     *
33
     * @var AdapterInterface
34
     * @var AdapterInterface
34
     */
35
     */
35
    private $adapter;
36
    private $adapter;
36
    
37
 
37
    
38
 
38
    /**
39
    /**
39
     *
40
     *
40
     * @var AbstractAdapter
41
     * @var AbstractAdapter
41
     */
42
     */
42
    private $cache;
43
    private $cache;
43
    
44
 
44
    /**
45
    /**
45
     *
46
     *
46
     * @var  LoggerInterface
47
     * @var  LoggerInterface
47
     */
48
     */
48
    private $logger;
49
    private $logger;
49
    
50
 
50
    /**
51
    /**
51
     *
52
     *
52
     * @var array
53
     * @var array
53
     */
54
     */
54
    private $config;
55
    private $config;
55
    
56
 
56
    /**
57
    /**
57
     *
58
     *
58
     * @param AdapterInterface $adapter
59
     * @param AdapterInterface $adapter
59
     * @param AbstractAdapter $cache
60
     * @param AbstractAdapter $cache
60
     * @param LoggerInterface $logger
61
     * @param LoggerInterface $logger
61
     * @param array $config
62
     * @param array $config
62
     */
63
     */
63
    public function __construct($adapter, $cache , $logger, $config)
64
    public function __construct($adapter, $cache, $logger, $config)
64
    {
65
    {
65
        $this->adapter      = $adapter;
66
        $this->adapter      = $adapter;
66
        $this->cache        = $cache;
67
        $this->cache        = $cache;
67
        $this->logger       = $logger;
68
        $this->logger       = $logger;
68
        $this->config       = $config;
69
        $this->config       = $config;
69
        
-
 
70
    }
70
    }
71
    
71
 
72
    public function indexAction()
72
    public function indexAction()
73
    {
73
    {
Línea 74... Línea 74...
74
 
74
 
75
        $request = $this->getRequest();
75
        $request = $this->getRequest();
76
        if($request->isGet()) {
76
        if ($request->isGet()) {
77
            
77
 
78
            $request = $this->getRequest();
78
            $request = $this->getRequest();
79
            $uuid = $this->params()->fromRoute('id');
79
            $uuid = $this->params()->fromRoute('id');
80
            
80
 
81
            
81
 
82
            if(!$uuid) {
82
            // if(!$uuid) {
83
                $data = [
83
            //     $data = [
84
                    'success'   => false,
84
            //         'success'   => false,
85
                    'data'   => 'ERROR_INVALID_PARAMETER'
85
            //         'data'   => 'ERROR_INVALID_PARAMETER'
86
                ];
86
            //     ];
87
                
87
 
88
                return new JsonModel($data);
88
            //     return new JsonModel($data);
89
            }
89
            // }
90
            
90
 
91
            $discoveryContactMapper = DiscoveryContactMapper::getInstance($this->adapter);
91
            $discoveryContactMapper = DiscoveryContactMapper::getInstance($this->adapter);
92
            $discoveryContact = $discoveryContactMapper->fetchOneByUuid($uuid);
92
            $discoveryContact = $discoveryContactMapper->fetchOneByUuid($uuid);
93
            if(!$discoveryContact) {
93
            if (!$discoveryContact) {
94
                $data = [
94
                $data = [
95
                    'success'   => false,
95
                    'success'   => false,
96
                    'data'   => 'ERROR_RECORD_NOT_FOUND'
96
                    'data'   => 'ERROR_RECORD_NOT_FOUND'
97
                ];
97
                ];
98
                
98
 
99
                return new JsonModel($data);
99
                return new JsonModel($data);
100
            }
100
            }
101
            
101
 
102
            $search = $this->params()->fromQuery('search');
102
            $search = $this->params()->fromQuery('search');
103
            $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
103
            $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
104
            
104
 
105
            $page               = intval($this->params()->fromQuery('start', 1), 10);
105
            $page               = intval($this->params()->fromQuery('start', 1), 10);
106
            $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
106
            $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
107
            
107
 
108
            
108
 
109
            $queryMapper = QueryMapper::getInstance($this->adapter);
109
            $queryMapper = QueryMapper::getInstance($this->adapter);
110
            $select = $queryMapper->getSql()->select();
110
            $select = $queryMapper->getSql()->select();
111
            $select->from([ 'tb1' => DiscoveryContactLogMapper::_TABLE ]);
111
            $select->from(['tb1' => DiscoveryContactLogMapper::_TABLE]);
112
            $select->columns(['activity', 'details', 'added_on']);
112
            $select->columns(['activity', 'details', 'added_on']);
113
            $select->join(['tb2' => UserMapper::_TABLE], 'tb1.user_id = tb2.id', ['first_name' , 'last_name', 'email']);
113
            $select->join(['tb2' => UserMapper::_TABLE], 'tb1.user_id = tb2.id', ['first_name', 'last_name', 'email']);
114
            $select->where->equalTo('company_id', $discoveryContact->company_id);
114
            $select->where->equalTo('company_id', $discoveryContact->company_id);
115
            $select->where->equalTo('contact_id', $discoveryContact->id);
115
            $select->where->equalTo('contact_id', $discoveryContact->id);
116
            if($search) {
116
            if ($search) {
117
                $select->where->nest()
117
                $select->where->nest()
118
                ->like('first_name', '%' . $search . '%')
118
                    ->like('first_name', '%' . $search . '%')
119
                ->or->like('last_name', '%' . $search . '%')
119
                    ->or->like('last_name', '%' . $search . '%')
120
                ->or->like('email', '%' . $search . '%')
120
                    ->or->like('email', '%' . $search . '%')
121
                ->or->like('activity', '%' . $search . '%')
121
                    ->or->like('activity', '%' . $search . '%')
122
                ->unnest();
122
                    ->unnest();
123
            }
123
            }
124
 
124
 
125
            $select->order('added_on DESC');
125
            $select->order('added_on DESC');
126
                
126
 
Línea 127... Línea 127...
127
            $page               = intval($this->params()->fromQuery('start', 1), 10);
127
            $page               = intval($this->params()->fromQuery('start', 1), 10);
128
 
128
 
129
            $adapter = new DbSelect($select, $queryMapper->getSql());
129
            $adapter = new DbSelect($select, $queryMapper->getSql());
130
            $paginator = new Paginator($adapter);
130
            $paginator = new Paginator($adapter);
131
            $paginator->setItemCountPerPage($records_x_page);
131
            $paginator->setItemCountPerPage($records_x_page);
Línea 132... Línea 132...
132
            $paginator->setCurrentPageNumber($page);
132
            $paginator->setCurrentPageNumber($page);
133
    
133
 
134
 
134
 
135
            $items = [];
-
 
136
            $records = $paginator->getCurrentItems();
135
            $items = [];
137
            foreach($records as $record)
136
            $records = $paginator->getCurrentItems();
138
            {
137
            foreach ($records as $record) {
139
                $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on'] );
138
                $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);
140
                
139
 
141
                $item = [
140
                $item = [
142
                    'first_name' => $record['first_name'],
141
                    'first_name' => $record['first_name'],
143
                    'last_name' => $record['last_name'],
142
                    'last_name' => $record['last_name'],
144
                    'email' => $record['email'],
143
                    'email' => $record['email'],
145
                    'activity' => $record['activity'],
144
                    'activity' => $record['activity'],
146
                    'details' => $record['details'],
145
                    'details' => $record['details'],
147
                    'added_on' => $dt->format('d/m/Y H:i a'),
146
                    'added_on' => $dt->format('d/m/Y H:i a'),
148
                ];
147
                ];
149
                
148
 
150
                array_push($items, $item);
149
                array_push($items, $item);
151
            }
150
            }
152
            
151
 
153
            $total_items = $paginator->getTotalItemCount();
152
            $total_items = $paginator->getTotalItemCount();
154
            if($total_items <= 10) {
153
            if ($total_items <= 10) {
155
                $total_pages = 1; 
154
                $total_pages = 1;
156
            } else {
155
            } else {
157
            
156
 
158
                $total_pages = (  $total_items / 10);
157
                $total_pages = ($total_items / 10);
159
                
158
 
160
                
159
 
161
                if(($total_pages * 10) <  $total_items) {
160
                if (($total_pages * 10) <  $total_items) {
162
                    $total_pages++;
161
                    $total_pages++;
163
                }
162
                }
164
            }
163
            }
165
            
164
 
166
                
165
 
167
            return new JsonModel([
166
            return new JsonModel([
168
                'success' => true,
167
                'success' => true,
169
                'data' => [
168
                'data' => [
170
                    'current' => [
169
                    'current' => [
171
                        'items' => $items,
170
                        'items' => $items,
172
                        'page' => $paginator->getCurrentPageNumber()
171
                        'page' => $paginator->getCurrentPageNumber()
173
                        
172
 
174
                    ], 
173
                    ],
175
                    'total' => [
174
                    'total' => [
176
                   
175
 
177
                        'items' => $total_items,
176
                        'items' => $total_items,
178
                        'pages' => $total_pages
177
                        'pages' => $total_pages
179
                    ],    
-
 
180
                ]
178
                    ],
181
            ]);
179
                ]
182
 
180
            ]);
183
        } else {
181
        } else {
184
            return new JsonModel([
182
            return new JsonModel([
185
                'success' => false,
183
                'success' => false,
186
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
184
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
187
            ]);;
-
 
188
        }
-
 
189
    }
185
            ]);;