Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7811 nelberth 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Authentication\AuthenticationService;
7
use Laminas\Authentication\Result as AuthResult;
8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
10
use Laminas\Mvc\Controller\AbstractActionController;
11
use Laminas\Mvc\I18n\Translator;
12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\ViewModel;
14
use Laminas\View\Model\JsonModel;
7818 nelberth 15
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
7811 nelberth 16
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
7818 nelberth 17
use LeadersLinked\Form\HighPerformanceTeamsGroupsMembersForm;
7811 nelberth 18
use LeadersLinked\Library\Functions;
19
use LeadersLinked\Mapper\UserMapper;
7818 nelberth 20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;
7811 nelberth 21
use LeadersLinked\Mapper\CompanyMapper;
22
use LeadersLinked\Mapper\CompanyUserMapper;
23
 
7827 nelberth 24
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
7811 nelberth 25
 
7827 nelberth 26
class HighPerformanceTeamsGroupsMembersController extends AbstractActionController
7811 nelberth 27
{
28
    /**
29
     *
30
     * @var AdapterInterface
31
     */
32
    private $adapter;
33
 
34
 
35
    /**
36
     *
37
     * @var AbstractAdapter
38
     */
39
    private $cache;
40
 
41
    /**
42
     *
43
     * @var  LoggerInterface
44
     */
45
    private $logger;
46
 
47
    /**
48
     *
49
     * @var array
50
     */
51
    private $config;
52
 
53
 
54
 
55
    /**
56
     *
57
     * @param AdapterInterface $adapter
58
     * @param AbstractAdapter $cache
59
     * @param LoggerInterface $logger
60
     * @param array $config
61
     */
62
    public function __construct($adapter, $cache , $logger, $config)
63
    {
64
        $this->adapter      = $adapter;
65
        $this->cache        = $cache;
66
        $this->logger       = $logger;
67
        $this->config       = $config;
68
 
69
 
70
    }
71
 
72
 
73
 
74
 
75
    public function indexAction()
76
    {
77
 
7829 nelberth 78
 
7827 nelberth 79
 
7811 nelberth 80
        $currentUserPlugin = $this->plugin('currentUserPlugin');
81
        $currentUser = $currentUserPlugin->getUser();
82
        $currentCompany = $currentUserPlugin->getCompany();
7833 nelberth 83
        $group_uuid= $this->params()->fromRoute('id');
7811 nelberth 84
 
85
        $request = $this->getRequest();
86
        if($request->isGet()) {
87
 
88
 
89
            $headers  = $request->getHeaders();
90
 
91
            $isJson = false;
92
            if($headers->has('Accept')) {
93
                $accept = $headers->get('Accept');
94
 
95
                $prioritized = $accept->getPrioritized();
96
 
97
                foreach($prioritized as $key => $value) {
98
                    $raw = trim($value->getRaw());
99
 
100
                    if(!$isJson) {
101
                        $isJson = strpos($raw, 'json');
102
                    }
103
 
104
                }
105
            }
106
 
107
            if($isJson) {
108
 
7831 nelberth 109
                return new JsonModel([
110
                    'success' => false,
7832 nelberth 111
                    'data' => $group_uuid
7831 nelberth 112
                ]);
7820 nelberth 113
                $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
114
                $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
115
 
116
                if (!$highPerformanceTeamsGroups) {
117
                    $data = [
118
                        'success' => false,
119
                        'data' => 'ERROR_RECORD_NOT_FOUND'
120
                    ];
121
 
122
                    return new JsonModel($data);
123
                }
7811 nelberth 124
 
125
 
7818 nelberth 126
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
7820 nelberth 127
                $items = $highPerformanceTeamsGroupsMembersMapper->fetchAll($highPerformanceTeamsGroups->id);
7811 nelberth 128
 
129
 
130
 
131
                return new JsonModel([
132
                    'success' => true,
133
                    'data' => [
7818 nelberth 134
                        'items' => $items
7811 nelberth 135
                    ]
136
                ]);
137
 
138
            }
139
        } else {
140
            return new JsonModel([
141
                'success' => false,
142
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
143
            ]);
144
        }
145
    }
146
 
147
    public function addAction()
148
    {
149
      $currentUserPlugin = $this->plugin('currentUserPlugin');
150
        $currentUser = $currentUserPlugin->getUser();
151
        $currentCompany = $currentUserPlugin->getCompany();
152
 
153
        $request = $this->getRequest();
154
        if($request->isPost()) {
7818 nelberth 155
            $form = new  HighPerformanceTeamsGroupsMembersForm($this->adapter, $currentCompany->id);
7811 nelberth 156
            $dataPost = $request->getPost()->toArray();
157
 
158
            $form->setData($dataPost);
159
 
160
            if($form->isValid()) {
161
                $dataPost = (array) $form->getData();
7818 nelberth 162
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroupsMembers::STATUS_INACTIVE;
7811 nelberth 163
                $dataPost['company_id']=$currentCompany->id;
164
 
165
                $hydrator = new ObjectPropertyHydrator();
7818 nelberth 166
                $highPerformanceTeamsGroupsMembers = new HighPerformanceTeamsGroupsMembers();
167
                $hydrator->hydrate($dataPost, $highPerformanceTeamsGroupsMembers);
7811 nelberth 168
 
7818 nelberth 169
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
7811 nelberth 170
 
7818 nelberth 171
                $result = $highPerformanceTeamsGroupsMembersMapper->insert($highPerformanceTeamsGroupsMembers);
7811 nelberth 172
 
173
                if($result) {
174
 
7827 nelberth 175
                        $highPerformanceTeamsGroupsMembersMember = new HighPerformanceTeamsGroupsMembers();
7818 nelberth 176
                        $highPerformanceTeamsGroupsMembersMember->group_id  = $highPerformanceTeamsGroupsMembers->id;
7811 nelberth 177
 
7818 nelberth 178
                        $highPerformanceTeamsGroupsMembersMember->user_id = $currentUser->id;
7827 nelberth 179
                        $highPerformanceTeamsGroupsMembersMember->status = HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN;
180
                        $highPerformanceTeamsGroupsMembersMember->type = HighPerformanceTeamsGroupsMembers::TYPE_CREATOR;
181
                        $highPerformanceTeamsGroupsMembersMemberMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
7811 nelberth 182
 
7818 nelberth 183
                        $highPerformanceTeamsGroupsMembersMemberMapper->insert($highPerformanceTeamsGroupsMembersMember);
7811 nelberth 184
 
185
 
7818 nelberth 186
                    $this->logger->info('Se agrego el grupo de alto rendimiento ' . $highPerformanceTeamsGroupsMembers->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
7811 nelberth 187
 
188
                    $data = [
189
                        'success'   => true,
190
                        'data'   => 'LABEL_RECORD_ADDED'
191
                    ];
192
                } else {
193
                    $data = [
194
                        'success'   => false,
7818 nelberth 195
                        'data'      => $highPerformanceTeamsGroupsMembersMapper->getError()
7811 nelberth 196
                    ];
197
 
198
                }
199
 
200
                return new JsonModel($data);
201
 
202
            } else {
203
                $messages = [];
204
                $form_messages = (array) $form->getMessages();
205
                foreach($form_messages  as $fieldname => $field_messages)
206
                {
207
 
208
                    $messages[$fieldname] = array_values($field_messages);
209
                }
210
 
211
                return new JsonModel([
212
                    'success'   => false,
213
                    'data'   => $messages
214
                ]);
215
            }
216
 
217
        }else if ($request->isGet()) {
218
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
219
            $userMapper = UserMapper::getInstance($this->adapter);
220
            $datosCompanyUser = $companyUserMapper->fetchAllByCompanyId($currentCompany->id);
221
 
222
            $users=[];
223
 
224
            foreach($datosCompanyUser as $record){
225
                $datosUser = $userMapper->fetchOne($record->user_id);
226
 
227
                    $user=[
228
                        'uuid'=>$datosUser->uuid,
229
                        'email'=>$datosUser->email,
230
                        'first_name'=>$datosUser->first_name,
231
                        'last_name'=>$datosUser->last_name,
232
 
233
                    ];
234
                    array_push($users, $user);
235
 
236
            }
237
 
238
            return new JsonModel([
239
                'success' => true,
240
                'data' => $users
241
 
242
            ]);
243
        } else {
244
            $data = [
245
                'success' => false,
246
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
247
            ];
248
 
249
            return new JsonModel($data);
250
        }
251
 
252
        return new JsonModel($data);
253
 
254
 
255
    }
256
 
257
 
258
 
259
     public function editAction(){
260
 
261
        $currentUserPlugin = $this->plugin('currentUserPlugin');
262
        $currentUser = $currentUserPlugin->getUser();
263
        $currentCompany = $currentUserPlugin->getCompany();
264
        $request = $this->getRequest();
265
        $uuid = $this->params()->fromRoute('id');
266
 
267
 
268
        if(!$uuid) {
269
            $data = [
270
                'success'   => false,
271
                'data'   => 'ERROR_INVALID_PARAMETER'
272
            ];
273
 
274
            return new JsonModel($data);
275
        }
276
 
7818 nelberth 277
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
278
        $group = $highPerformanceTeamsGroupsMembersMapper->fetchOneByUuid($uuid);
7811 nelberth 279
 
280
        if (!$group) {
281
            $data = [
282
                'success' => false,
283
                'data' => 'ERROR_RECORD_NOT_FOUND'
284
            ];
285
 
286
            return new JsonModel($data);
287
        }
288
 
289
        if ($group->company_id != $currentCompany->id) {
290
            return new JsonModel([
291
                'success' => false,
292
                'data' => 'ERROR_UNAUTHORIZED'
293
            ]);
294
        }
295
 
296
        if($request->isPost()) {
7818 nelberth 297
            $form = new  HighPerformanceTeamsGroupsMembersForm($this->adapter, $currentCompany->id);
7811 nelberth 298
            $dataPost = $request->getPost()->toArray();
7818 nelberth 299
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroupsMembers::STATUS_INACTIVE;
7811 nelberth 300
            $form->setData($dataPost);
301
 
302
            if($form->isValid()) {
303
                $dataPost = (array) $form->getData();
304
 
305
                $hydrator = new ObjectPropertyHydrator();
306
                $hydrator->hydrate($dataPost, $group);
7818 nelberth 307
                $result = $highPerformanceTeamsGroupsMembersMapper->update($group);
7811 nelberth 308
 
309
                if($result) {
310
                    $this->logger->info('Se actualizo el grupo de alto rendimiento ' . $group->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
311
 
312
                    $data = [
313
                        'success' => true,
314
                        'data' => 'LABEL_RECORD_UPDATED'
315
                    ];
316
                } else {
317
                    $data = [
318
                        'success'   => false,
7818 nelberth 319
                        'data'      => $highPerformanceTeamsGroupsMembersMapper->getError()
7811 nelberth 320
                    ];
321
                }
322
 
323
                return new JsonModel($data);
324
 
325
            } else {
326
                $messages = [];
327
                $form_messages = (array) $form->getMessages();
328
                foreach($form_messages  as $fieldname => $field_messages)
329
                {
330
                    $messages[$fieldname] = array_values($field_messages);
331
                }
332
 
333
                return new JsonModel([
334
                    'success'   => false,
335
                    'data'   => $messages
336
                ]);
337
            }
338
        }else if ($request->isGet()) {
339
            $hydrator = new ObjectPropertyHydrator();
340
 
341
            $data = [
342
                'success' => true,
343
                'data' => $hydrator->extract($group)
344
            ];
345
 
346
            return new JsonModel($data);
347
        } else {
348
            $data = [
349
                'success' => false,
350
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
351
            ];
352
 
353
            return new JsonModel($data);
354
        }
355
 
356
        return new JsonModel($data);
357
 
358
    }
359
 
360
 
361
 
362
 
363
    public function deleteAction(){
364
        $currentUserPlugin = $this->plugin('currentUserPlugin');
365
        $currentCompany = $currentUserPlugin->getCompany();
366
        $currentUser = $currentUserPlugin->getUser();
367
 
368
        $request = $this->getRequest();
369
        $uuid = $this->params()->fromRoute('id');
370
 
371
 
372
        if (!$uuid) {
373
            $data = [
374
                'success' => false,
375
                'data' => 'ERROR_INVALID_PARAMETER'
376
            ];
377
 
378
            return new JsonModel($data);
379
        }
380
 
381
 
382
 
7818 nelberth 383
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
384
        $group = $highPerformanceTeamsGroupsMembersMapper->fetchOneByUuid($uuid);
7811 nelberth 385
 
386
        if (!$group) {
387
            $data = [
388
                'success' => false,
389
                'data' => 'ERROR_RECORD_NOT_FOUND'
390
            ];
391
 
392
            return new JsonModel($data);
393
        }
394
 
395
        if ($group->company_id != $currentCompany->id) {
396
            return new JsonModel([
397
                'success' => false,
398
                'data' => 'ERROR_UNAUTHORIZED'
399
            ]);
400
        }
401
 
402
        if ($request->isPost()) {
403
 
404
 
7818 nelberth 405
            $result = $highPerformanceTeamsGroupsMembersMapper->delete($group->id);
7811 nelberth 406
            if ($result) {
407
                $this->logger->info('Se borro el grupo de alto rendimiento  ' . $group->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
408
 
409
                $data = [
410
                    'success' => true,
411
                    'data' => 'LABEL_RECORD_DELETED'
412
                ];
413
            } else {
414
 
415
                $data = [
416
                    'success' => false,
7818 nelberth 417
                    'data' => $highPerformanceTeamsGroupsMembersMapper->getError()
7811 nelberth 418
                ];
419
 
420
                return new JsonModel($data);
421
            }
422
        } else {
423
            $data = [
424
                'success' => false,
425
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
426
            ];
427
 
428
            return new JsonModel($data);
429
        }
430
 
431
        return new JsonModel($data);
432
    }
433
 
434
 
435
 
436
 
437
}