Proyectos de Subversion LeadersLinked - Backend

Rev

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