Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 5085 | Rev 5171 | 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);
5150 eleazar 216
                //$result = $surveyMapper->insert($survey);
217
 
218
                if($surveyMapper->insert($survey)) {
219
                    $survey = $surveyMapper->fetchOne($survey->id);
220
 
221
                    $jobDescription = new SurveyJobDescription();
222
                    $skill = new SurveySkill();
223
                    $industry = new SurveyIndustry();
224
                    $language = new SurveyLanguage();
225
 
226
                    if(!empty($dataPost['job_description_id'])){
227
 
228
                       // print_r($dataPost['job_description_id']);
229
 
230
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
231
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
232
 
233
                        $ok = true;
234
 
235
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
236
 
237
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
238
 
239
 
240
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
241
 
242
                           // print_r($jobDescription);
243
                            //print_r($currentCompany);
244
 
245
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
246
                                $record = new SurveyJobDescription();
247
                                $record->job_description_id = $jobDescription->id;
248
                                $record->survey_id = $survey->id;
249
 
250
 
251
 
252
                                $result = $surveyJobDescriptionMapper->insert($record);
253
                                $ok = $ok && $result;
254
                            }
255
                        }
256
 
257
                        if($ok){
258
 
259
                        }
260
                    }
261
 
262
                    $data = [
263
                        'success' => true,
264
                        'data' => 'LABEL_RECORD_ADDED'
265
                    ];
266
                    //      return new JsonModel($data);
267
 
268
                    if(!empty($dataPost['skill_id'])){
269
 
270
                        // print_r($dataPost['skill_id']);
271
 
272
                         $skillMapper = SkillMapper::getInstance($this->adapter);
273
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
274
 
275
                         $ok = true;
276
 
277
                         foreach($dataPost['skill_id'] as $skillUuid) {
278
 
279
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
280
 
281
 
282
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
283
 
284
                            // print_r($skill);
285
                            //print_r($currentCompany);
286
 
287
                            //if($skill && $skill->company_id == $currentCompany->id) {
288
                                $record = new SurveySkill();
289
                                $record->skill_id = $skill->id;
290
                                $record->survey_id = $survey->id;
291
 
292
 
293
                                $result = $surveySkillMapper->insert($record);
294
                                $ok = $ok && $result;
295
                            // }
296
                         }
297
 
298
                         if($ok){
299
 
300
                         }
301
                     }
302
 
303
                    $data = [
304
                        'success' => true,
305
                        'data' => 'test'
306
                    ];
307
                    //      return new JsonModel($data); exit;
308
 
309
                    if(!empty($dataPost['industry_id'])){
310
 
311
                        // print_r($dataPost['industry_id']);
312
 
313
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
314
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
315
 
316
                         $ok = true;
317
 
318
                         foreach($dataPost['industry_id'] as $industryUuid) {
319
 
320
                            // echo '$industryUuid = ' . $industryUuid ;
321
 
322
 
323
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
324
 
325
                            // print_r($industry);
326
                             //print_r($currentCompany);
327
 
328
                             //if($industry && $industry->company_id == $currentCompany->id) {
329
                                 $record = new SurveyIndustry();
330
                                 $record->industry_id = $industry->id;
331
                                 $record->survey_id = $survey->id;
332
 
333
 
334
 
335
                                 $result = $surveyIndustryMapper->insert($record);
336
                                 $ok = $ok && $result;
337
                             //}
338
                         }
339
 
340
                         if($ok){
341
 
342
                         }
343
                     }
344
 
345
                    $data = [
346
                        'success' => true,
347
                        'data' => 'test industry'
348
                    ];
349
                    // return new JsonModel($data); exit;
350
 
351
                    if(!empty($dataPost['language_id'])){
352
 
353
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
354
 
355
                        $ok = true;
356
 
357
                        foreach($dataPost['language_id'] as $language_id) {
358
 
359
                                $record = new SurveyLanguage();
360
                                $record->language_id = $language_id;
361
                                $record->survey_id = $survey->id;
362
 
363
 
364
                                $result = $surveyLanguageMapper->insert($record);
365
                                $ok = $ok && $result;
366
                           //}
367
                        }
368
                          if($ok){
369
 
370
                        }
371
                     }
372
 
373
                    $data = [
374
                        'success' => true,
375
                        'data' => 'LABEL_RECORD_ADDED'
376
                    ];
377
 
378
                } else {
379
                    $data = [
380
                        'success'   => false,
381
                        'data'      => $surveyMapper->getError()
382
                    ];
383
                }
384
 
4579 eleazar 385
                if ($result) {
4734 eleazar 386
 
4728 eleazar 387
                    if ($result) {
4579 eleazar 388
 
389
                        $data = [
390
                            'success' => true,
391
                            'data' => 'LABEL_RECORD_ADDED'
392
                        ];
393
                    } else {
394
 
395
                        $data = [
396
                            'success' => false,
397
                            'data' => 'ERROR_RECORD_NOT_FOUND'
398
                        ];
399
                    }
400
                } else {
401
                    $data = [
402
                        'success' => false,
403
                        'data' => $surveyMapper->getError()
404
                    ];
405
                }
406
 
407
                return new JsonModel($data);
408
            } else {
409
                $messages = [];
410
                $form_messages = (array) $form->getMessages();
411
                foreach ($form_messages as $fieldname => $field_messages) {
412
 
413
                    $messages[$fieldname] = array_values($field_messages);
414
                }
415
 
416
                return new JsonModel([
417
                    'success' => false,
418
                    'data' => $messages
419
                ]);
420
            }
421
        } else {
422
            $data = [
423
                'success' => false,
424
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
425
            ];
426
 
427
            return new JsonModel($data);
428
        }
429
 
430
        return new JsonModel($data);
431
    }
432
 
4856 eleazar 433
    public function segmentAction() {
4855 eleazar 434
        $request = $this->getRequest();
435
        $currentUserPlugin = $this->plugin('currentUserPlugin');
436
        $currentCompany = $currentUserPlugin->getCompany();
437
        $currentUser = $currentUserPlugin->getUser();
438
 
439
        $request = $this->getRequest();
440
        $uuid = $this->params()->fromRoute('id');
441
 
442
 
443
        if (!$uuid) {
444
            $data = [
445
                'success' => false,
446
                'data' => 'ERROR_INVALID_PARAMETER'
447
            ];
448
 
449
            return new JsonModel($data);
450
        }
451
 
452
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
453
        $survey = $surveyMapper->fetchOneByUuid($uuid);
454
        if (!$survey) {
455
            $data = [
456
                'success' => false,
457
                'data' => 'ERROR_RECORD_NOT_FOUND'
458
            ];
459
 
460
            return new JsonModel($data);
461
        }
462
 
463
        if ($survey->company_id != $currentCompany->id) {
464
            return new JsonModel([
465
                'success' => false,
466
                'data' => 'ERROR_UNAUTHORIZED'
467
            ]);
468
        }
469
 
4863 eleazar 470
        if($request->isPost()){
4865 eleazar 471
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 472
 
473
 
4855 eleazar 474
            $dataPost = $request->getPost()->toArray();
5006 eleazar 475
            $form->setData($dataPost);
5019 efrain 476
 
4855 eleazar 477
 
5020 efrain 478
 
4855 eleazar 479
            if ($form->isValid()) {
480
                $dataPost = (array) $form->getData();
5029 efrain 481
 
482
                /*
4855 eleazar 483
 
484
                $location = new Location();
485
                $hydrator->hydrate($dataPost, $location);
486
 
487
                $locationMapper= LocationMapper::getInstance($this->adapter);
488
                $resultLocation = $locationMapper->insert($location);
489
 
490
                if (!$resultLocation) {
491
                    return new JsonModel([
492
                        'success'   => false,
493
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
494
                    ]);
495
                }
5029 efrain 496
                */
4991 eleazar 497
 
4855 eleazar 498
                $jobDescription = new SurveyJobDescription();
5074 eleazar 499
                $skill = new SurveySkill();
4855 eleazar 500
                $industry = new SurveyIndustry();
5074 eleazar 501
                $language = new SurveyLanguage();
5064 eleazar 502
 
5031 efrain 503
                if(!empty($dataPost['job_description_id'])){
504
 
5032 efrain 505
                   // print_r($dataPost['job_description_id']);
5031 efrain 506
 
5026 efrain 507
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
508
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
509
 
510
                    $ok = true;
511
 
512
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
513
 
5032 efrain 514
                       // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
5026 efrain 515
 
516
 
517
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5032 efrain 518
 
5033 efrain 519
                       // print_r($jobDescription);
520
                        //print_r($currentCompany);
5032 efrain 521
 
5034 efrain 522
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 523
                            $record = new SurveyJobDescription();
524
                            $record->job_description_id = $jobDescription->id;
525
                            $record->survey_id = $survey->id;
526
 
5034 efrain 527
 
5033 efrain 528
 
5026 efrain 529
                            $result = $surveyJobDescriptionMapper->insert($record);
530
                            $ok = $ok && $result;
4985 eleazar 531
                        }
4916 eleazar 532
                    }
5026 efrain 533
 
534
                    if($ok){
5028 efrain 535
 
5026 efrain 536
                    }
4883 eleazar 537
                }
5028 efrain 538
 
539
                $data = [
540
                    'success' => true,
541
                    'data' => 'LABEL_RECORD_ADDED'
542
                ];
5065 eleazar 543
              //  return new JsonModel($data);
5063 eleazar 544
 
5074 eleazar 545
                if(!empty($dataPost['skill_id'])){
5042 eleazar 546
 
5074 eleazar 547
                    // print_r($dataPost['skill_id']);
5042 eleazar 548
 
5074 eleazar 549
                     $skillMapper = SkillMapper::getInstance($this->adapter);
550
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 551
 
552
                     $ok = true;
553
 
5074 eleazar 554
                     foreach($dataPost['skill_id'] as $skillUuid) {
5042 eleazar 555
 
556
                        // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
557
 
558
 
5074 eleazar 559
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 560
 
5074 eleazar 561
                        // print_r($skill);
5058 eleazar 562
                        //print_r($currentCompany);
5042 eleazar 563
 
5074 eleazar 564
                        //if($skill && $skill->company_id == $currentCompany->id) {
565
                            $record = new SurveySkill();
566
                            $record->skill_id = $skill->id;
5053 eleazar 567
                            $record->survey_id = $survey->id;
568
 
569
 
5074 eleazar 570
                            $result = $surveySkillMapper->insert($record);
5053 eleazar 571
                            $ok = $ok && $result;
5052 eleazar 572
                        // }
5042 eleazar 573
                     }
574
 
575
                     if($ok){
576
 
577
                     }
578
                 }
579
 
580
                $data = [
581
                    'success' => true,
5062 eleazar 582
                    'data' => 'test'
5042 eleazar 583
                ];
5066 eleazar 584
              //  return new JsonModel($data); exit;
5064 eleazar 585
 
5042 eleazar 586
                if(!empty($dataPost['industry_id'])){
587
 
588
                    // print_r($dataPost['industry_id']);
589
 
590
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
591
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
592
 
593
                     $ok = true;
594
 
595
                     foreach($dataPost['industry_id'] as $industryUuid) {
596
 
597
                        // echo '$industryUuid = ' . $industryUuid ;
598
 
599
 
600
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
601
 
602
                        // print_r($industry);
603
                         //print_r($currentCompany);
604
 
5050 eleazar 605
                         //if($industry && $industry->company_id == $currentCompany->id) {
5042 eleazar 606
                             $record = new SurveyIndustry();
607
                             $record->industry_id = $industry->id;
608
                             $record->survey_id = $survey->id;
609
 
610
 
611
 
612
                             $result = $surveyIndustryMapper->insert($record);
613
                             $ok = $ok && $result;
5050 eleazar 614
                         //}
5042 eleazar 615
                     }
616
 
617
                     if($ok){
618
 
619
                     }
620
                 }
621
 
622
                $data = [
623
                    'success' => true,
5066 eleazar 624
                    'data' => 'test industry'
5042 eleazar 625
                ];
5067 eleazar 626
               // return new JsonModel($data); exit;
5074 eleazar 627
 
5083 eleazar 628
                if(!empty($dataPost['language_id'])){
5042 eleazar 629
 
5074 eleazar 630
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 631
 
632
                    $ok = true;
633
 
5085 eleazar 634
                    foreach($dataPost['language_id'] as $language_id) {
5042 eleazar 635
 
5074 eleazar 636
                            $record = new SurveyLanguage();
5085 eleazar 637
                            $record->language_id = $language_id;
5056 eleazar 638
                            $record->survey_id = $survey->id;
639
 
640
 
5074 eleazar 641
                            $result = $surveyLanguageMapper->insert($record);
5056 eleazar 642
                            $ok = $ok && $result;
643
                       //}
644
                    }
645
                      if($ok){
646
 
647
                    }
5042 eleazar 648
                 }
649
 
650
                $data = [
651
                    'success' => true,
652
                    'data' => 'LABEL_RECORD_ADDED'
653
                ];
5074 eleazar 654
               // return new JsonModel($data); exit;
655
 
5060 eleazar 656
               // return new JsonModel($data);
4855 eleazar 657
            } else {
5013 eleazar 658
                $messages = [];
4855 eleazar 659
                $form_messages = (array) $form->getMessages();
660
                foreach ($form_messages as $fieldname => $field_messages) {
661
 
662
                    $messages[$fieldname] = array_values($field_messages);
663
                }
664
 
665
                return new JsonModel([
666
                    'success' => false,
5011 eleazar 667
                    'data' => $messages
5013 eleazar 668
                ]);
4855 eleazar 669
            }
670
        } else {
671
            $data = [
672
                'success' => false,
673
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
674
            ];
675
 
676
            return new JsonModel($data);
677
        }
678
 
5060 eleazar 679
       return new JsonModel($data);
4855 eleazar 680
 
681
    }
682
 
4579 eleazar 683
    public function editAction() {
684
        $request = $this->getRequest();
685
        $currentUserPlugin = $this->plugin('currentUserPlugin');
686
        $currentCompany = $currentUserPlugin->getCompany();
687
        $currentUser = $currentUserPlugin->getUser();
688
 
689
        $request = $this->getRequest();
690
        $uuid = $this->params()->fromRoute('id');
691
 
692
 
693
        if (!$uuid) {
694
            $data = [
695
                'success' => false,
696
                'data' => 'ERROR_INVALID_PARAMETER'
697
            ];
698
 
699
            return new JsonModel($data);
700
        }
701
 
702
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
703
        $survey = $surveyMapper->fetchOneByUuid($uuid);
704
 
705
        if (!$survey) {
706
            $data = [
707
                'success' => false,
708
                'data' => 'ERROR_RECORD_NOT_FOUND'
709
            ];
710
 
711
            return new JsonModel($data);
712
        }
713
 
714
        if ($survey->company_id != $currentCompany->id) {
715
            return new JsonModel([
716
                'success' => false,
717
                'data' => 'ERROR_UNAUTHORIZED'
718
            ]);
719
        }
720
 
721
 
722
        if ($request->isPost()) {
723
            $form = new SurveyForm();
724
            $dataPost = $request->getPost()->toArray();
725
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
726
 
727
            $form->setData($dataPost);
728
 
729
            if ($form->isValid()) {
730
                $dataPost = (array) $form->getData();
731
 
732
                $hydrator = new ObjectPropertyHydrator();
733
                $hydrator->hydrate($dataPost, $survey);
734
 
735
                if (!$survey->status) {
736
                    $survey->status = Survey::STATUS_INACTIVE;
737
                }
4749 eleazar 738
 
739
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
740
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
741
                $survey->form_id = $surveyForm->id;
742
 
4579 eleazar 743
                $result = $surveyMapper->update($survey);
744
 
745
                if ($result) {
746
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
747
                    $data = [
748
                        'success' => true,
749
                        'id' => $survey->id,
750
                        'action_edit' => $this->url()->fromRoute('survey/edit', ['id' => $survey->uuid]),
751
                        'data' => 'LABEL_RECORD_UPDATED'
752
                    ];
753
                } else {
754
                    $data = [
755
                        'success' => false,
756
                        'data' => $surveyMapper->getError()
757
                    ];
758
                }
759
 
760
                return new JsonModel($data);
761
            } else {
762
                $messages = [];
763
                $form_messages = (array) $form->getMessages();
764
                foreach ($form_messages as $fieldname => $field_messages) {
765
                    $messages[$fieldname] = array_values($field_messages);
766
                }
767
 
768
                return new JsonModel([
769
                    'success' => false,
770
                    'data' => $messages
771
                ]);
772
            }
773
        } else if ($request->isGet()) {
774
            $hydrator = new ObjectPropertyHydrator();
775
 
4749 eleazar 776
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
777
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
778
 
4579 eleazar 779
            $data = [
780
                'success' => true,
781
                'data' => [
4653 eleazar 782
                    'name' => $survey->name,
4749 eleazar 783
                    'form_id' => $surveyForm->uuid,
4653 eleazar 784
                    'target' => $survey->target,
785
                    'identity' => $survey->identity,
786
                    'since_date' => $survey->since_date,
787
                    'last_date' => $survey->last_date,
788
                    'status' => $survey->status,
4579 eleazar 789
                ]
790
            ];
791
 
792
            return new JsonModel($data);
793
        } else {
794
            $data = [
795
                'success' => false,
796
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
797
            ];
798
 
799
            return new JsonModel($data);
800
        }
801
 
802
        return new JsonModel($data);
803
    }
804
 
805
    public function deleteAction() {
806
        $request = $this->getRequest();
807
        $currentUserPlugin = $this->plugin('currentUserPlugin');
808
        $currentCompany = $currentUserPlugin->getCompany();
809
        $currentUser = $currentUserPlugin->getUser();
810
 
811
        $request = $this->getRequest();
812
        $uuid = $this->params()->fromRoute('id');
813
 
814
        if (!$uuid) {
815
            $data = [
816
                'success' => false,
817
                'data' => 'ERROR_INVALID_PARAMETER'
818
            ];
819
 
820
            return new JsonModel($data);
821
        }
822
 
823
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
824
        $survey = $surveyMapper->fetchOneByUuid($uuid);
825
        if (!$survey) {
826
            $data = [
827
                'success' => false,
828
                'data' => 'ERROR_RECORD_NOT_FOUND'
829
            ];
830
 
831
            return new JsonModel($data);
832
        }
833
 
834
        if ($survey->company_id != $currentCompany->id) {
835
            return new JsonModel([
836
                'success' => false,
837
                'data' => 'ERROR_UNAUTHORIZED'
838
            ]);
839
        }
840
 
841
        if ($request->isPost()) {
842
 
843
            $result = $surveyMapper->delete($survey->id);
844
            if ($result) {
4735 eleazar 845
                //$this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 846
 
847
                $data = [
848
                    'success' => true,
849
                    'data' => 'LABEL_RECORD_DELETED'
850
                ];
851
            } else {
852
 
853
                $data = [
854
                    'success' => false,
855
                    'data' => $surveyMapper->getError()
856
                ];
857
 
858
                return new JsonModel($data);
859
            }
860
        } else {
861
            $data = [
862
                'success' => false,
863
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
864
            ];
865
 
866
            return new JsonModel($data);
867
        }
868
 
869
        return new JsonModel($data);
870
    }
871
 
4384 eleazar 872
}