Proyectos de Subversion LeadersLinked - Backend

Rev

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