Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
4384 eleazar 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
4579 eleazar 11
use Laminas\View\Model\ViewModel;
4384 eleazar 12
use Laminas\View\Model\JsonModel;
5027 efrain 13
use LeadersLinked\Library\Functions;
4579 eleazar 14
use LeadersLinked\Mapper\SurveyMapper;
4678 eleazar 15
use LeadersLinked\Mapper\SurveyFormMapper;
4883 eleazar 16
use LeadersLinked\Mapper\SurveyJobDescriptionMapper;
17
use LeadersLinked\Mapper\SurveyIndustryMapper;
5074 eleazar 18
use LeadersLinked\Mapper\SurveySkillMapper;
4883 eleazar 19
use LeadersLinked\Mapper\SurveyLocationMapper;
5074 eleazar 20
use LeadersLinked\Mapper\SurveyLanguageMapper;
4855 eleazar 21
use LeadersLinked\Model\Location;
22
use LeadersLinked\Mapper\LocationMapper;
23
use LeadersLinked\Mapper\IndustryMapper;
24
use LeadersLinked\Mapper\JobDescriptionMapper;
25
use LeadersLinked\Mapper\BehaviorMapper;
26
use LeadersLinked\Mapper\JobDescriptionBehaviorCompetencyMapper;
27
use LeadersLinked\Mapper\CompanyMapper;
5074 eleazar 28
use LeadersLinked\Mapper\LanguageMapper;
4855 eleazar 29
use LeadersLinked\Model\Company;
5074 eleazar 30
use LeadersLinked\Mapper\SkillMapper;
4865 eleazar 31
use LeadersLinked\Form\SurveySegmentedForm;
4579 eleazar 32
use LeadersLinked\Form\SurveyForm;
33
use LeadersLinked\Model\Survey;
34
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
5026 efrain 35
use LeadersLinked\Model\SurveyJobDescription;
5074 eleazar 36
use LeadersLinked\Model\SurveySkill;
5027 efrain 37
use LeadersLinked\Model\SurveyIndustry;
5074 eleazar 38
use LeadersLinked\Model\SurveyLanguage;
4384 eleazar 39
 
40
class SurveyController extends AbstractActionController {
41
 
42
    /**
43
     *
44
     * @var AdapterInterface
45
     */
46
    private $adapter;
47
 
48
    /**
49
     *
50
     * @var AbstractAdapter
51
     */
52
    private $cache;
53
 
54
    /**
55
     *
56
     * @var  LoggerInterface
57
     */
58
    private $logger;
59
 
60
    /**
61
     *
62
     * @var array
63
     */
64
    private $config;
65
 
66
    /**
67
     *
68
     * @param AdapterInterface $adapter
69
     * @param AbstractAdapter $cache
70
     * @param LoggerInterface $logger
71
     * @param array $config
72
     */
73
    public function __construct($adapter, $cache, $logger, $config) {
74
        $this->adapter = $adapter;
75
        $this->cache = $cache;
76
        $this->logger = $logger;
77
        $this->config = $config;
78
    }
79
 
80
    public function indexAction() {
4579 eleazar 81
        $request = $this->getRequest();
82
        $currentUserPlugin = $this->plugin('currentUserPlugin');
83
        $currentCompany = $currentUserPlugin->getCompany();
84
        $currentUser = $currentUserPlugin->getUser();
4384 eleazar 85
 
4579 eleazar 86
 
87
        $request = $this->getRequest();
88
        if ($request->isGet()) {
89
 
90
            $headers = $request->getHeaders();
91
 
92
            $isJson = false;
93
            if ($headers->has('Accept')) {
94
                $accept = $headers->get('Accept');
95
 
96
                $prioritized = $accept->getPrioritized();
97
 
98
                foreach ($prioritized as $key => $value) {
99
                    $raw = trim($value->getRaw());
100
 
101
                    if (!$isJson) {
102
                        $isJson = strpos($raw, 'json');
103
                    }
104
                }
105
            }
106
 
107
            if ($isJson) {
108
                $search = $this->params()->fromQuery('search', []);
109
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
110
 
111
                $page = intval($this->params()->fromQuery('start', 1), 10);
112
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
113
                $order = $this->params()->fromQuery('order', []);
114
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
115
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
116
 
117
                $fields = ['name'];
118
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
119
 
120
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
121
                    $order_direction = 'ASC';
122
                }
123
 
4661 eleazar 124
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
125
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'survey/add');
126
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'survey/edit');
127
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'survey/delete');
128
                $allowSegment = $acl->isAllowed($currentUser->usertype_id, 'survey/segment');
129
 
4579 eleazar 130
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
131
                $paginator = $surveyMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
132
 
133
                $items = [];
134
                $records = $paginator->getCurrentItems();
135
 
136
                foreach ($records as $record) {
4754 eleazar 137
                    $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
138
                    $surveyForm = $surveyFormMapper->fetchOne($record->form_id);
139
 
4579 eleazar 140
                    $item = [
141
                        'id' => $record->id,
142
                        'name' => $record->name,
4754 eleazar 143
                        'form' => $surveyForm->name,
4579 eleazar 144
                        'status' => $record->status,
145
                        'actions' => [
146
                            'link_edit' => $this->url()->fromRoute('survey/edit', ['id' => $record->uuid]),
147
                            'link_delete' => $this->url()->fromRoute('survey/delete', ['id' => $record->uuid]),
148
                            'link_segment' => $this->url()->fromRoute('survey/segment', ['id' => $record->uuid])
149
                        ]
150
                    ];
151
 
152
                    array_push($items, $item);
153
                }
154
 
155
                return new JsonModel([
156
                    'success' => true,
157
                    'data' => [
158
                        'items' => $items,
159
                        'total' => $paginator->getTotalItemCount(),
160
                    ]
161
                ]);
162
            } else {
163
 
164
                $form = new SurveyForm($this->adapter, $currentCompany->id);
4873 eleazar 165
                $formSegmented = new SurveySegmentedForm($this->adapter, $currentCompany->id);
4579 eleazar 166
 
167
                $this->layout()->setTemplate('layout/layout-backend');
168
                $viewModel = new ViewModel();
169
                $viewModel->setTemplate('leaders-linked/survey/index.phtml');
170
                $viewModel->setVariable('form', $form);
4873 eleazar 171
                $viewModel->setVariable('formSegmented', $formSegmented);
4579 eleazar 172
                return $viewModel;
173
            }
174
        } else {
175
            return new JsonModel([
176
                'success' => false,
177
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
178
            ]);
179
        }
4384 eleazar 180
    }
181
 
4579 eleazar 182
    public function addAction() {
183
        $request = $this->getRequest();
184
        $currentUserPlugin = $this->plugin('currentUserPlugin');
185
        $currentCompany = $currentUserPlugin->getCompany();
186
        $currentUser = $currentUserPlugin->getUser();
187
 
188
        $request = $this->getRequest();
189
 
190
        if ($request->isPost()) {
191
 
192
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4672 eleazar 193
 
4579 eleazar 194
            $dataPost = $request->getPost()->toArray();
4661 eleazar 195
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
4579 eleazar 196
 
197
            $form->setData($dataPost);
198
 
199
            if ($form->isValid()) {
200
                $dataPost = (array) $form->getData();
201
 
202
                $hydrator = new ObjectPropertyHydrator();
203
                $survey = new Survey();
204
                $hydrator->hydrate($dataPost, $survey);
205
 
206
                if (!$survey->status) {
207
                    $survey->status = Survey::STATUS_INACTIVE;
208
                }
209
                $survey->company_id = $currentCompany->id;
210
 
4677 eleazar 211
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
212
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
213
                $survey->form_id = $surveyForm->id;
4579 eleazar 214
 
4724 eleazar 215
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
216
                $result = $surveyMapper->insert($survey);
4730 eleazar 217
 
4579 eleazar 218
                if ($result) {
4734 eleazar 219
 
4728 eleazar 220
                    if ($result) {
4579 eleazar 221
 
222
                        $data = [
223
                            'success' => true,
224
                            'data' => 'LABEL_RECORD_ADDED'
225
                        ];
226
                    } else {
227
 
228
                        $data = [
229
                            'success' => false,
230
                            'data' => 'ERROR_RECORD_NOT_FOUND'
231
                        ];
232
                    }
233
                } else {
234
                    $data = [
235
                        'success' => false,
236
                        'data' => $surveyMapper->getError()
237
                    ];
238
                }
239
 
240
                return new JsonModel($data);
241
            } else {
242
                $messages = [];
243
                $form_messages = (array) $form->getMessages();
244
                foreach ($form_messages as $fieldname => $field_messages) {
245
 
246
                    $messages[$fieldname] = array_values($field_messages);
247
                }
248
 
249
                return new JsonModel([
250
                    'success' => false,
251
                    'data' => $messages
252
                ]);
253
            }
254
        } else {
255
            $data = [
256
                'success' => false,
257
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
258
            ];
259
 
260
            return new JsonModel($data);
261
        }
262
 
263
        return new JsonModel($data);
264
    }
265
 
4856 eleazar 266
    public function segmentAction() {
4855 eleazar 267
        $request = $this->getRequest();
268
        $currentUserPlugin = $this->plugin('currentUserPlugin');
269
        $currentCompany = $currentUserPlugin->getCompany();
270
        $currentUser = $currentUserPlugin->getUser();
271
 
272
        $request = $this->getRequest();
273
        $uuid = $this->params()->fromRoute('id');
274
 
275
 
276
        if (!$uuid) {
277
            $data = [
278
                'success' => false,
279
                'data' => 'ERROR_INVALID_PARAMETER'
280
            ];
281
 
282
            return new JsonModel($data);
283
        }
284
 
285
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
286
        $survey = $surveyMapper->fetchOneByUuid($uuid);
287
        if (!$survey) {
288
            $data = [
289
                'success' => false,
290
                'data' => 'ERROR_RECORD_NOT_FOUND'
291
            ];
292
 
293
            return new JsonModel($data);
294
        }
295
 
296
        if ($survey->company_id != $currentCompany->id) {
297
            return new JsonModel([
298
                'success' => false,
299
                'data' => 'ERROR_UNAUTHORIZED'
300
            ]);
301
        }
302
 
4863 eleazar 303
        if($request->isPost()){
4865 eleazar 304
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 305
 
306
 
4855 eleazar 307
            $dataPost = $request->getPost()->toArray();
5006 eleazar 308
            $form->setData($dataPost);
5019 efrain 309
 
4855 eleazar 310
 
5020 efrain 311
 
4855 eleazar 312
            if ($form->isValid()) {
313
                $dataPost = (array) $form->getData();
5029 efrain 314
 
315
                /*
4855 eleazar 316
 
317
                $location = new Location();
318
                $hydrator->hydrate($dataPost, $location);
319
 
320
                $locationMapper= LocationMapper::getInstance($this->adapter);
321
                $resultLocation = $locationMapper->insert($location);
322
 
323
                if (!$resultLocation) {
324
                    return new JsonModel([
325
                        'success'   => false,
326
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
327
                    ]);
328
                }
5029 efrain 329
                */
4991 eleazar 330
 
4855 eleazar 331
                $jobDescription = new SurveyJobDescription();
5074 eleazar 332
                $skill = new SurveySkill();
4855 eleazar 333
                $industry = new SurveyIndustry();
5074 eleazar 334
                $language = new SurveyLanguage();
5064 eleazar 335
 
5031 efrain 336
                if(!empty($dataPost['job_description_id'])){
337
 
5032 efrain 338
                   // print_r($dataPost['job_description_id']);
5031 efrain 339
 
5026 efrain 340
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
341
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
342
 
343
                    $ok = true;
344
 
345
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
346
 
5032 efrain 347
                       // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
5026 efrain 348
 
349
 
350
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5032 efrain 351
 
5033 efrain 352
                       // print_r($jobDescription);
353
                        //print_r($currentCompany);
5032 efrain 354
 
5034 efrain 355
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 356
                            $record = new SurveyJobDescription();
357
                            $record->job_description_id = $jobDescription->id;
358
                            $record->survey_id = $survey->id;
359
 
5034 efrain 360
 
5033 efrain 361
 
5026 efrain 362
                            $result = $surveyJobDescriptionMapper->insert($record);
363
                            $ok = $ok && $result;
4985 eleazar 364
                        }
4916 eleazar 365
                    }
5026 efrain 366
 
367
                    if($ok){
5028 efrain 368
 
5026 efrain 369
                    }
4883 eleazar 370
                }
5028 efrain 371
 
372
                $data = [
373
                    'success' => true,
374
                    'data' => 'LABEL_RECORD_ADDED'
375
                ];
5065 eleazar 376
              //  return new JsonModel($data);
5063 eleazar 377
 
5074 eleazar 378
                if(!empty($dataPost['skill_id'])){
5042 eleazar 379
 
5074 eleazar 380
                    // print_r($dataPost['skill_id']);
5042 eleazar 381
 
5074 eleazar 382
                     $skillMapper = SkillMapper::getInstance($this->adapter);
383
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 384
 
385
                     $ok = true;
386
 
5074 eleazar 387
                     foreach($dataPost['skill_id'] as $skillUuid) {
5042 eleazar 388
 
389
                        // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
390
 
391
 
5074 eleazar 392
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 393
 
5074 eleazar 394
                        // print_r($skill);
5058 eleazar 395
                        //print_r($currentCompany);
5042 eleazar 396
 
5074 eleazar 397
                        //if($skill && $skill->company_id == $currentCompany->id) {
398
                            $record = new SurveySkill();
399
                            $record->skill_id = $skill->id;
5053 eleazar 400
                            $record->survey_id = $survey->id;
401
 
402
 
5074 eleazar 403
                            $result = $surveySkillMapper->insert($record);
5053 eleazar 404
                            $ok = $ok && $result;
5052 eleazar 405
                        // }
5042 eleazar 406
                     }
407
 
408
                     if($ok){
409
 
410
                     }
411
                 }
412
 
413
                $data = [
414
                    'success' => true,
5062 eleazar 415
                    'data' => 'test'
5042 eleazar 416
                ];
5066 eleazar 417
              //  return new JsonModel($data); exit;
5064 eleazar 418
 
5042 eleazar 419
                if(!empty($dataPost['industry_id'])){
420
 
421
                    // print_r($dataPost['industry_id']);
422
 
423
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
424
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
425
 
426
                     $ok = true;
427
 
428
                     foreach($dataPost['industry_id'] as $industryUuid) {
429
 
430
                        // echo '$industryUuid = ' . $industryUuid ;
431
 
432
 
433
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
434
 
435
                        // print_r($industry);
436
                         //print_r($currentCompany);
437
 
5050 eleazar 438
                         //if($industry && $industry->company_id == $currentCompany->id) {
5042 eleazar 439
                             $record = new SurveyIndustry();
440
                             $record->industry_id = $industry->id;
441
                             $record->survey_id = $survey->id;
442
 
443
 
444
 
445
                             $result = $surveyIndustryMapper->insert($record);
446
                             $ok = $ok && $result;
5050 eleazar 447
                         //}
5042 eleazar 448
                     }
449
 
450
                     if($ok){
451
 
452
                     }
453
                 }
454
 
455
                $data = [
456
                    'success' => true,
5066 eleazar 457
                    'data' => 'test industry'
5042 eleazar 458
                ];
5067 eleazar 459
               // return new JsonModel($data); exit;
5074 eleazar 460
 
5083 eleazar 461
                if(!empty($dataPost['language_id'])){
5042 eleazar 462
 
5074 eleazar 463
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 464
 
465
                    $ok = true;
466
 
5085 eleazar 467
                    foreach($dataPost['language_id'] as $language_id) {
5042 eleazar 468
 
5074 eleazar 469
                            $record = new SurveyLanguage();
5085 eleazar 470
                            $record->language_id = $language_id;
5056 eleazar 471
                            $record->survey_id = $survey->id;
472
 
473
 
5074 eleazar 474
                            $result = $surveyLanguageMapper->insert($record);
5056 eleazar 475
                            $ok = $ok && $result;
476
                       //}
477
                    }
478
                      if($ok){
479
 
480
                    }
5042 eleazar 481
                 }
482
 
483
                $data = [
484
                    'success' => true,
485
                    'data' => 'LABEL_RECORD_ADDED'
486
                ];
5074 eleazar 487
               // return new JsonModel($data); exit;
488
 
5060 eleazar 489
               // return new JsonModel($data);
4855 eleazar 490
            } else {
5013 eleazar 491
                $messages = [];
4855 eleazar 492
                $form_messages = (array) $form->getMessages();
493
                foreach ($form_messages as $fieldname => $field_messages) {
494
 
495
                    $messages[$fieldname] = array_values($field_messages);
496
                }
497
 
498
                return new JsonModel([
499
                    'success' => false,
5011 eleazar 500
                    'data' => $messages
5013 eleazar 501
                ]);
4855 eleazar 502
            }
503
        } else {
504
            $data = [
505
                'success' => false,
506
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
507
            ];
508
 
509
            return new JsonModel($data);
510
        }
511
 
5060 eleazar 512
       return new JsonModel($data);
4855 eleazar 513
 
514
    }
515
 
4579 eleazar 516
    public function editAction() {
517
        $request = $this->getRequest();
518
        $currentUserPlugin = $this->plugin('currentUserPlugin');
519
        $currentCompany = $currentUserPlugin->getCompany();
520
        $currentUser = $currentUserPlugin->getUser();
521
 
522
        $request = $this->getRequest();
523
        $uuid = $this->params()->fromRoute('id');
524
 
525
 
526
        if (!$uuid) {
527
            $data = [
528
                'success' => false,
529
                'data' => 'ERROR_INVALID_PARAMETER'
530
            ];
531
 
532
            return new JsonModel($data);
533
        }
534
 
535
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
536
        $survey = $surveyMapper->fetchOneByUuid($uuid);
537
 
538
        if (!$survey) {
539
            $data = [
540
                'success' => false,
541
                'data' => 'ERROR_RECORD_NOT_FOUND'
542
            ];
543
 
544
            return new JsonModel($data);
545
        }
546
 
547
        if ($survey->company_id != $currentCompany->id) {
548
            return new JsonModel([
549
                'success' => false,
550
                'data' => 'ERROR_UNAUTHORIZED'
551
            ]);
552
        }
553
 
554
 
555
        if ($request->isPost()) {
556
            $form = new SurveyForm();
557
            $dataPost = $request->getPost()->toArray();
558
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
559
 
560
            $form->setData($dataPost);
561
 
562
            if ($form->isValid()) {
563
                $dataPost = (array) $form->getData();
564
 
565
                $hydrator = new ObjectPropertyHydrator();
566
                $hydrator->hydrate($dataPost, $survey);
567
 
568
                if (!$survey->status) {
569
                    $survey->status = Survey::STATUS_INACTIVE;
570
                }
4749 eleazar 571
 
572
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
573
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
574
                $survey->form_id = $surveyForm->id;
575
 
4579 eleazar 576
                $result = $surveyMapper->update($survey);
577
 
578
                if ($result) {
579
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
580
                    $data = [
581
                        'success' => true,
582
                        'id' => $survey->id,
583
                        'action_edit' => $this->url()->fromRoute('survey/edit', ['id' => $survey->uuid]),
584
                        'data' => 'LABEL_RECORD_UPDATED'
585
                    ];
586
                } else {
587
                    $data = [
588
                        'success' => false,
589
                        'data' => $surveyMapper->getError()
590
                    ];
591
                }
592
 
593
                return new JsonModel($data);
594
            } else {
595
                $messages = [];
596
                $form_messages = (array) $form->getMessages();
597
                foreach ($form_messages as $fieldname => $field_messages) {
598
                    $messages[$fieldname] = array_values($field_messages);
599
                }
600
 
601
                return new JsonModel([
602
                    'success' => false,
603
                    'data' => $messages
604
                ]);
605
            }
606
        } else if ($request->isGet()) {
607
            $hydrator = new ObjectPropertyHydrator();
608
 
4749 eleazar 609
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
610
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
611
 
4579 eleazar 612
            $data = [
613
                'success' => true,
614
                'data' => [
4653 eleazar 615
                    'name' => $survey->name,
4749 eleazar 616
                    'form_id' => $surveyForm->uuid,
4653 eleazar 617
                    'target' => $survey->target,
618
                    'identity' => $survey->identity,
619
                    'since_date' => $survey->since_date,
620
                    'last_date' => $survey->last_date,
621
                    'status' => $survey->status,
4579 eleazar 622
                ]
623
            ];
624
 
625
            return new JsonModel($data);
626
        } else {
627
            $data = [
628
                'success' => false,
629
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
630
            ];
631
 
632
            return new JsonModel($data);
633
        }
634
 
635
        return new JsonModel($data);
636
    }
637
 
638
    public function deleteAction() {
639
        $request = $this->getRequest();
640
        $currentUserPlugin = $this->plugin('currentUserPlugin');
641
        $currentCompany = $currentUserPlugin->getCompany();
642
        $currentUser = $currentUserPlugin->getUser();
643
 
644
        $request = $this->getRequest();
645
        $uuid = $this->params()->fromRoute('id');
646
 
647
        if (!$uuid) {
648
            $data = [
649
                'success' => false,
650
                'data' => 'ERROR_INVALID_PARAMETER'
651
            ];
652
 
653
            return new JsonModel($data);
654
        }
655
 
656
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
657
        $survey = $surveyMapper->fetchOneByUuid($uuid);
658
        if (!$survey) {
659
            $data = [
660
                'success' => false,
661
                'data' => 'ERROR_RECORD_NOT_FOUND'
662
            ];
663
 
664
            return new JsonModel($data);
665
        }
666
 
667
        if ($survey->company_id != $currentCompany->id) {
668
            return new JsonModel([
669
                'success' => false,
670
                'data' => 'ERROR_UNAUTHORIZED'
671
            ]);
672
        }
673
 
674
        if ($request->isPost()) {
675
 
676
            $result = $surveyMapper->delete($survey->id);
677
            if ($result) {
4735 eleazar 678
                //$this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 679
 
680
                $data = [
681
                    'success' => true,
682
                    'data' => 'LABEL_RECORD_DELETED'
683
                ];
684
            } else {
685
 
686
                $data = [
687
                    'success' => false,
688
                    'data' => $surveyMapper->getError()
689
                ];
690
 
691
                return new JsonModel($data);
692
            }
693
        } else {
694
            $data = [
695
                'success' => false,
696
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
697
            ];
698
 
699
            return new JsonModel($data);
700
        }
701
 
702
        return new JsonModel($data);
703
    }
704
 
4384 eleazar 705
}