Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 5383 | Rev 6351 | 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()) {
6341 eleazar 89
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
90
            if($sandbox) {
91
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
92
            } else {
93
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
94
            }
4579 eleazar 95
 
96
            $headers = $request->getHeaders();
97
 
98
            $isJson = false;
99
            if ($headers->has('Accept')) {
100
                $accept = $headers->get('Accept');
101
 
102
                $prioritized = $accept->getPrioritized();
103
 
104
                foreach ($prioritized as $key => $value) {
105
                    $raw = trim($value->getRaw());
106
 
107
                    if (!$isJson) {
108
                        $isJson = strpos($raw, 'json');
109
                    }
110
                }
111
            }
112
 
113
            if ($isJson) {
114
                $search = $this->params()->fromQuery('search', []);
115
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
116
 
117
                $page = intval($this->params()->fromQuery('start', 1), 10);
118
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
119
                $order = $this->params()->fromQuery('order', []);
120
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
121
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
122
 
123
                $fields = ['name'];
124
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
125
 
126
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
127
                    $order_direction = 'ASC';
128
                }
129
 
4661 eleazar 130
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
131
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'survey/add');
132
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'survey/edit');
133
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'survey/delete');
134
                $allowSegment = $acl->isAllowed($currentUser->usertype_id, 'survey/segment');
135
 
4579 eleazar 136
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
137
                $paginator = $surveyMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
138
 
139
                $items = [];
140
                $records = $paginator->getCurrentItems();
141
 
142
                foreach ($records as $record) {
4754 eleazar 143
                    $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
144
                    $surveyForm = $surveyFormMapper->fetchOne($record->form_id);
145
 
4579 eleazar 146
                    $item = [
147
                        'id' => $record->id,
148
                        'name' => $record->name,
4754 eleazar 149
                        'form' => $surveyForm->name,
4579 eleazar 150
                        'status' => $record->status,
151
                        'actions' => [
152
                            'link_edit' => $this->url()->fromRoute('survey/edit', ['id' => $record->uuid]),
153
                            'link_delete' => $this->url()->fromRoute('survey/delete', ['id' => $record->uuid]),
154
                            'link_segment' => $this->url()->fromRoute('survey/segment', ['id' => $record->uuid])
155
                        ]
156
                    ];
157
 
158
                    array_push($items, $item);
159
                }
160
 
161
                return new JsonModel([
162
                    'success' => true,
163
                    'data' => [
164
                        'items' => $items,
165
                        'total' => $paginator->getTotalItemCount(),
166
                    ]
167
                ]);
168
            } else {
169
 
170
                $form = new SurveyForm($this->adapter, $currentCompany->id);
171
 
172
                $this->layout()->setTemplate('layout/layout-backend');
173
                $viewModel = new ViewModel();
174
                $viewModel->setTemplate('leaders-linked/survey/index.phtml');
175
                $viewModel->setVariable('form', $form);
176
                return $viewModel;
177
            }
178
        } else {
179
            return new JsonModel([
180
                'success' => false,
181
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
182
            ]);
183
        }
4384 eleazar 184
    }
185
 
4579 eleazar 186
    public function addAction() {
187
        $request = $this->getRequest();
188
        $currentUserPlugin = $this->plugin('currentUserPlugin');
189
        $currentCompany = $currentUserPlugin->getCompany();
190
        $currentUser = $currentUserPlugin->getUser();
191
 
192
        $request = $this->getRequest();
193
 
194
        if ($request->isPost()) {
195
 
196
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4672 eleazar 197
 
4579 eleazar 198
            $dataPost = $request->getPost()->toArray();
4661 eleazar 199
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
4579 eleazar 200
 
201
            $form->setData($dataPost);
202
 
203
            if ($form->isValid()) {
204
                $dataPost = (array) $form->getData();
205
 
206
                $hydrator = new ObjectPropertyHydrator();
207
                $survey = new Survey();
208
                $hydrator->hydrate($dataPost, $survey);
209
 
210
                if (!$survey->status) {
211
                    $survey->status = Survey::STATUS_INACTIVE;
212
                }
213
                $survey->company_id = $currentCompany->id;
214
 
4677 eleazar 215
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
216
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
217
                $survey->form_id = $surveyForm->id;
4579 eleazar 218
 
4724 eleazar 219
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
5150 eleazar 220
                //$result = $surveyMapper->insert($survey);
221
 
222
                if($surveyMapper->insert($survey)) {
223
                    $survey = $surveyMapper->fetchOne($survey->id);
224
 
225
                    $jobDescription = new SurveyJobDescription();
226
                    $skill = new SurveySkill();
227
                    $industry = new SurveyIndustry();
228
                    $language = new SurveyLanguage();
229
 
230
                    if(!empty($dataPost['job_description_id'])){
231
 
232
                       // print_r($dataPost['job_description_id']);
233
 
234
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
235
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
236
 
237
                        $ok = true;
238
 
239
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
240
 
241
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
242
 
243
 
244
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
245
 
246
                           // print_r($jobDescription);
247
                            //print_r($currentCompany);
248
 
249
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
250
                                $record = new SurveyJobDescription();
251
                                $record->job_description_id = $jobDescription->id;
252
                                $record->survey_id = $survey->id;
253
 
254
 
255
 
256
                                $result = $surveyJobDescriptionMapper->insert($record);
257
                                $ok = $ok && $result;
258
                            }
259
                        }
260
 
261
                        if($ok){
262
 
263
                        }
264
                    }
265
 
266
                    $data = [
267
                        'success' => true,
268
                        'data' => 'LABEL_RECORD_ADDED'
269
                    ];
270
                    //      return new JsonModel($data);
271
 
272
                    if(!empty($dataPost['skill_id'])){
273
 
274
                        // print_r($dataPost['skill_id']);
275
 
276
                         $skillMapper = SkillMapper::getInstance($this->adapter);
277
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
278
 
279
                         $ok = true;
280
 
281
                         foreach($dataPost['skill_id'] as $skillUuid) {
282
 
283
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
284
 
285
 
286
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
287
 
288
                            // print_r($skill);
289
                            //print_r($currentCompany);
290
 
291
                            //if($skill && $skill->company_id == $currentCompany->id) {
292
                                $record = new SurveySkill();
293
                                $record->skill_id = $skill->id;
294
                                $record->survey_id = $survey->id;
295
 
296
 
297
                                $result = $surveySkillMapper->insert($record);
298
                                $ok = $ok && $result;
299
                            // }
300
                         }
301
 
302
                         if($ok){
303
 
304
                         }
305
                     }
306
 
307
                    $data = [
308
                        'success' => true,
309
                        'data' => 'test'
310
                    ];
311
                    //      return new JsonModel($data); exit;
312
 
313
                    if(!empty($dataPost['industry_id'])){
314
 
315
                        // print_r($dataPost['industry_id']);
316
 
317
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
318
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
319
 
320
                         $ok = true;
321
 
322
                         foreach($dataPost['industry_id'] as $industryUuid) {
323
 
324
                            // echo '$industryUuid = ' . $industryUuid ;
325
 
326
 
327
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
328
 
329
                            // print_r($industry);
330
                             //print_r($currentCompany);
331
 
332
                             //if($industry && $industry->company_id == $currentCompany->id) {
333
                                 $record = new SurveyIndustry();
334
                                 $record->industry_id = $industry->id;
335
                                 $record->survey_id = $survey->id;
336
 
337
 
338
 
339
                                 $result = $surveyIndustryMapper->insert($record);
340
                                 $ok = $ok && $result;
341
                             //}
342
                         }
343
 
344
                         if($ok){
345
 
346
                         }
347
                     }
348
 
349
                    $data = [
350
                        'success' => true,
351
                        'data' => 'test industry'
352
                    ];
353
                    // return new JsonModel($data); exit;
354
 
355
                    if(!empty($dataPost['language_id'])){
356
 
357
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
358
 
359
                        $ok = true;
360
 
361
                        foreach($dataPost['language_id'] as $language_id) {
362
 
363
                                $record = new SurveyLanguage();
364
                                $record->language_id = $language_id;
365
                                $record->survey_id = $survey->id;
366
 
367
 
368
                                $result = $surveyLanguageMapper->insert($record);
369
                                $ok = $ok && $result;
370
                           //}
371
                        }
372
                          if($ok){
373
 
374
                        }
375
                     }
376
 
377
                    $data = [
378
                        'success' => true,
379
                        'data' => 'LABEL_RECORD_ADDED'
380
                    ];
381
 
382
                } else {
383
                    $data = [
384
                        'success'   => false,
385
                        'data'      => $surveyMapper->getError()
386
                    ];
387
                }
388
 
5383 eleazar 389
 
4579 eleazar 390
                return new JsonModel($data);
391
            } else {
392
                $messages = [];
393
                $form_messages = (array) $form->getMessages();
394
                foreach ($form_messages as $fieldname => $field_messages) {
395
 
396
                    $messages[$fieldname] = array_values($field_messages);
397
                }
398
 
399
                return new JsonModel([
400
                    'success' => false,
401
                    'data' => $messages
402
                ]);
403
            }
404
        } else {
405
            $data = [
406
                'success' => false,
407
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
408
            ];
409
 
410
            return new JsonModel($data);
411
        }
412
 
413
        return new JsonModel($data);
414
    }
415
 
4856 eleazar 416
    public function segmentAction() {
4855 eleazar 417
        $request = $this->getRequest();
418
        $currentUserPlugin = $this->plugin('currentUserPlugin');
419
        $currentCompany = $currentUserPlugin->getCompany();
420
        $currentUser = $currentUserPlugin->getUser();
421
 
422
        $request = $this->getRequest();
423
        $uuid = $this->params()->fromRoute('id');
424
 
425
 
426
        if (!$uuid) {
427
            $data = [
428
                'success' => false,
429
                'data' => 'ERROR_INVALID_PARAMETER'
430
            ];
431
 
432
            return new JsonModel($data);
433
        }
434
 
435
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
436
        $survey = $surveyMapper->fetchOneByUuid($uuid);
437
        if (!$survey) {
438
            $data = [
439
                'success' => false,
440
                'data' => 'ERROR_RECORD_NOT_FOUND'
441
            ];
442
 
443
            return new JsonModel($data);
444
        }
445
 
446
        if ($survey->company_id != $currentCompany->id) {
447
            return new JsonModel([
448
                'success' => false,
449
                'data' => 'ERROR_UNAUTHORIZED'
450
            ]);
451
        }
452
 
4863 eleazar 453
        if($request->isPost()){
4865 eleazar 454
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 455
 
456
 
4855 eleazar 457
            $dataPost = $request->getPost()->toArray();
5006 eleazar 458
            $form->setData($dataPost);
5019 efrain 459
 
4855 eleazar 460
 
5020 efrain 461
 
4855 eleazar 462
            if ($form->isValid()) {
463
                $dataPost = (array) $form->getData();
5029 efrain 464
 
465
                /*
4855 eleazar 466
 
467
                $location = new Location();
468
                $hydrator->hydrate($dataPost, $location);
469
 
470
                $locationMapper= LocationMapper::getInstance($this->adapter);
471
                $resultLocation = $locationMapper->insert($location);
472
 
473
                if (!$resultLocation) {
474
                    return new JsonModel([
475
                        'success'   => false,
476
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
477
                    ]);
478
                }
5029 efrain 479
                */
4991 eleazar 480
 
4855 eleazar 481
                $jobDescription = new SurveyJobDescription();
5074 eleazar 482
                $skill = new SurveySkill();
4855 eleazar 483
                $industry = new SurveyIndustry();
5074 eleazar 484
                $language = new SurveyLanguage();
5064 eleazar 485
 
5031 efrain 486
                if(!empty($dataPost['job_description_id'])){
487
 
5032 efrain 488
                   // print_r($dataPost['job_description_id']);
5031 efrain 489
 
5026 efrain 490
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
491
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
492
 
493
                    $ok = true;
494
 
495
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
496
 
5032 efrain 497
                       // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
5026 efrain 498
 
499
 
500
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5032 efrain 501
 
5033 efrain 502
                       // print_r($jobDescription);
503
                        //print_r($currentCompany);
5032 efrain 504
 
5034 efrain 505
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 506
                            $record = new SurveyJobDescription();
507
                            $record->job_description_id = $jobDescription->id;
508
                            $record->survey_id = $survey->id;
509
 
5034 efrain 510
 
5033 efrain 511
 
5026 efrain 512
                            $result = $surveyJobDescriptionMapper->insert($record);
513
                            $ok = $ok && $result;
4985 eleazar 514
                        }
4916 eleazar 515
                    }
5026 efrain 516
 
517
                    if($ok){
5028 efrain 518
 
5026 efrain 519
                    }
4883 eleazar 520
                }
5028 efrain 521
 
522
                $data = [
523
                    'success' => true,
524
                    'data' => 'LABEL_RECORD_ADDED'
525
                ];
5065 eleazar 526
              //  return new JsonModel($data);
5063 eleazar 527
 
5074 eleazar 528
                if(!empty($dataPost['skill_id'])){
5042 eleazar 529
 
5074 eleazar 530
                    // print_r($dataPost['skill_id']);
5042 eleazar 531
 
5074 eleazar 532
                     $skillMapper = SkillMapper::getInstance($this->adapter);
533
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 534
 
535
                     $ok = true;
536
 
5074 eleazar 537
                     foreach($dataPost['skill_id'] as $skillUuid) {
5042 eleazar 538
 
539
                        // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
540
 
541
 
5074 eleazar 542
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 543
 
5074 eleazar 544
                        // print_r($skill);
5058 eleazar 545
                        //print_r($currentCompany);
5042 eleazar 546
 
5074 eleazar 547
                        //if($skill && $skill->company_id == $currentCompany->id) {
548
                            $record = new SurveySkill();
549
                            $record->skill_id = $skill->id;
5053 eleazar 550
                            $record->survey_id = $survey->id;
551
 
552
 
5074 eleazar 553
                            $result = $surveySkillMapper->insert($record);
5053 eleazar 554
                            $ok = $ok && $result;
5052 eleazar 555
                        // }
5042 eleazar 556
                     }
557
 
558
                     if($ok){
559
 
560
                     }
561
                 }
562
 
563
                $data = [
564
                    'success' => true,
5062 eleazar 565
                    'data' => 'test'
5042 eleazar 566
                ];
5066 eleazar 567
              //  return new JsonModel($data); exit;
5064 eleazar 568
 
5042 eleazar 569
                if(!empty($dataPost['industry_id'])){
570
 
571
                    // print_r($dataPost['industry_id']);
572
 
573
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
574
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
575
 
576
                     $ok = true;
577
 
578
                     foreach($dataPost['industry_id'] as $industryUuid) {
579
 
580
                        // echo '$industryUuid = ' . $industryUuid ;
581
 
582
 
583
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
584
 
585
                        // print_r($industry);
586
                         //print_r($currentCompany);
587
 
5050 eleazar 588
                         //if($industry && $industry->company_id == $currentCompany->id) {
5042 eleazar 589
                             $record = new SurveyIndustry();
590
                             $record->industry_id = $industry->id;
591
                             $record->survey_id = $survey->id;
592
 
593
 
594
 
595
                             $result = $surveyIndustryMapper->insert($record);
596
                             $ok = $ok && $result;
5050 eleazar 597
                         //}
5042 eleazar 598
                     }
599
 
600
                     if($ok){
601
 
602
                     }
603
                 }
604
 
605
                $data = [
606
                    'success' => true,
5066 eleazar 607
                    'data' => 'test industry'
5042 eleazar 608
                ];
5067 eleazar 609
               // return new JsonModel($data); exit;
5074 eleazar 610
 
5083 eleazar 611
                if(!empty($dataPost['language_id'])){
5042 eleazar 612
 
5074 eleazar 613
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 614
 
615
                    $ok = true;
616
 
5085 eleazar 617
                    foreach($dataPost['language_id'] as $language_id) {
5042 eleazar 618
 
5074 eleazar 619
                            $record = new SurveyLanguage();
5085 eleazar 620
                            $record->language_id = $language_id;
5056 eleazar 621
                            $record->survey_id = $survey->id;
622
 
623
 
5074 eleazar 624
                            $result = $surveyLanguageMapper->insert($record);
5056 eleazar 625
                            $ok = $ok && $result;
626
                       //}
627
                    }
628
                      if($ok){
629
 
630
                    }
5042 eleazar 631
                 }
632
 
633
                $data = [
634
                    'success' => true,
635
                    'data' => 'LABEL_RECORD_ADDED'
636
                ];
5074 eleazar 637
               // return new JsonModel($data); exit;
638
 
5060 eleazar 639
               // return new JsonModel($data);
4855 eleazar 640
            } else {
5013 eleazar 641
                $messages = [];
4855 eleazar 642
                $form_messages = (array) $form->getMessages();
643
                foreach ($form_messages as $fieldname => $field_messages) {
644
 
645
                    $messages[$fieldname] = array_values($field_messages);
646
                }
647
 
648
                return new JsonModel([
649
                    'success' => false,
5011 eleazar 650
                    'data' => $messages
5013 eleazar 651
                ]);
4855 eleazar 652
            }
653
        } else {
654
            $data = [
655
                'success' => false,
656
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
657
            ];
658
 
659
            return new JsonModel($data);
660
        }
661
 
5060 eleazar 662
       return new JsonModel($data);
4855 eleazar 663
 
664
    }
665
 
4579 eleazar 666
    public function editAction() {
667
        $request = $this->getRequest();
668
        $currentUserPlugin = $this->plugin('currentUserPlugin');
669
        $currentCompany = $currentUserPlugin->getCompany();
670
        $currentUser = $currentUserPlugin->getUser();
671
 
672
        $request = $this->getRequest();
673
        $uuid = $this->params()->fromRoute('id');
674
 
675
 
676
        if (!$uuid) {
677
            $data = [
678
                'success' => false,
679
                'data' => 'ERROR_INVALID_PARAMETER'
680
            ];
681
 
682
            return new JsonModel($data);
683
        }
684
 
685
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
686
        $survey = $surveyMapper->fetchOneByUuid($uuid);
687
 
688
        if (!$survey) {
689
            $data = [
690
                'success' => false,
691
                'data' => 'ERROR_RECORD_NOT_FOUND'
692
            ];
693
 
694
            return new JsonModel($data);
695
        }
696
 
697
        if ($survey->company_id != $currentCompany->id) {
698
            return new JsonModel([
699
                'success' => false,
700
                'data' => 'ERROR_UNAUTHORIZED'
701
            ]);
702
        }
703
 
704
 
705
        if ($request->isPost()) {
706
            $form = new SurveyForm();
707
            $dataPost = $request->getPost()->toArray();
708
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
709
 
710
            $form->setData($dataPost);
711
 
712
            if ($form->isValid()) {
713
                $dataPost = (array) $form->getData();
714
 
715
                $hydrator = new ObjectPropertyHydrator();
716
                $hydrator->hydrate($dataPost, $survey);
717
 
718
                if (!$survey->status) {
719
                    $survey->status = Survey::STATUS_INACTIVE;
720
                }
4749 eleazar 721
 
722
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
723
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
724
                $survey->form_id = $surveyForm->id;
725
 
4579 eleazar 726
                $result = $surveyMapper->update($survey);
727
 
728
                if ($result) {
729
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
730
                    $data = [
731
                        'success' => true,
732
                        'id' => $survey->id,
733
                        'action_edit' => $this->url()->fromRoute('survey/edit', ['id' => $survey->uuid]),
734
                        'data' => 'LABEL_RECORD_UPDATED'
735
                    ];
736
                } else {
737
                    $data = [
738
                        'success' => false,
739
                        'data' => $surveyMapper->getError()
740
                    ];
741
                }
742
 
743
                return new JsonModel($data);
744
            } else {
745
                $messages = [];
746
                $form_messages = (array) $form->getMessages();
747
                foreach ($form_messages as $fieldname => $field_messages) {
748
                    $messages[$fieldname] = array_values($field_messages);
749
                }
750
 
751
                return new JsonModel([
752
                    'success' => false,
753
                    'data' => $messages
754
                ]);
755
            }
756
        } else if ($request->isGet()) {
757
            $hydrator = new ObjectPropertyHydrator();
758
 
4749 eleazar 759
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
760
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
761
 
4579 eleazar 762
            $data = [
763
                'success' => true,
764
                'data' => [
4653 eleazar 765
                    'name' => $survey->name,
4749 eleazar 766
                    'form_id' => $surveyForm->uuid,
4653 eleazar 767
                    'target' => $survey->target,
768
                    'identity' => $survey->identity,
769
                    'since_date' => $survey->since_date,
770
                    'last_date' => $survey->last_date,
771
                    'status' => $survey->status,
4579 eleazar 772
                ]
773
            ];
774
 
775
            return new JsonModel($data);
776
        } else {
777
            $data = [
778
                'success' => false,
779
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
780
            ];
781
 
782
            return new JsonModel($data);
783
        }
784
 
785
        return new JsonModel($data);
786
    }
787
 
788
    public function deleteAction() {
789
        $request = $this->getRequest();
790
        $currentUserPlugin = $this->plugin('currentUserPlugin');
791
        $currentCompany = $currentUserPlugin->getCompany();
792
        $currentUser = $currentUserPlugin->getUser();
793
 
794
        $request = $this->getRequest();
795
        $uuid = $this->params()->fromRoute('id');
796
 
797
        if (!$uuid) {
798
            $data = [
799
                'success' => false,
800
                'data' => 'ERROR_INVALID_PARAMETER'
801
            ];
802
 
803
            return new JsonModel($data);
804
        }
805
 
806
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
807
        $survey = $surveyMapper->fetchOneByUuid($uuid);
808
        if (!$survey) {
809
            $data = [
810
                'success' => false,
811
                'data' => 'ERROR_RECORD_NOT_FOUND'
812
            ];
813
 
814
            return new JsonModel($data);
815
        }
816
 
817
        if ($survey->company_id != $currentCompany->id) {
818
            return new JsonModel([
819
                'success' => false,
820
                'data' => 'ERROR_UNAUTHORIZED'
821
            ]);
822
        }
823
 
824
        if ($request->isPost()) {
825
 
826
            $result = $surveyMapper->delete($survey->id);
827
            if ($result) {
4735 eleazar 828
                //$this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 829
 
830
                $data = [
831
                    'success' => true,
832
                    'data' => 'LABEL_RECORD_DELETED'
833
                ];
834
            } else {
835
 
836
                $data = [
837
                    'success' => false,
838
                    'data' => $surveyMapper->getError()
839
                ];
840
 
841
                return new JsonModel($data);
842
            }
843
        } else {
844
            $data = [
845
                'success' => false,
846
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
847
            ];
848
 
849
            return new JsonModel($data);
850
        }
851
 
852
        return new JsonModel($data);
853
    }
854
 
4384 eleazar 855
}