Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 17018 Rev 17042
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 \Laminas\Db\Adapter\AdapterInterface
26
     * @var \Laminas\Db\Adapter\AdapterInterface
26
     */
27
     */
27
    private $adapter;
28
    private $adapter;
28
    
29
 
29
    /**
30
    /**
30
     *
31
     *
31
     * @var \LeadersLinked\Cache\CacheInterface
32
     * @var \LeadersLinked\Cache\CacheInterface
32
     */
33
     */
33
    private $cache;
34
    private $cache;
34
    
35
 
35
    
36
 
36
    /**
37
    /**
37
     *
38
     *
38
     * @var \Laminas\Log\LoggerInterface
39
     * @var \Laminas\Log\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
     *
51
     *
51
     * @var \Laminas\Mvc\I18n\Translator
52
     * @var \Laminas\Mvc\I18n\Translator
52
     */
53
     */
53
    private $translator;
54
    private $translator;
54
    
55
 
55
    
56
 
56
    /**
57
    /**
57
     *
58
     *
58
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
59
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
59
     * @param \LeadersLinked\Cache\CacheInterface $cache
60
     * @param \LeadersLinked\Cache\CacheInterface $cache
60
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
61
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
Línea 67... Línea 68...
67
        $this->cache        = $cache;
68
        $this->cache        = $cache;
68
        $this->logger       = $logger;
69
        $this->logger       = $logger;
69
        $this->config       = $config;
70
        $this->config       = $config;
70
        $this->translator   = $translator;
71
        $this->translator   = $translator;
71
    }
72
    }
72
    
73
 
73
    public function indexAction()
74
    public function indexAction()
74
    {
75
    {
75
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
76
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
76
        $currentNetwork = $currentNetworkPlugin->getNetwork();
77
        $currentNetwork = $currentNetworkPlugin->getNetwork();
77
        
78
 
78
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
79
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
79
        $currentUser        = $currentUserPlugin->getUser();
80
        $currentUser        = $currentUserPlugin->getUser();
80
        $currentCompany     = $currentUserPlugin->getCompany();
81
        $currentCompany     = $currentUserPlugin->getCompany();
81
        
82
 
82
        $request = $this->getRequest();
83
        $request = $this->getRequest();
83
        if($request->isGet()) {
84
        if ($request->isGet()) {
84
            
85
 
85
            
86
 
86
            $headers  = $request->getHeaders();
87
            $headers  = $request->getHeaders();
87
            
88
 
88
            $isJson = false;
89
            $isJson = false;
89
            if($headers->has('Accept')) {
90
            if ($headers->has('Accept')) {
90
                $accept = $headers->get('Accept');
91
                $accept = $headers->get('Accept');
91
                
92
 
92
                $prioritized = $accept->getPrioritized();
93
                $prioritized = $accept->getPrioritized();
93
                
94
 
94
                foreach($prioritized as $key => $value) {
95
                foreach ($prioritized as $key => $value) {
95
                    $raw = trim($value->getRaw());
96
                    $raw = trim($value->getRaw());
96
                    
97
 
97
                    if(!$isJson) {
98
                    if (!$isJson) {
98
                        $isJson = strpos($raw, 'json');
99
                        $isJson = strpos($raw, 'json');
99
                    }
100
                    }
100
                    
-
 
101
                }
101
                }
102
            }
102
            }
103
            
103
 
104
            if($isJson) {
104
            if ($isJson) {
105
                $search = $this->params()->fromQuery('search', []);
105
                $search = $this->params()->fromQuery('search', []);
106
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
106
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
107
                
107
 
108
                $page               = intval($this->params()->fromQuery('start', 1), 10);
108
                $page               = intval($this->params()->fromQuery('start', 1), 10);
109
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
109
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
110
                $order =  $this->params()->fromQuery('order', []);
110
                $order =  $this->params()->fromQuery('order', []);
111
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
111
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
112
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
112
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
113
                
113
 
114
                $fields =  ['name'];
114
                $fields =  ['name'];
115
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
115
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
116
                
116
 
117
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
117
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
118
                    $order_direction = 'ASC';
118
                    $order_direction = 'ASC';
119
                }
119
                }
120
                
120
 
121
                $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
121
                $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
122
                $paginator = $dailyPulseEmojiMapper->fetchAllDataTable($currentCompany->id, $search,  $page, $records_x_page, $order_field, $order_direction);
122
                $paginator = $dailyPulseEmojiMapper->fetchAllDataTable($currentCompany->id, $search,  $page, $records_x_page, $order_field, $order_direction);
Línea 123... Línea 123...
123
 
123
 
124
                $storage = Storage::getInstance($this->config, $this->adapter);
124
                $storage = Storage::getInstance($this->config, $this->adapter);
125
                $path = $storage->getPathDailyPulse();
125
                $path = $storage->getPathDailyPulse();
126
                
126
 
127
                $items = [];
127
                $items = [];
128
                $records = $paginator->getCurrentItems();
128
                $records = $paginator->getCurrentItems();
129
                foreach($records as $record)
-
 
130
                {
129
                foreach ($records as $record) {
131
                    switch($record->type)
-
 
132
                    {
130
                    switch ($record->type) {
133
                        case DailyPulseEmoji::TYPE_HOW_ARE_YOU_FEEL : 
131
                        case DailyPulseEmoji::TYPE_HOW_ARE_YOU_FEEL:
134
                            $type = 'LABEL_HOW_ARE_YOU_FEEL';
132
                            $type = 'LABEL_HOW_ARE_YOU_FEEL';
135
                            break;
133
                            break;
136
                     
134
 
137
                        case DailyPulseEmoji::TYPE_CLIMATE_ON_YOUR_ORGANIZATION :
135
                        case DailyPulseEmoji::TYPE_CLIMATE_ON_YOUR_ORGANIZATION:
138
                            $type = 'LABEL_CLIMATE_ON_YOUR_ORGANIZATION';
136
                            $type = 'LABEL_CLIMATE_ON_YOUR_ORGANIZATION';
139
                            break;
137
                            break;
140
                            
138
 
141
                        default : 
139
                        default:
142
                            $type = 'LABEL_UNKNOWN';
140
                            $type = 'LABEL_UNKNOWN';
143
                            break;
-
 
144
                            
141
                            break;
145
                    }
142
                    }
146
                    
143
 
147
                    switch($record->status) 
-
 
148
                    {
144
                    switch ($record->status) {
149
                        case DailyPulseEmoji::STATUS_ACTIVE :
145
                        case DailyPulseEmoji::STATUS_ACTIVE:
150
                            $status = 'LABEL_ACTIVE';
146
                            $status = 'LABEL_ACTIVE';
151
                            break;
147
                            break;
152
                            
148
 
153
                        case DailyPulseEmoji::STATUS_INACTIVE :
149
                        case DailyPulseEmoji::STATUS_INACTIVE:
154
                            $status = 'LABEL_INACTIVE';
150
                            $status = 'LABEL_INACTIVE';
155
                            break;
151
                            break;
156
                            
152
 
157
                        default :
153
                        default:
158
                            $status = 'LABEL_UNKNOWN';
154
                            $status = 'LABEL_UNKNOWN';
159
                            break;
155
                            break;
160
                    }
156
                    }
161
                    
157
 
162
                    
158
 
163
                    
159
 
164
                    $item = [
160
                    $item = [
165
                        'name' => $record->name,
161
                        'name' => $record->name,
166
                        'details' => [
162
                        'details' => [
167
                            'type' => $type,
163
                            'type' => $type,
168
                            'status' => $status,
164
                            'status' => $status,
169
                            'order' => $record->order,
165
                            'order' => $record->order,
170
                            'points' => $record->points,
166
                            'points' => $record->points,
171
                        ],    
167
                        ],
172
                        'image' => $storage->getGenericImage($path, $record->uuid, $record->image),
168
                        'image' => $storage->getGenericImage($path, $record->uuid, $record->image),
173
                        'actions' => [
169
                        'actions' => [
174
                            'link_edit' => $this->url()->fromRoute('daily-pulse/emojis/edit', ['id' => $record->uuid ]),
170
                            'link_edit' => $this->url()->fromRoute('daily-pulse/emojis/edit', ['id' => $record->uuid]),
175
                            'link_delete' => $this->url()->fromRoute('daily-pulse/emojis/delete', ['id' => $record->uuid ]),
171
                            'link_delete' => $this->url()->fromRoute('daily-pulse/emojis/delete', ['id' => $record->uuid]),
176
                        ]
172
                        ]
177
                    ];
173
                    ];
178
                    
174
 
179
                    array_push($items, $item);
175
                    array_push($items, $item);
180
                }
176
                }
181
                
177
 
182
                return new JsonModel([
178
                return new JsonModel([
183
                    'success' => true,
179
                    'success' => true,
184
                    'data' => [
180
                    'data' => [
185
                        'items' => $items,
181
                        'items' => $items,
186
                        'total' => $paginator->getTotalItemCount(),
182
                        'total' => $paginator->getTotalItemCount(),
187
                    ]
183
                    ]
188
                ]);
184
                ]);
189
            } else  {
185
            } else {
190
                
186
 
191
                $target_size = $this->config['leaderslinked.image_sizes.emoji'];
187
                $target_size = $this->config['leaderslinked.image_sizes.emoji'];
192
                
188
 
193
                $formAdd = new DailyPulseAddEmojiForm();
189
                $formAdd = new DailyPulseAddEmojiForm();
194
                $formEdit = new DailyPulseEditEmojiForm();
190
                $formEdit = new DailyPulseEditEmojiForm();
195
                
191
 
196
                $this->layout()->setTemplate('layout/layout-backend');
192
                $this->layout()->setTemplate('layout/layout-backend');
197
                $viewModel = new ViewModel();
193
                $viewModel = new ViewModel();
198
                $viewModel->setTemplate('leaders-linked/daily-pulse/emojis');
194
                $viewModel->setTemplate('leaders-linked/daily-pulse/emojis');
199
                $viewModel->setVariables([
195
                $viewModel->setVariables([
200
                    'formAdd' => $formAdd,
196
                    'formAdd' => $formAdd,
201
                    'formEdit' => $formEdit,
197
                    'formEdit' => $formEdit,
202
                    'targetSize' => $target_size,
198
                    'targetSize' => $target_size,
203
                ]);
199
                ]);
204
                return $viewModel ;
200
                return $viewModel;
205
            }
201
            }
206
        } else {
202
        } else {
207
            return new JsonModel([
203
            return new JsonModel([
208
                'success' => false,
204
                'success' => false,
209
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
205
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
210
            ]);;
206
            ]);;
211
        }
207
        }
212
    }
208
    }
213
    
209
 
214
    
210
 
215
    
211
 
216
    public function addAction()
212
    public function addAction()
217
    {
213
    {
218
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
214
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
219
        $currentUser        = $currentUserPlugin->getUser();
215
        $currentUser        = $currentUserPlugin->getUser();
220
        $currentCompany     = $currentUserPlugin->getCompany();
216
        $currentCompany     = $currentUserPlugin->getCompany();
221
        
217
 
Línea 222... Línea 218...
222
        $request            = $this->getRequest();
218
        $request            = $this->getRequest();
223
 
219
 
224
        
220
 
225
        if($request->isPost()) {
221
        if ($request->isPost()) {
226
            $form = new  DailyPulseAddEmojiForm();
222
            $form = new  DailyPulseAddEmojiForm();
227
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
223
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
228
            $dataPost['status'] = empty($dataPost['status'])  ? DailyPulseEmoji::STATUS_INACTIVE : $dataPost['status'];
224
            $dataPost['status'] = empty($dataPost['status'])  ? DailyPulseEmoji::STATUS_INACTIVE : $dataPost['status'];
229
            
225
 
230
            
226
 
231
            $form->setData($dataPost);
227
            $form->setData($dataPost);
232
            
228
 
233
            if($form->isValid()) {
229
            if ($form->isValid()) {
234
                $dataPost = (array) $form->getData();
230
                $dataPost = (array) $form->getData();
235
          
231
 
236
                $dailyPulseEmoji = new DailyPulseEmoji();
232
                $dailyPulseEmoji = new DailyPulseEmoji();
237
                $dailyPulseEmoji->company_id = $currentCompany->id;
233
                $dailyPulseEmoji->company_id = $currentCompany->id;
238
                $dailyPulseEmoji->name = $dataPost['name'];
234
                $dailyPulseEmoji->name = $dataPost['name'];
239
                $dailyPulseEmoji->order = $dataPost['order'];
235
                $dailyPulseEmoji->order = $dataPost['order'];
240
                $dailyPulseEmoji->points = $dataPost['points'];
236
                $dailyPulseEmoji->points = $dataPost['points'];
241
                $dailyPulseEmoji->status = $dataPost['status'];
237
                $dailyPulseEmoji->status = $dataPost['status'];
242
                $dailyPulseEmoji->type = $dataPost['type'];
238
                $dailyPulseEmoji->type = $dataPost['type'];
243
                $dailyPulseEmoji->image = '';
239
                $dailyPulseEmoji->image = '';
244
                
240
 
245
                $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
241
                $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
246
                if($dailyPulseEmojiMapper->insert($dailyPulseEmoji)) {
242
                if ($dailyPulseEmojiMapper->insert($dailyPulseEmoji)) {
247
                    
243
 
248
                    $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOne($dailyPulseEmoji->id);
244
                    $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOne($dailyPulseEmoji->id);
249
                    
245
 
250
                    $target_size = $this->config['leaderslinked.image_sizes.emoji'];
246
                    $target_size = $this->config['leaderslinked.image_sizes.emoji'];
251
                    list($target_width, $target_height) = explode('x', $target_size);
247
                    list($target_width, $target_height) = explode('x', $target_size);
252
                    
248
 
253
                    
249
 
254
                    
250
 
255
                    $image = Image::getInstance($this->config);
251
                    $image = Image::getInstance($this->config);
256
                    $storage = Storage::getInstance($this->config, $this->adapter);
252
                    $storage = Storage::getInstance($this->config, $this->adapter);
257
                    $target_path = $storage->getPathDailyPulse();
253
                    $target_path = $storage->getPathDailyPulse();
Línea 258... Línea 254...
258
                    
254
 
259
                    $files = $this->getRequest()->getFiles()->toArray();
255
                    $files = $this->getRequest()->getFiles()->toArray();
260
 
256
 
261
                    
257
 
262
                    if(isset($files['image']) && empty($files['image']['error'])) {
258
                    if (isset($files['image']) && empty($files['image']['error'])) {
263
                        $tmp_filename  = $files['image']['tmp_name'];
259
                        $tmp_filename  = $files['image']['tmp_name'];
264
                        $filename      = explode('.',  $files['image']['name']); 
260
                        $filename      = explode('.',  $files['image']['name']);
265
                        $filename       = Functions::normalizeStringFilename(uniqid() . '-' . $filename[0].'.png');
261
                        $filename       = Functions::normalizeStringFilename(uniqid() . '-' . $filename[0] . '.png');
266
                     
262
 
267
                        $crop_to_dimensions = true;
263
                        $crop_to_dimensions = true;
268
                        $unlink_source = true;
264
                        $unlink_source = true;
269
                        
265
 
270
                        if($image->uploadProcessChangeSize($tmp_filename, $target_path, $dailyPulseEmoji->uuid, $filename, $target_width, $target_height, $crop_to_dimensions, $unlink_source)) {
266
                        if ($image->uploadProcessChangeSize($tmp_filename, $target_path, $dailyPulseEmoji->uuid, $filename, $target_width, $target_height, $crop_to_dimensions, $unlink_source)) {
271
                            $dailyPulseEmoji->image = $filename;
267
                            $dailyPulseEmoji->image = $filename;
272
                            $dailyPulseEmojiMapper->update($dailyPulseEmoji);
268
                            $dailyPulseEmojiMapper->update($dailyPulseEmoji);
273
                        }
269
                        }
274
                    }
270
                    }
275
                    
271
 
276
                    
272
 
277
                    $this->logger->info('Se agrego el emoji ' . $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
273
                    $this->logger->info('Se agrego el emoji ' . $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
278
                    
274
 
279
                    $data = [
275
                    $data = [
280
                        'success'   => true,
276
                        'success'   => true,
281
                        'data'   => 'LABEL_RECORD_ADDED'
277
                        'data'   => 'LABEL_RECORD_ADDED'
282
                    ];
278
                    ];
283
                } else {
279
                } else {
284
                    $data = [
280
                    $data = [
285
                        'success'   => false,
-
 
286
                        'data'      => $dailyPulseEmojiMapper->getError()
281
                        'success'   => false,
287
                    ];
282
                        'data'      => $dailyPulseEmojiMapper->getError()
288
                    
283
                    ];
289
                }
-
 
290
                
284
                }
291
                return new JsonModel($data);
285
 
292
                
286
                return new JsonModel($data);
293
            } else {
287
            } else {
294
                $messages = [];
-
 
295
                $form_messages = (array) $form->getMessages();
288
                $messages = [];
296
                foreach($form_messages  as $fieldname => $field_messages)
289
                $form_messages = (array) $form->getMessages();
297
                {
290
                foreach ($form_messages  as $fieldname => $field_messages) {
298
                    
291
 
299
                    $messages[$fieldname] = array_values($field_messages);
292
                    $messages[$fieldname] = array_values($field_messages);
300
                }
293
                }
301
                
294
 
302
                return new JsonModel([
295
                return new JsonModel([
303
                    'success'   => false,
296
                    'success'   => false,
304
                    'data'   => $messages
-
 
305
                ]);
297
                    'data'   => $messages
306
            }
298
                ]);
307
            
299
            }
308
        } else {
300
        } else {
309
            $data = [
301
            $data = [
310
                'success' => false,
302
                'success' => false,
311
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
303
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
312
            ];
304
            ];
313
            
305
 
314
            return new JsonModel($data);
306
            return new JsonModel($data);
315
        }
307
        }
316
        
308
 
317
        return new JsonModel($data);
309
        return new JsonModel($data);
318
    }
310
    }
319
    
311
 
320
    /**
312
    /**
321
     *
313
     *
322
     * Borrar un perfil excepto el público
314
     * Borrar un perfil excepto el público
323
     * @return \Laminas\View\Model\JsonModel
315
     * @return \Laminas\View\Model\JsonModel
324
     */
316
     */
325
    public function deleteAction()
317
    public function deleteAction()
326
    {
318
    {
327
        $currentUserPlugin = $this->plugin('currentUserPlugin');
319
        $currentUserPlugin = $this->plugin('currentUserPlugin');
328
        $currentUser    = $currentUserPlugin->getUser();
320
        $currentUser    = $currentUserPlugin->getUser();
329
        $currentCompany = $currentUserPlugin->getCompany();
321
        $currentCompany = $currentUserPlugin->getCompany();
Línea 330... Línea 322...
330
        
322
 
Línea 331... Línea 323...
331
        $request        = $this->getRequest();
323
        $request        = $this->getRequest();
332
        $id         = $this->params()->fromRoute('id');
324
        $id         = $this->params()->fromRoute('id');
333
 
325
 
334
        
326
 
335
 
327
 
336
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
328
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
337
        $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOneByUuid($id);
329
        $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOneByUuid($id);
338
        if(!$dailyPulseEmoji) {
330
        if (!$dailyPulseEmoji) {
339
            return new JsonModel([
331
            return new JsonModel([
340
                'success'   => false,
332
                'success'   => false,
341
                'data'   => 'ERROR_RECORD_NOT_FOUND'
333
                'data'   => 'ERROR_RECORD_NOT_FOUND'
342
            ]);
334
            ]);
343
        }
335
        }
344
        
336
 
345
        if($dailyPulseEmoji->company_id != $currentCompany->id) {
337
        if ($dailyPulseEmoji->company_id != $currentCompany->id) {
346
            return new JsonModel([
338
            return new JsonModel([
347
                'success'   => false,
339
                'success'   => false,
348
                'data'   => 'ERROR_UNAUTHORIZED'
340
                'data'   => 'ERROR_UNAUTHORIZED'
349
            ]);
341
            ]);
350
        }
342
        }
351
        
343
 
352
        if($request->isPost()) {
344
        if ($request->isPost()) {
353
            
345
 
354
            $result =  $dailyPulseEmojiMapper->delete($dailyPulseEmoji);
346
            $result =  $dailyPulseEmojiMapper->delete($dailyPulseEmoji);
355
            if($result) {
347
            if ($result) {
356
                $this->logger->info('Se borro el emoji : ' .  $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
348
                $this->logger->info('Se borro el emoji : ' .  $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
357
               
349
 
358
                if($dailyPulseEmoji->image) {
350
                if ($dailyPulseEmoji->image) {
359
                
351
 
360
                    $storage = Storage::getInstance($this->config, $this->adapter);
352
                    $storage = Storage::getInstance($this->config, $this->adapter);
361
                    $target_path = $storage->getPathDailyPulse();
353
                    $target_path = $storage->getPathDailyPulse();
362
                    $storage->deleteFile($target_path, $dailyPulseEmoji->uuid, $dailyPulseEmoji->image);
354
                    $storage->deleteFile($target_path, $dailyPulseEmoji->uuid, $dailyPulseEmoji->image);
363
                }
355
                }
364
                
356
 
365
                $data = [
357
                $data = [
366
                    'success' => true,
358
                    'success' => true,
367
                    'data' => 'LABEL_RECORD_DELETED'
359
                    'data' => 'LABEL_RECORD_DELETED'
368
                ];
360
                ];
369
            } else {
361
            } else {
370
                
362
 
371
                $data = [
363
                $data = [
372
                    'success'   => false,
364
                    'success'   => false,
373
                    'data'      => $dailyPulseEmojiMapper->getError()
-
 
374
                ];
365
                    'data'      => $dailyPulseEmojiMapper->getError()
375
                
366
                ];
376
                return new JsonModel($data);
367
 
377
            }
368
                return new JsonModel($data);
378
            
369
            }
379
        } else {
370
        } else {
380
            $data = [
371
            $data = [
381
                'success' => false,
372
                'success' => false,
382
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
373
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
383
            ];
374
            ];
384
            
375
 
385
            return new JsonModel($data);
376
            return new JsonModel($data);
386
        }
377
        }
387
        
378
 
388
        return new JsonModel($data);
379
        return new JsonModel($data);
389
    }
380
    }
390
    
381
 
391
    
382
 
392
    public function editAction()
383
    public function editAction()
393
    {
384
    {
394
        $currentUserPlugin = $this->plugin('currentUserPlugin');
385
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 395... Línea 386...
395
        $currentUser    = $currentUserPlugin->getUser();
386
        $currentUser    = $currentUserPlugin->getUser();
396
        $currentCompany = $currentUserPlugin->getCompany();
387
        $currentCompany = $currentUserPlugin->getCompany();
397
        
388
 
398
        $request    = $this->getRequest();
389
        $request    = $this->getRequest();
399
        $id    = $this->params()->fromRoute('id');
390
        $id    = $this->params()->fromRoute('id');
400
 
391
 
401
 
392
 
402
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
393
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
403
        $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOneByUuid($id);
394
        $dailyPulseEmoji = $dailyPulseEmojiMapper->fetchOneByUuid($id);
404
        if(!$dailyPulseEmoji) {
395
        if (!$dailyPulseEmoji) {
405
            return new JsonModel([
396
            return new JsonModel([
406
                'success'   => false,
397
                'success'   => false,
407
                'data'   => 'ERROR_RECORD_NOT_FOUND'
398
                'data'   => 'ERROR_RECORD_NOT_FOUND'
408
            ]);
399
            ]);
409
        }
400
        }
410
        
401
 
411
        
402
 
412
        if($dailyPulseEmoji->company_id != $currentCompany->id) {
403
        if ($dailyPulseEmoji->company_id != $currentCompany->id) {
413
            return new JsonModel([
404
            return new JsonModel([
414
                'success'   => false,
405
                'success'   => false,
415
                'data'   => 'ERROR_UNAUTHORIZED'
406
                'data'   => 'ERROR_UNAUTHORIZED'
416
            ]);
407
            ]);
417
        }
408
        }
418
        
409
 
419
        if($request->isGet()) {
410
        if ($request->isGet()) {
420
            $storage = Storage::getInstance($this->config, $this->adapter);
411
            $storage = Storage::getInstance($this->config, $this->adapter);
421
            $path = $storage->getPathDailyPulse();
412
            $path = $storage->getPathDailyPulse();
Línea 430... Línea 421...
430
                    'type' => $dailyPulseEmoji->type,
421
                    'type' => $dailyPulseEmoji->type,
431
                    'points' => $dailyPulseEmoji->points,
422
                    'points' => $dailyPulseEmoji->points,
432
                    'image' => $dailyPulseEmoji->image ? $storage->getGenericImage($path,  $dailyPulseEmoji->uuid, $dailyPulseEmoji->image) : '',
423
                    'image' => $dailyPulseEmoji->image ? $storage->getGenericImage($path,  $dailyPulseEmoji->uuid, $dailyPulseEmoji->image) : '',
433
                ]
424
                ]
434
            ];
425
            ];
435
            
426
 
436
            return new JsonModel($data);
427
            return new JsonModel($data);
437
        }
-
 
438
        else if($request->isPost()) {
428
        } else if ($request->isPost()) {
439
            $form = new  DailyPulseEditEmojiForm();
429
            $form = new  DailyPulseEditEmojiForm();
440
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
430
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
441
            $dataPost['status'] = empty($dataPost['status'])  ? DailyPulseEmoji::STATUS_INACTIVE : $dataPost['status'];
431
            $dataPost['status'] = empty($dataPost['status'])  ? DailyPulseEmoji::STATUS_INACTIVE : $dataPost['status'];
442
            
432
 
443
            
433
 
444
            $form->setData($dataPost);
434
            $form->setData($dataPost);
445
            
435
 
446
            if($form->isValid()) {
436
            if ($form->isValid()) {
447
                $dataPost = (array) $form->getData();
437
                $dataPost = (array) $form->getData();
448
                
438
 
449
                $dailyPulseEmoji->name = $dataPost['name'];
439
                $dailyPulseEmoji->name = $dataPost['name'];
450
                $dailyPulseEmoji->order = $dataPost['order'];
440
                $dailyPulseEmoji->order = $dataPost['order'];
451
                $dailyPulseEmoji->points = $dataPost['points'];
441
                $dailyPulseEmoji->points = $dataPost['points'];
452
                $dailyPulseEmoji->status = $dataPost['status'];
442
                $dailyPulseEmoji->status = $dataPost['status'];
453
                $dailyPulseEmoji->type = $dataPost['type'];
443
                $dailyPulseEmoji->type = $dataPost['type'];
454
                
444
 
455
                if($dailyPulseEmojiMapper->update($dailyPulseEmoji)) {
445
                if ($dailyPulseEmojiMapper->update($dailyPulseEmoji)) {
456
                    
446
 
457
                    
447
 
458
                    
448
 
459
                    $target_size = $this->config['leaderslinked.image_sizes.emoji'];
449
                    $target_size = $this->config['leaderslinked.image_sizes.emoji'];
460
                    list($target_width, $target_height) = explode('x', $target_size);
450
                    list($target_width, $target_height) = explode('x', $target_size);
461
                   
451
 
462
                    
452
 
463
                    
453
 
464
                    
454
 
465
                    $files = $this->getRequest()->getFiles()->toArray();
455
                    $files = $this->getRequest()->getFiles()->toArray();
466
                    if(isset($files['image']) && empty($files['image']['error'])) {
456
                    if (isset($files['image']) && empty($files['image']['error'])) {
467
                        
457
 
468
                        $image = Image::getInstance($this->config);
458
                        $image = Image::getInstance($this->config);
469
                        $storage = Storage::getInstance($this->config, $this->adapter);
459
                        $storage = Storage::getInstance($this->config, $this->adapter);
470
                        $target_path = $storage->getPathDailyPulse();
460
                        $target_path = $storage->getPathDailyPulse();
471
                        
461
 
472
                        $tmp_filename  = $files['image']['tmp_name'];
462
                        $tmp_filename  = $files['image']['tmp_name'];
473
                        $filename      = explode('.',  $files['image']['name']);
463
                        $filename      = explode('.',  $files['image']['name']);
474
                        $filename       = Functions::normalizeStringFilename(uniqid() . '-' . $filename[0].'.png');
464
                        $filename       = Functions::normalizeStringFilename(uniqid() . '-' . $filename[0] . '.png');
475
                        
465
 
476
                        $crop_to_dimensions = true;
466
                        $crop_to_dimensions = true;
477
                        $full_tmp_filename = $image->uploadProcessChangeSize($tmp_filename, $filename, $target_width, $target_height,  $crop_to_dimensions);
467
                        $full_tmp_filename = $image->uploadProcessChangeSize($tmp_filename, $filename, $target_width, $target_height,  $crop_to_dimensions);
478
                        
468
 
479
                        if($full_tmp_filename ) { 
469
                        if ($full_tmp_filename) {
480
                            if($dailyPulseEmoji->image) {
470
                            if ($dailyPulseEmoji->image) {
481
                                $storage->deleteFile($target_path, $dailyPulseEmoji->uuid, $dailyPulseEmoji->image);
471
                                $storage->deleteFile($target_path, $dailyPulseEmoji->uuid, $dailyPulseEmoji->image);
482
                                
472
 
483
                                $dailyPulseEmoji->image = $filename;
473
                                $dailyPulseEmoji->image = $filename;
484
                                $dailyPulseEmojiMapper->update($dailyPulseEmoji);
474
                                $dailyPulseEmojiMapper->update($dailyPulseEmoji);
485
                            }
475
                            }
486
                            
476
 
487
                            if($storage->putFile($target_path, $dailyPulseEmoji->uuid, $full_tmp_filename)) {
477
                            if ($storage->putFile($target_path, $dailyPulseEmoji->uuid, $full_tmp_filename)) {
488
                               
478
 
489
                    
479
 
490
                                
480
 
491
                                $dailyPulseEmoji->image = $filename;
481
                                $dailyPulseEmoji->image = $filename;
492
                                $dailyPulseEmojiMapper->update($dailyPulseEmoji);
482
                                $dailyPulseEmojiMapper->update($dailyPulseEmoji);
493
                            }
483
                            }
494
                        }
484
                        }
495
                    }
485
                    }
496
                    
486
 
497
                    
487
 
498
                    
488
 
499
                    $this->logger->info('Se edito el emoji' . $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
489
                    $this->logger->info('Se edito el emoji' . $dailyPulseEmoji->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
500
                    
490
 
501
                    $data = [
491
                    $data = [
502
                        'success'   => true,
492
                        'success'   => true,
503
                        'data'   => 'LABEL_RECORD_UPDATED'
493
                        'data'   => 'LABEL_RECORD_UPDATED'
504
                    ];
494
                    ];
505
                } else {
495
                } else {
506
                    $data = [
496
                    $data = [
507
                        'success'   => false,
497
                        'success'   => false,
508
                        'data'      => $dailyPulseEmojiMapper->getError()
498
                        'data'      => $dailyPulseEmojiMapper->getError()
509
                    ];
499
                    ];
510
                    
-
 
511
                }
500
                }
512
                
501
 
513
                return new JsonModel($data);
502
                return new JsonModel($data);
514
                
-
 
515
            } else {
503
            } else {
516
                $messages = [];
504
                $messages = [];
517
                $form_messages = (array) $form->getMessages();
505
                $form_messages = (array) $form->getMessages();
518
                foreach($form_messages  as $fieldname => $field_messages)
506
                foreach ($form_messages  as $fieldname => $field_messages) {
519
                {
-
 
520
                    
507
 
521
                    $messages[$fieldname] = array_values($field_messages);
508
                    $messages[$fieldname] = array_values($field_messages);
522
                }
509
                }
523
                
510
 
524
                return new JsonModel([
511
                return new JsonModel([
525
                    'success'   => false,
512
                    'success'   => false,
526
                    'data'   => $messages
513
                    'data'   => $messages
527
                ]);
514
                ]);
528
            }
515
            }
529
        } else {
516
        } else {
530
            $data = [
517
            $data = [
531
                'success' => false,
518
                'success' => false,
532
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
519
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
533
            ];
520
            ];
534
            
521
 
535
            return new JsonModel($data);
522
            return new JsonModel($data);
536
        }
523
        }
537
        
524
 
538
        return new JsonModel($data);
525
        return new JsonModel($data);
539
    }
526
    }
540
    
-
 
541
    
-
 
542
}
527
}