Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 15540 Rev 15585
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 23... Línea 24...
23
    /**
24
    /**
24
     *
25
     *
25
     * @var AdapterInterface
26
     * @var AdapterInterface
26
     */
27
     */
27
    private $adapter;
28
    private $adapter;
28
    
29
 
29
    
30
 
30
    /**
31
    /**
31
     *
32
     *
32
     * @var AbstractAdapter
33
     * @var AbstractAdapter
33
     */
34
     */
34
    private $cache;
35
    private $cache;
35
    
36
 
36
    /**
37
    /**
37
     *
38
     *
38
     * @var  LoggerInterface
39
     * @var  LoggerInterface
39
     */
40
     */
40
    private $logger;
41
    private $logger;
41
    
42
 
42
    /**
43
    /**
43
     *
44
     *
44
     * @var array
45
     * @var array
45
     */
46
     */
46
    private $config;
47
    private $config;
47
    
48
 
48
    /**
49
    /**
49
     *
50
     *
50
     * @param AdapterInterface $adapter
51
     * @param AdapterInterface $adapter
51
     * @param AbstractAdapter $cache
52
     * @param AbstractAdapter $cache
52
     * @param LoggerInterface $logger
53
     * @param LoggerInterface $logger
53
     * @param array $config
54
     * @param array $config
54
     */
55
     */
55
    public function __construct($adapter, $cache , $logger, $config)
56
    public function __construct($adapter, $cache, $logger, $config)
56
    {
57
    {
57
        $this->adapter      = $adapter;
58
        $this->adapter      = $adapter;
58
        $this->cache        = $cache;
59
        $this->cache        = $cache;
59
        $this->logger       = $logger;
60
        $this->logger       = $logger;
60
        $this->config       = $config;
61
        $this->config       = $config;
61
        
-
 
62
    }
62
    }
63
    
63
 
64
    public function indexAction()
64
    public function indexAction()
65
    {
65
    {
66
        $request = $this->getRequest();
66
        $request = $this->getRequest();
67
        
67
 
68
        $request = $this->getRequest();
68
        $request = $this->getRequest();
69
        if($request->isGet()) {
69
        if ($request->isGet()) {
70
            
70
 
71
            
71
 
72
            $headers  = $request->getHeaders();
72
            $headers  = $request->getHeaders();
73
            
73
 
74
            $isJson = false;
74
            $isJson = false;
75
            if($headers->has('Accept')) {
75
            if ($headers->has('Accept')) {
76
                $accept = $headers->get('Accept');
76
                $accept = $headers->get('Accept');
77
                
77
 
78
                $prioritized = $accept->getPrioritized();
78
                $prioritized = $accept->getPrioritized();
79
                
79
 
80
                foreach($prioritized as $key => $value) {
80
                foreach ($prioritized as $key => $value) {
81
                    $raw = trim($value->getRaw());
81
                    $raw = trim($value->getRaw());
82
                    
82
 
83
                    if(!$isJson) {
83
                    if (!$isJson) {
84
                        $isJson = strpos($raw, 'json');
84
                        $isJson = strpos($raw, 'json');
85
                    }
85
                    }
86
                    
-
 
87
                }
86
                }
88
            }
87
            }
89
            
88
 
90
            if($isJson) {
89
            if ($isJson) {
91
                $search = $this->params()->fromQuery('search');
90
                $search = $this->params()->fromQuery('search');
92
                $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
91
                $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
93
                
92
 
94
                $page               = intval($this->params()->fromQuery('start', 1), 10);
93
                $page               = intval($this->params()->fromQuery('start', 1), 10);
95
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
94
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
96
                $order =  $this->params()->fromQuery('order', []);
95
                $order =  $this->params()->fromQuery('order', []);
97
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
96
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
98
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
97
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
99
    
98
 
100
                $fields =  ['name'];
99
                $fields =  ['name'];
101
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
100
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
102
                
101
 
103
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
102
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
104
                    $order_direction = 'ASC';
103
                    $order_direction = 'ASC';
105
                }
104
                }
106
    
105
 
107
                $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
106
                $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
108
                $paginator = $aptitudeMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction);
107
                $paginator = $aptitudeMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction);
109
                
108
 
110
                $items = [];
109
                $items = [];
111
                $records = $paginator->getCurrentItems();
110
                $records = $paginator->getCurrentItems();
112
                foreach($records as $record)
111
                foreach ($records as $record) {
113
                {
-
 
114
                    $item = [
112
                    $item = [
115
                        'name' => $record->name,
113
                        'name' => $record->name,
116
                        'status' => $record->status,
114
                        'status' => $record->status,
117
                        'actions' => [
115
                        'actions' => [
118
                            'link_edit' => $this->url()->fromRoute('settings/aptitudes/edit', ['id' => $record->uuid ]),
116
                            'link_edit' => $this->url()->fromRoute('settings/aptitudes/edit', ['id' => $record->uuid]),
119
                            'link_delete' => $this->url()->fromRoute('settings/aptitudes/delete', ['id' => $record->uuid ])
117
                            'link_delete' => $this->url()->fromRoute('settings/aptitudes/delete', ['id' => $record->uuid])
120
                        ],  
118
                        ],
121
                    ];
119
                    ];
122
                    
120
 
123
                    array_push($items, $item);
121
                    array_push($items, $item);
124
                }
122
                }
125
                
123
 
126
                return new JsonModel([
124
                return new JsonModel([
127
                    'success' => true,
125
                    'success' => true,
128
                    'data' => [
126
                    'data' => [
129
                        'items' => $items,
127
                        'items' => $items,
130
                        'total' => $paginator->getTotalItemCount(),
128
                        'total' => $paginator->getTotalItemCount(),
131
                    ]
129
                    ]
132
                ]);
130
                ]);
133
                
-
 
134
            } else {
131
            } else {
135
                $form = new AptitudeForm();
132
                $form = new AptitudeForm();
136
                
133
 
137
                $this->layout()->setTemplate('layout/layout-backend');
134
                $this->layout()->setTemplate('layout/layout-backend');
138
                $viewModel = new ViewModel();
135
                $viewModel = new ViewModel();
139
                $viewModel->setTemplate('leaders-linked/aptitudes/index.phtml');
136
                $viewModel->setTemplate('leaders-linked/aptitudes/index.phtml');
140
                $viewModel->setVariable('form', $form);
137
                $viewModel->setVariable('form', $form);
141
                return $viewModel ;
138
                return $viewModel;
142
            } 
139
            }
143
        } else {
140
        } else {
144
            return new JsonModel([
141
            return new JsonModel([
145
                'success' => false,
142
                'success' => false,
146
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
143
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
147
            ]);;
144
            ]);;
148
        }
145
        }
149
    }
146
    }
150
    
147
 
151
    public function addAction()
148
    public function addAction()
152
    {
149
    {
153
        $currentUserPlugin = $this->plugin('currentUserPlugin');
150
        $currentUserPlugin = $this->plugin('currentUserPlugin');
154
        $currentUser = $currentUserPlugin->getUser();
151
        $currentUser = $currentUserPlugin->getUser();
155
        
152
 
156
        $request = $this->getRequest();
153
        $request = $this->getRequest();
157
        if($request->isPost()) {
154
        if ($request->isPost()) {
158
            $form = new  AptitudeForm();
155
            $form = new  AptitudeForm();
159
            $dataPost = $request->getPost()->toArray();
156
            $dataPost = $request->getPost()->toArray();
160
            
157
 
161
            $form->setData($dataPost);
158
            $form->setData($dataPost);
162
            
159
 
163
            if($form->isValid()) {
160
            if ($form->isValid()) {
164
                $dataPost = (array) $form->getData();
161
                $dataPost = (array) $form->getData();
165
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Aptitude::STATUS_INACTIVE;
162
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Aptitude::STATUS_INACTIVE;
Línea 166... Línea 163...
166
 
163
 
167
                $hydrator = new ObjectPropertyHydrator();
164
                $hydrator = new ObjectPropertyHydrator();
168
                $aptitude = new Aptitude();
165
                $aptitude = new Aptitude();
169
                $hydrator->hydrate($dataPost, $aptitude);
-
 
Línea -... Línea 166...
-
 
166
                $hydrator->hydrate($dataPost, $aptitude);
170
                
167
 
171
 
168
 
172
                
169
 
173
                $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
170
                $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
174
                $result = $aptitudeMapper->insert($aptitude);
171
                $result = $aptitudeMapper->insert($aptitude);
175
                
172
 
176
                if($result) {
173
                if ($result) {
177
                    $this->logger->info('Se agrego la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
174
                    $this->logger->info('Se agrego la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
178
                    
175
 
179
                    $data = [
176
                    $data = [
180
                        'success'   => true,
177
                        'success'   => true,
181
                        'data'   => 'LABEL_RECORD_ADDED'
178
                        'data'   => 'LABEL_RECORD_ADDED'
182
                    ];
179
                    ];
183
                } else {
180
                } else {
184
                    $data = [
181
                    $data = [
185
                        'success'   => false,
182
                        'success'   => false,
186
                        'data'      => $aptitudeMapper->getError()
-
 
187
                    ];
183
                        'data'      => $aptitudeMapper->getError()
188
                    
184
                    ];
189
                }
185
                }
190
                
-
 
191
                return new JsonModel($data);
186
 
192
                
187
                return new JsonModel($data);
193
            } else {
188
            } else {
194
                $messages = [];
189
                $messages = [];
195
                $form_messages = (array) $form->getMessages();
-
 
196
                foreach($form_messages  as $fieldname => $field_messages)
190
                $form_messages = (array) $form->getMessages();
197
                {
191
                foreach ($form_messages  as $fieldname => $field_messages) {
198
                    
192
 
199
                    $messages[$fieldname] = array_values($field_messages);
193
                    $messages[$fieldname] = array_values($field_messages);
200
                }
194
                }
201
                
195
 
202
                return new JsonModel([
196
                return new JsonModel([
203
                    'success'   => false,
197
                    'success'   => false,
204
                    'data'   => $messages
198
                    'data'   => $messages
205
                ]);
-
 
206
            }
199
                ]);
207
 
200
            }
208
        } else {
201
        } else {
209
            $data = [
202
            $data = [
210
                'success' => false,
203
                'success' => false,
211
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
204
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
212
            ];
205
            ];
213
            
206
 
214
            return new JsonModel($data);
207
            return new JsonModel($data);
215
        }
208
        }
216
        
209
 
217
        return new JsonModel($data);
210
        return new JsonModel($data);
218
    }
211
    }
219
    
212
 
220
    public function editAction()
213
    public function editAction()
221
    {
214
    {
222
        $currentUserPlugin = $this->plugin('currentUserPlugin');
215
        $currentUserPlugin = $this->plugin('currentUserPlugin');
223
        $currentUser = $currentUserPlugin->getUser();
216
        $currentUser = $currentUserPlugin->getUser();
224
        
217
 
Línea 225... Línea 218...
225
        $request = $this->getRequest();
218
        $request = $this->getRequest();
226
        $uuid = $this->params()->fromRoute('id');
219
        $uuid = $this->params()->fromRoute('id');
227
 
220
 
228
        
221
 
229
        if(!$uuid) {
222
        if (!$uuid) {
230
            $data = [
223
            $data = [
231
                'success'   => false,
224
                'success'   => false,
232
                'data'   => 'ERROR_INVALID_PARAMETER'
225
                'data'   => 'ERROR_INVALID_PARAMETER'
233
            ];
226
            ];
Línea 234... Línea 227...
234
            
227
 
235
            return new JsonModel($data);
228
            return new JsonModel($data);
236
        }
229
        }
237
 
230
 
238
        $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
231
        $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
239
        $aptitude = $aptitudeMapper->fetchOneByUuid($uuid);
232
        $aptitude = $aptitudeMapper->fetchOneByUuid($uuid);
240
        if(!$aptitude) {
233
        if (!$aptitude) {
241
            $data = [
234
            $data = [
242
                'success'   => false,
235
                'success'   => false,
243
                'data'   => 'ERROR_RECORD_NOT_FOUND'
236
                'data'   => 'ERROR_RECORD_NOT_FOUND'
244
            ];
237
            ];
245
            
238
 
246
            return new JsonModel($data);
239
            return new JsonModel($data);
247
        }
240
        }
248
        
241
 
249
        if($request->isPost()) {
242
        if ($request->isPost()) {
250
            $form = new  AptitudeForm();
243
            $form = new  AptitudeForm();
251
            $dataPost = $request->getPost()->toArray();
244
            $dataPost = $request->getPost()->toArray();
252
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Aptitude::STATUS_INACTIVE;
245
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Aptitude::STATUS_INACTIVE;
253
            
246
 
254
            $form->setData($dataPost);
247
            $form->setData($dataPost);
255
            
248
 
256
            if($form->isValid()) {
249
            if ($form->isValid()) {
257
                $dataPost = (array) $form->getData();
250
                $dataPost = (array) $form->getData();
258
                
251
 
259
                $hydrator = new ObjectPropertyHydrator();
252
                $hydrator = new ObjectPropertyHydrator();
260
                $hydrator->hydrate($dataPost, $aptitude);
253
                $hydrator->hydrate($dataPost, $aptitude);
261
                $result = $aptitudeMapper->update($aptitude);
254
                $result = $aptitudeMapper->update($aptitude);
262
                
255
 
263
                if($result) {
256
                if ($result) {
264
                    $this->logger->info('Se actualizo la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
257
                    $this->logger->info('Se actualizo la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
265
                    
258
 
266
                    $data = [
259
                    $data = [
267
                        'success' => true,
260
                        'success' => true,
268
                        'data' => 'LABEL_RECORD_UPDATED'
261
                        'data' => 'LABEL_RECORD_UPDATED'
269
                    ];
262
                    ];
270
                } else {
263
                } else {
271
                    $data = [
264
                    $data = [
272
                        'success'   => false,
265
                        'success'   => false,
273
                        'data'      => $aptitudeMapper->getError()
266
                        'data'      => $aptitudeMapper->getError()
274
                    ];
-
 
275
                }
267
                    ];
276
                
268
                }
277
                return new JsonModel($data);
269
 
278
                
270
                return new JsonModel($data);
279
            } else {
-
 
280
                $messages = [];
271
            } else {
281
                $form_messages = (array) $form->getMessages();
272
                $messages = [];
282
                foreach($form_messages  as $fieldname => $field_messages)
273
                $form_messages = (array) $form->getMessages();
283
                {
274
                foreach ($form_messages  as $fieldname => $field_messages) {
284
                    $messages[$fieldname] = array_values($field_messages);
275
                    $messages[$fieldname] = array_values($field_messages);
285
                }
276
                }
286
                
277
 
287
                return new JsonModel([
278
                return new JsonModel([
288
                    'success'   => false,
279
                    'success'   => false,
289
                    'data'   => $messages
280
                    'data'   => $messages
290
                ]);
281
                ]);
291
            }
282
            }
292
        } else if ($request->isGet()) {
283
        } else if ($request->isGet()) {
293
            $hydrator = new ObjectPropertyHydrator();
284
            $hydrator = new ObjectPropertyHydrator();
294
            
285
 
295
            $data = [
286
            $data = [
296
                'success' => true,
287
                'success' => true,
297
                'data' => $hydrator->extract($aptitude)
288
                'data' => $hydrator->extract($aptitude)
298
            ];
289
            ];
299
            
290
 
300
            return new JsonModel($data);
291
            return new JsonModel($data);
301
        } else {
292
        } else {
302
            $data = [
293
            $data = [
303
                'success' => false,
294
                'success' => false,
304
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
295
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
305
            ];
296
            ];
306
            
297
 
307
            return new JsonModel($data);
298
            return new JsonModel($data);
308
        }
299
        }
309
        
300
 
310
        return new JsonModel($data);
301
        return new JsonModel($data);
311
    }
302
    }
312
    
303
 
313
    public function deleteAction()
304
    public function deleteAction()
314
    {
305
    {
315
        $currentUserPlugin = $this->plugin('currentUserPlugin');
306
        $currentUserPlugin = $this->plugin('currentUserPlugin');
316
        $currentUser = $currentUserPlugin->getUser();
307
        $currentUser = $currentUserPlugin->getUser();
317
        
308
 
318
        $request = $this->getRequest();
309
        $request = $this->getRequest();
319
        $uuid = $this->params()->fromRoute('id');
310
        $uuid = $this->params()->fromRoute('id');
320
        
311
 
321
        if(!$uuid) {
312
        if (!$uuid) {
322
            $data = [
313
            $data = [
323
                'success'   => false,
314
                'success'   => false,
324
                'data'   => 'ERROR_INVALID_PARAMETER'
315
                'data'   => 'ERROR_INVALID_PARAMETER'
Línea 325... Línea 316...
325
            ];
316
            ];
326
            
317
 
327
            return new JsonModel($data);
318
            return new JsonModel($data);
328
        }
319
        }
329
 
320
 
330
        $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
321
        $aptitudeMapper = AptitudeMapper::getInstance($this->adapter);
331
        $aptitude = $aptitudeMapper->fetchOneByUuid($uuid);
322
        $aptitude = $aptitudeMapper->fetchOneByUuid($uuid);
332
        if(!$aptitude) {
323
        if (!$aptitude) {
333
            $data = [
324
            $data = [
334
                'success'   => false,
325
                'success'   => false,
335
                'data'   => 'ERROR_RECORD_NOT_FOUND'
326
                'data'   => 'ERROR_RECORD_NOT_FOUND'
336
            ];
327
            ];
337
            
328
 
338
            return new JsonModel($data);
329
            return new JsonModel($data);
339
        }
330
        }
340
        
331
 
341
        if($request->isPost()) {
332
        if ($request->isPost()) {
342
            $result = $aptitudeMapper->delete($aptitude);
333
            $result = $aptitudeMapper->delete($aptitude);
343
            if($result) {
334
            if ($result) {
344
                $this->logger->info('Se borro la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
335
                $this->logger->info('Se borro la aptitud ' . $aptitude->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
345
                
336
 
Línea 354... Línea 345...
354
                    'data'      => $aptitudeMapper->getError()
345
                    'data'      => $aptitudeMapper->getError()
355
                ];
346
                ];
Línea 356... Línea 347...
356
 
347
 
357
                return new JsonModel($data);
348
                return new JsonModel($data);
358
            }
-
 
359
 
349
            }
360
        } else {
350
        } else {
361
            $data = [
351
            $data = [
362
                'success' => false,
352
                'success' => false,
363
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
353
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
364
            ];
354
            ];
365
            
355
 
366
            return new JsonModel($data);
356
            return new JsonModel($data);
367
        }
357
        }
368
        
358
 
369
        return new JsonModel($data);
359
        return new JsonModel($data);
370
    }
360
    }