Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 12025 | Rev 12027 | 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();
12026 eleazar 193
        $actual_date = new DateTime(date("Y-m-d"));
12024 eleazar 194
        return new JsonModel([
195
            'success' => false,
196
            'data' => $actual_date
197
        ]);
4579 eleazar 198
        $request = $this->getRequest();
199
 
200
        if ($request->isPost()) {
201
 
202
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4672 eleazar 203
 
4579 eleazar 204
            $dataPost = $request->getPost()->toArray();
4661 eleazar 205
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
4579 eleazar 206
 
6659 eleazar 207
 
6660 eleazar 208
            if($dataPost['since_date'] > $dataPost['last_date']){
6714 eleazar 209
                new JsonModel([
6659 eleazar 210
                    'success' => false,
211
                    'data' => 'ERROR_UNAUTHORIZED'
212
                ]);
213
            }
214
 
12023 eleazar 215
            if($dataPost['since_date'] > $actual_date){
216
                new JsonModel([
217
                    'success' => false,
218
                    'data' => 'ERROR_Fecha Actual'
219
                ]);
220
            }
221
 
4579 eleazar 222
            $form->setData($dataPost);
223
 
224
            if ($form->isValid()) {
225
                $dataPost = (array) $form->getData();
226
 
227
                $hydrator = new ObjectPropertyHydrator();
6376 eleazar 228
 
4579 eleazar 229
                $survey = new Survey();
230
                $hydrator->hydrate($dataPost, $survey);
231
 
232
                if (!$survey->status) {
233
                    $survey->status = Survey::STATUS_INACTIVE;
234
                }
235
                $survey->company_id = $currentCompany->id;
236
 
4677 eleazar 237
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
238
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
239
                $survey->form_id = $surveyForm->id;
4579 eleazar 240
 
4724 eleazar 241
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
5150 eleazar 242
                //$result = $surveyMapper->insert($survey);
243
 
244
                if($surveyMapper->insert($survey)) {
245
                    $survey = $surveyMapper->fetchOne($survey->id);
246
 
247
                    $jobDescription = new SurveyJobDescription();
248
                    $skill = new SurveySkill();
249
                    $industry = new SurveyIndustry();
250
                    $language = new SurveyLanguage();
251
 
6627 eleazar 252
                    if(!empty($dataPost['location_search'])){
6376 eleazar 253
 
6627 eleazar 254
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
6376 eleazar 255
 
6627 eleazar 256
                        $ok = true;
257
 
258
                        $formatted_address = $dataPost['formatted_address'];
259
                        $city1 = $dataPost['city1'];
260
                        $city2 = $dataPost['city2'];
261
                        $address1 = $dataPost['address1'];
262
                        $address2 = $dataPost['address2'];
263
                        $country = $dataPost['country'];
264
                        $latitude = $dataPost['latitude'];
265
                        $longitude = $dataPost['longitude'];
266
                        $postal_code = $dataPost['postal_code'];
267
                        $state = $dataPost['state'];
268
 
269
 
270
                        $record = new SurveyLocation();
271
                        $record->formatted_address = $formatted_address;
272
                        $record->city1 = $city1;
273
                        $record->city2 = $city2;
274
                        $record->address1 = $address1;
275
                        $record->address2 = $address2;
276
                        $record->country = $country;
277
                        $record->latitude = $latitude;
278
                        $record->longitude = $longitude;
279
                        $record->postal_code = $postal_code;
280
                        $record->state = $state;
281
                        $record->survey_id = $survey->id;
282
                        $result = $surveyLocationMapper->insert($record);
283
                        $ok = $ok && $result;
284
                           //}
285
                          if($ok){
6376 eleazar 286
 
6627 eleazar 287
                        }
288
                    }
6376 eleazar 289
 
5150 eleazar 290
                    if(!empty($dataPost['job_description_id'])){
291
 
292
                       // print_r($dataPost['job_description_id']);
293
 
294
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
295
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
296
 
297
                        $ok = true;
298
 
299
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
300
 
301
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
302
 
303
 
304
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
305
 
306
                           // print_r($jobDescription);
307
                            //print_r($currentCompany);
308
 
309
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
310
                                $record = new SurveyJobDescription();
311
                                $record->job_description_id = $jobDescription->id;
312
                                $record->survey_id = $survey->id;
313
 
314
 
315
 
316
                                $result = $surveyJobDescriptionMapper->insert($record);
317
                                $ok = $ok && $result;
318
                            }
319
                        }
320
 
321
                        if($ok){
322
 
323
                        }
324
                    }
325
 
326
                    $data = [
327
                        'success' => true,
328
                        'data' => 'LABEL_RECORD_ADDED'
329
                    ];
330
                    //      return new JsonModel($data);
331
 
332
                    if(!empty($dataPost['skill_id'])){
333
 
334
                        // print_r($dataPost['skill_id']);
335
 
336
                         $skillMapper = SkillMapper::getInstance($this->adapter);
337
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
338
 
339
                         $ok = true;
340
 
341
                         foreach($dataPost['skill_id'] as $skillUuid) {
342
 
343
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
344
 
345
 
346
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
347
 
348
                            // print_r($skill);
349
                            //print_r($currentCompany);
350
 
351
                            //if($skill && $skill->company_id == $currentCompany->id) {
352
                                $record = new SurveySkill();
353
                                $record->skill_id = $skill->id;
354
                                $record->survey_id = $survey->id;
355
 
356
 
357
                                $result = $surveySkillMapper->insert($record);
358
                                $ok = $ok && $result;
359
                            // }
360
                         }
361
 
362
                         if($ok){
363
 
364
                         }
365
                     }
366
 
367
                    $data = [
368
                        'success' => true,
369
                        'data' => 'test'
370
                    ];
371
                    //      return new JsonModel($data); exit;
372
 
373
                    if(!empty($dataPost['industry_id'])){
374
 
375
                        // print_r($dataPost['industry_id']);
376
 
377
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
378
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
379
 
380
                         $ok = true;
381
 
382
                         foreach($dataPost['industry_id'] as $industryUuid) {
383
 
384
                            // echo '$industryUuid = ' . $industryUuid ;
385
 
386
 
387
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
388
 
389
                            // print_r($industry);
390
                             //print_r($currentCompany);
391
 
392
                             //if($industry && $industry->company_id == $currentCompany->id) {
393
                                 $record = new SurveyIndustry();
394
                                 $record->industry_id = $industry->id;
395
                                 $record->survey_id = $survey->id;
396
 
397
 
398
 
399
                                 $result = $surveyIndustryMapper->insert($record);
400
                                 $ok = $ok && $result;
401
                             //}
402
                         }
403
 
404
                         if($ok){
405
 
406
                         }
407
                     }
408
 
409
                    $data = [
410
                        'success' => true,
411
                        'data' => 'test industry'
412
                    ];
413
                    // return new JsonModel($data); exit;
414
 
415
                    if(!empty($dataPost['language_id'])){
416
 
417
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
418
 
419
                        $ok = true;
420
 
421
                        foreach($dataPost['language_id'] as $language_id) {
422
 
423
                                $record = new SurveyLanguage();
424
                                $record->language_id = $language_id;
425
                                $record->survey_id = $survey->id;
426
 
427
 
428
                                $result = $surveyLanguageMapper->insert($record);
429
                                $ok = $ok && $result;
430
                           //}
431
                        }
432
                          if($ok){
433
 
434
                        }
435
                     }
436
 
437
                    $data = [
438
                        'success' => true,
439
                        'data' => 'LABEL_RECORD_ADDED'
440
                    ];
441
 
442
                } else {
443
                    $data = [
444
                        'success'   => false,
445
                        'data'      => $surveyMapper->getError()
446
                    ];
447
                }
448
 
5383 eleazar 449
 
4579 eleazar 450
                return new JsonModel($data);
451
            } else {
452
                $messages = [];
453
                $form_messages = (array) $form->getMessages();
454
                foreach ($form_messages as $fieldname => $field_messages) {
455
 
456
                    $messages[$fieldname] = array_values($field_messages);
457
                }
458
 
459
                return new JsonModel([
460
                    'success' => false,
461
                    'data' => $messages
462
                ]);
463
            }
464
        } else {
465
            $data = [
466
                'success' => false,
467
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
468
            ];
469
 
470
            return new JsonModel($data);
471
        }
472
 
473
        return new JsonModel($data);
474
    }
475
 
4856 eleazar 476
    public function segmentAction() {
4855 eleazar 477
        $request = $this->getRequest();
478
        $currentUserPlugin = $this->plugin('currentUserPlugin');
479
        $currentCompany = $currentUserPlugin->getCompany();
480
        $currentUser = $currentUserPlugin->getUser();
481
 
482
        $request = $this->getRequest();
483
        $uuid = $this->params()->fromRoute('id');
484
 
485
 
486
        if (!$uuid) {
487
            $data = [
488
                'success' => false,
489
                'data' => 'ERROR_INVALID_PARAMETER'
490
            ];
491
 
492
            return new JsonModel($data);
493
        }
494
 
495
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
496
        $survey = $surveyMapper->fetchOneByUuid($uuid);
497
        if (!$survey) {
498
            $data = [
499
                'success' => false,
500
                'data' => 'ERROR_RECORD_NOT_FOUND'
501
            ];
502
 
503
            return new JsonModel($data);
504
        }
505
 
506
        if ($survey->company_id != $currentCompany->id) {
507
            return new JsonModel([
508
                'success' => false,
509
                'data' => 'ERROR_UNAUTHORIZED'
510
            ]);
511
        }
512
 
4863 eleazar 513
        if($request->isPost()){
4865 eleazar 514
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 515
 
516
 
4855 eleazar 517
            $dataPost = $request->getPost()->toArray();
5006 eleazar 518
            $form->setData($dataPost);
5019 efrain 519
 
4855 eleazar 520
 
5020 efrain 521
 
4855 eleazar 522
            if ($form->isValid()) {
523
                $dataPost = (array) $form->getData();
5029 efrain 524
 
525
                /*
4855 eleazar 526
 
527
                $location = new Location();
528
                $hydrator->hydrate($dataPost, $location);
529
 
530
                $locationMapper= LocationMapper::getInstance($this->adapter);
531
                $resultLocation = $locationMapper->insert($location);
532
 
533
                if (!$resultLocation) {
534
                    return new JsonModel([
535
                        'success'   => false,
536
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
537
                    ]);
538
                }
5029 efrain 539
                */
4991 eleazar 540
 
4855 eleazar 541
                $jobDescription = new SurveyJobDescription();
5074 eleazar 542
                $skill = new SurveySkill();
4855 eleazar 543
                $industry = new SurveyIndustry();
5074 eleazar 544
                $language = new SurveyLanguage();
5064 eleazar 545
 
5031 efrain 546
                if(!empty($dataPost['job_description_id'])){
547
 
5032 efrain 548
                   // print_r($dataPost['job_description_id']);
5031 efrain 549
 
5026 efrain 550
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
551
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
552
 
553
                    $ok = true;
554
 
555
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
556
 
5032 efrain 557
                       // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
5026 efrain 558
 
559
 
560
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5032 efrain 561
 
5033 efrain 562
                       // print_r($jobDescription);
563
                        //print_r($currentCompany);
5032 efrain 564
 
5034 efrain 565
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 566
                            $record = new SurveyJobDescription();
567
                            $record->job_description_id = $jobDescription->id;
568
                            $record->survey_id = $survey->id;
569
 
5034 efrain 570
 
5033 efrain 571
 
5026 efrain 572
                            $result = $surveyJobDescriptionMapper->insert($record);
573
                            $ok = $ok && $result;
4985 eleazar 574
                        }
4916 eleazar 575
                    }
5026 efrain 576
 
577
                    if($ok){
5028 efrain 578
 
5026 efrain 579
                    }
4883 eleazar 580
                }
5028 efrain 581
 
582
                $data = [
583
                    'success' => true,
584
                    'data' => 'LABEL_RECORD_ADDED'
585
                ];
5065 eleazar 586
              //  return new JsonModel($data);
5063 eleazar 587
 
5074 eleazar 588
                if(!empty($dataPost['skill_id'])){
5042 eleazar 589
 
5074 eleazar 590
                    // print_r($dataPost['skill_id']);
5042 eleazar 591
 
5074 eleazar 592
                     $skillMapper = SkillMapper::getInstance($this->adapter);
593
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 594
 
595
                     $ok = true;
596
 
5074 eleazar 597
                     foreach($dataPost['skill_id'] as $skillUuid) {
5042 eleazar 598
 
599
                        // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
600
 
601
 
5074 eleazar 602
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 603
 
5074 eleazar 604
                        // print_r($skill);
5058 eleazar 605
                        //print_r($currentCompany);
5042 eleazar 606
 
5074 eleazar 607
                        //if($skill && $skill->company_id == $currentCompany->id) {
608
                            $record = new SurveySkill();
609
                            $record->skill_id = $skill->id;
5053 eleazar 610
                            $record->survey_id = $survey->id;
611
 
612
 
5074 eleazar 613
                            $result = $surveySkillMapper->insert($record);
5053 eleazar 614
                            $ok = $ok && $result;
5052 eleazar 615
                        // }
5042 eleazar 616
                     }
617
 
618
                     if($ok){
619
 
620
                     }
621
                 }
622
 
623
                $data = [
624
                    'success' => true,
5062 eleazar 625
                    'data' => 'test'
5042 eleazar 626
                ];
5066 eleazar 627
              //  return new JsonModel($data); exit;
5064 eleazar 628
 
5042 eleazar 629
                if(!empty($dataPost['industry_id'])){
630
 
631
                    // print_r($dataPost['industry_id']);
632
 
633
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
634
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
635
 
636
                     $ok = true;
637
 
638
                     foreach($dataPost['industry_id'] as $industryUuid) {
639
 
640
                        // echo '$industryUuid = ' . $industryUuid ;
641
 
642
 
643
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
644
 
645
                        // print_r($industry);
646
                         //print_r($currentCompany);
647
 
5050 eleazar 648
                         //if($industry && $industry->company_id == $currentCompany->id) {
5042 eleazar 649
                             $record = new SurveyIndustry();
650
                             $record->industry_id = $industry->id;
651
                             $record->survey_id = $survey->id;
652
 
653
 
654
 
655
                             $result = $surveyIndustryMapper->insert($record);
656
                             $ok = $ok && $result;
5050 eleazar 657
                         //}
5042 eleazar 658
                     }
659
 
660
                     if($ok){
661
 
662
                     }
663
                 }
664
 
665
                $data = [
666
                    'success' => true,
5066 eleazar 667
                    'data' => 'test industry'
5042 eleazar 668
                ];
5067 eleazar 669
               // return new JsonModel($data); exit;
5074 eleazar 670
 
5083 eleazar 671
                if(!empty($dataPost['language_id'])){
5042 eleazar 672
 
5074 eleazar 673
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 674
 
675
                    $ok = true;
676
 
5085 eleazar 677
                    foreach($dataPost['language_id'] as $language_id) {
5042 eleazar 678
 
5074 eleazar 679
                            $record = new SurveyLanguage();
5085 eleazar 680
                            $record->language_id = $language_id;
5056 eleazar 681
                            $record->survey_id = $survey->id;
682
 
683
 
5074 eleazar 684
                            $result = $surveyLanguageMapper->insert($record);
5056 eleazar 685
                            $ok = $ok && $result;
686
                       //}
687
                    }
688
                      if($ok){
689
 
690
                    }
5042 eleazar 691
                 }
692
 
693
                $data = [
694
                    'success' => true,
695
                    'data' => 'LABEL_RECORD_ADDED'
696
                ];
5074 eleazar 697
               // return new JsonModel($data); exit;
698
 
5060 eleazar 699
               // return new JsonModel($data);
4855 eleazar 700
            } else {
5013 eleazar 701
                $messages = [];
4855 eleazar 702
                $form_messages = (array) $form->getMessages();
703
                foreach ($form_messages as $fieldname => $field_messages) {
704
 
705
                    $messages[$fieldname] = array_values($field_messages);
706
                }
707
 
708
                return new JsonModel([
709
                    'success' => false,
5011 eleazar 710
                    'data' => $messages
5013 eleazar 711
                ]);
4855 eleazar 712
            }
713
        } else {
714
            $data = [
715
                'success' => false,
716
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
717
            ];
718
 
719
            return new JsonModel($data);
720
        }
721
 
5060 eleazar 722
       return new JsonModel($data);
4855 eleazar 723
 
724
    }
725
 
4579 eleazar 726
    public function editAction() {
727
        $request = $this->getRequest();
728
        $currentUserPlugin = $this->plugin('currentUserPlugin');
729
        $currentCompany = $currentUserPlugin->getCompany();
730
        $currentUser = $currentUserPlugin->getUser();
731
 
732
        $request = $this->getRequest();
733
        $uuid = $this->params()->fromRoute('id');
734
 
6705 eleazar 735
 
4579 eleazar 736
        if (!$uuid) {
737
            $data = [
738
                'success' => false,
739
                'data' => 'ERROR_INVALID_PARAMETER'
740
            ];
741
 
742
            return new JsonModel($data);
743
        }
6691 eleazar 744
 
745
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
746
        $survey = $surveyMapper->fetchOneByUuid($uuid);
6692 eleazar 747
 
4579 eleazar 748
        if (!$survey) {
749
            $data = [
750
                'success' => false,
751
                'data' => 'ERROR_RECORD_NOT_FOUND'
752
            ];
753
 
754
            return new JsonModel($data);
755
        }
756
 
757
        if ($survey->company_id != $currentCompany->id) {
758
            return new JsonModel([
759
                'success' => false,
760
                'data' => 'ERROR_UNAUTHORIZED'
761
            ]);
762
        }
763
 
6705 eleazar 764
 
4579 eleazar 765
        if ($request->isPost()) {
6698 eleazar 766
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4579 eleazar 767
            $dataPost = $request->getPost()->toArray();
768
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
6705 eleazar 769
 
4579 eleazar 770
            $form->setData($dataPost);
771
 
772
            if ($form->isValid()) {
773
                $dataPost = (array) $form->getData();
6710 eleazar 774
 
4579 eleazar 775
                $hydrator = new ObjectPropertyHydrator();
776
                $hydrator->hydrate($dataPost, $survey);
777
 
778
                if (!$survey->status) {
779
                    $survey->status = Survey::STATUS_INACTIVE;
780
                }
4749 eleazar 781
 
782
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
783
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
784
                $survey->form_id = $surveyForm->id;
6708 eleazar 785
                $result = $surveyMapper->update($survey);
786
                if($result){
6705 eleazar 787
                    $survey = $surveyMapper->fetchOne($survey->id);
4579 eleazar 788
 
6705 eleazar 789
                    $jobDescription = new SurveyJobDescription();
790
                    $skill = new SurveySkill();
791
                    $industry = new SurveyIndustry();
792
                    $language = new SurveyLanguage();
793
 
794
                    if(!empty($dataPost['location_search'])){
795
 
796
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
797
 
798
                        $ok = true;
799
 
800
                        $formatted_address = $dataPost['formatted_address'];
801
                        $city1 = $dataPost['city1'];
802
                        $city2 = $dataPost['city2'];
803
                        $address1 = $dataPost['address1'];
804
                        $address2 = $dataPost['address2'];
805
                        $country = $dataPost['country'];
806
                        $latitude = $dataPost['latitude'];
807
                        $longitude = $dataPost['longitude'];
808
                        $postal_code = $dataPost['postal_code'];
809
                        $state = $dataPost['state'];
810
 
811
 
812
                        $record = new SurveyLocation();
813
                        $record->formatted_address = $formatted_address;
814
                        $record->city1 = $city1;
815
                        $record->city2 = $city2;
816
                        $record->address1 = $address1;
817
                        $record->address2 = $address2;
818
                        $record->country = $country;
819
                        $record->latitude = $latitude;
820
                        $record->longitude = $longitude;
821
                        $record->postal_code = $postal_code;
822
                        $record->state = $state;
823
                        $record->survey_id = $survey->id;
824
                        $result = $surveyLocationMapper->update($record);
825
                        $ok = $ok && $result;
826
                           //}
827
                          if($ok){
828
 
829
                        }
830
                    }
831
 
832
                    if(!empty($dataPost['job_description_id'])){
833
 
834
                       // print_r($dataPost['job_description_id']);
835
 
836
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
837
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
838
 
839
                        $ok = true;
840
 
6764 eleazar 841
 
842
                        $surveyJobDescriptionMapper->deleteBySurevy($survey->id);
843
 
6705 eleazar 844
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
845
 
846
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
847
 
848
 
849
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
850
 
851
                           // print_r($jobDescription);
852
                            //print_r($currentCompany);
853
 
854
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
855
                                $record = new SurveyJobDescription();
856
                                $record->job_description_id = $jobDescription->id;
857
                                $record->survey_id = $survey->id;
858
 
859
 
860
 
6751 eleazar 861
                                $result = $surveyJobDescriptionMapper->insert($record);
6705 eleazar 862
                                $ok = $ok && $result;
863
                            }
864
                        }
865
 
866
                        if($ok){
867
 
868
                        }
869
                    }
870
 
871
                    $data = [
872
                        'success' => true,
873
                        'data' => 'LABEL_RECORD_ADDED'
874
                    ];
875
                    //      return new JsonModel($data);
876
 
877
                    if(!empty($dataPost['skill_id'])){
878
 
879
                        // print_r($dataPost['skill_id']);
880
 
881
                         $skillMapper = SkillMapper::getInstance($this->adapter);
882
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
883
 
884
                         $ok = true;
6762 eleazar 885
 
6763 eleazar 886
                        $surveySkillMapper->deleteBySurevy($survey->id);
6762 eleazar 887
 
6705 eleazar 888
 
889
                         foreach($dataPost['skill_id'] as $skillUuid) {
890
 
891
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
892
 
893
 
894
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
6760 eleazar 895
 
6705 eleazar 896
                            // print_r($skill);
897
                            //print_r($currentCompany);
898
 
899
                            //if($skill && $skill->company_id == $currentCompany->id) {
900
                                $record = new SurveySkill();
901
                                $record->skill_id = $skill->id;
902
                                $record->survey_id = $survey->id;
903
 
904
 
6751 eleazar 905
                                $result = $surveySkillMapper->insert($record);
6705 eleazar 906
                                $ok = $ok && $result;
907
                            // }
908
                         }
909
 
910
                         if($ok){
911
 
912
                         }
6759 eleazar 913
                    }
6705 eleazar 914
                    //      return new JsonModel($data); exit;
915
 
916
                    if(!empty($dataPost['industry_id'])){
917
 
918
                        // print_r($dataPost['industry_id']);
919
 
920
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
921
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
922
 
923
                         $ok = true;
924
 
6764 eleazar 925
                         $surveyIndustryMapper->deleteBySurevy($survey->id);
926
 
6705 eleazar 927
                         foreach($dataPost['industry_id'] as $industryUuid) {
928
 
929
                            // echo '$industryUuid = ' . $industryUuid ;
930
 
931
 
932
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
933
 
934
                            // print_r($industry);
935
                             //print_r($currentCompany);
936
 
937
                             //if($industry && $industry->company_id == $currentCompany->id) {
938
                                 $record = new SurveyIndustry();
939
                                 $record->industry_id = $industry->id;
940
                                 $record->survey_id = $survey->id;
941
 
942
 
943
 
6751 eleazar 944
                                 $result = $surveyIndustryMapper->insert($record);
6705 eleazar 945
                                 $ok = $ok && $result;
946
                             //}
947
                         }
948
 
949
                         if($ok){
950
 
951
                         }
6712 eleazar 952
                    }
6705 eleazar 953
 
954
                    // return new JsonModel($data); exit;
955
 
956
                    if(!empty($dataPost['language_id'])){
957
 
958
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
959
 
960
                        $ok = true;
961
 
6764 eleazar 962
                        $surveyLanguageMapper->deleteBySurevy($survey->id);
963
 
6705 eleazar 964
                        foreach($dataPost['language_id'] as $language_id) {
965
 
966
                                $record = new SurveyLanguage();
967
                                $record->language_id = $language_id;
968
                                $record->survey_id = $survey->id;
969
 
970
 
6734 eleazar 971
                                $result = $surveyLanguageMapper->insert($record);
6705 eleazar 972
                                $ok = $ok && $result;
973
                           //}
974
                        }
975
                          if($ok){
976
 
977
                        }
978
                     }
979
                }
980
 
981
            return new JsonModel($data);
982
 
983
 
4579 eleazar 984
                if ($result) {
985
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
986
                    $data = [
987
                        'success' => true,
988
                        'id' => $survey->id,
989
                        'action_edit' => $this->url()->fromRoute('survey/edit', ['id' => $survey->uuid]),
990
                        'data' => 'LABEL_RECORD_UPDATED'
991
                    ];
992
                } else {
993
                    $data = [
994
                        'success' => false,
995
                        'data' => $surveyMapper->getError()
996
                    ];
997
                }
998
 
999
                return new JsonModel($data);
1000
            } else {
1001
                $messages = [];
1002
                $form_messages = (array) $form->getMessages();
1003
                foreach ($form_messages as $fieldname => $field_messages) {
1004
                    $messages[$fieldname] = array_values($field_messages);
1005
                }
1006
 
1007
                return new JsonModel([
1008
                    'success' => false,
1009
                    'data' => $messages
1010
                ]);
1011
            }
1012
        } else if ($request->isGet()) {
1013
            $hydrator = new ObjectPropertyHydrator();
6720 eleazar 1014
 
1015
            $surveylenguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
1016
            $languages  = $surveylenguageMapper->fetchAllBySurveyId($survey->id);
6721 eleazar 1017
 
6714 eleazar 1018
            $lenguage = [];
1019
            foreach($languages as $language)
1020
            {
1021
                array_push($lenguage, $language->language_id);
1022
            }
6735 eleazar 1023
 
1024
            $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
1025
            $skills  = $surveySkillMapper->fetchAllBySurveyId($survey->id);
1026
 
1027
            $skilla = [];
1028
            foreach($skills as $skill)
1029
            {
6749 eleazar 1030
                array_push($skilla, $skill->skill_id);
6735 eleazar 1031
            }
6742 eleazar 1032
 
6738 eleazar 1033
 
1034
            $skillMaster = [];
6744 eleazar 1035
            foreach($skilla as $skillb)
6738 eleazar 1036
            {
6746 eleazar 1037
                $skillMapper = SkillMapper::getInstance($this->adapter);
1038
                $skillm = $skillMapper->fetchOne($skillb);
6738 eleazar 1039
                array_push($skillMaster, $skillm->uuid);
1040
            }
6751 eleazar 1041
 
1042
            $SurveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
1043
            $SurveyJobDescriptions  = $SurveyJobDescriptionMapper->fetchAllBySurveyId($survey->id);
1044
 
1045
            $SurveyJobDescriptionA = [];
1046
            foreach($SurveyJobDescriptions as $SurveyJobDescription)
1047
            {
1048
                array_push($SurveyJobDescriptionA, $SurveyJobDescription->job_description_id);
1049
            }
6765 eleazar 1050
 
6751 eleazar 1051
            $SurveyJobDescriptionMaster = [];
6752 eleazar 1052
            foreach($SurveyJobDescriptionA as $SurveyJobDescriptionB)
6751 eleazar 1053
            {
6752 eleazar 1054
                $JobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
6754 eleazar 1055
                $JobDescriptionm = $JobDescriptionMapper->fetchOne($SurveyJobDescriptionB);
6758 eleazar 1056
                array_push($SurveyJobDescriptionMaster, $JobDescriptionm->uuid);
6751 eleazar 1057
            }
1058
 
6765 eleazar 1059
            $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
1060
            $industrys = $surveyIndustryMapper->fetchAllBySurveyId($survey->id);
1061
 
1062
            $industrya = [];
1063
            foreach($industrys as $industry)
1064
            {
1065
                array_push($industrya, $industry->industry_id);
1066
            }
1067
 
1068
 
1069
            $industryMaster = [];
1070
            foreach($industrya as $industryb)
1071
            {
1072
                $industryMapper = IndustryMapper::getInstance($this->adapter);
1073
                $industrym = $industryMapper->fetchOne($industryb);
1074
                array_push($industryMaster, $industrym->uuid);
1075
            }
1076
 
1077
 
6767 eleazar 1078
            $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
6776 eleazar 1079
            $location  = $surveyLocationMapper->fetchAllbySurveyId($survey->id);
6765 eleazar 1080
 
6778 eleazar 1081
            //  return new JsonModel([
1082
            //      'success' => false,
1083
            //      'data' => $location
1084
            //  ]);
6765 eleazar 1085
 
6757 eleazar 1086
 
6742 eleazar 1087
 
4749 eleazar 1088
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
1089
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
6765 eleazar 1090
            // return new JsonModel([
1091
            //     'success' => false,
1092
            //     'data' => $SurveyJobDescriptionA
1093
            // ]);
4579 eleazar 1094
            $data = [
1095
                'success' => true,
1096
                'data' => [
4653 eleazar 1097
                    'name' => $survey->name,
4749 eleazar 1098
                    'form_id' => $surveyForm->uuid,
4653 eleazar 1099
                    'target' => $survey->target,
1100
                    'identity' => $survey->identity,
1101
                    'since_date' => $survey->since_date,
1102
                    'last_date' => $survey->last_date,
1103
                    'status' => $survey->status,
6714 eleazar 1104
                    'lenguage_id' => $lenguage,
6738 eleazar 1105
                    'skill_id' => $skillMaster,
6752 eleazar 1106
                    'job_description_id' => $SurveyJobDescriptionMaster,
6765 eleazar 1107
                    'industry_id' => $industryMaster,
6783 eleazar 1108
                    //'location' => $location->city1,
4579 eleazar 1109
                ]
1110
            ];
1111
 
1112
            return new JsonModel($data);
1113
        } else {
1114
            $data = [
1115
                'success' => false,
1116
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1117
            ];
1118
 
1119
            return new JsonModel($data);
1120
        }
1121
 
1122
        return new JsonModel($data);
1123
    }
1124
 
1125
    public function deleteAction() {
1126
        $request = $this->getRequest();
1127
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1128
        $currentCompany = $currentUserPlugin->getCompany();
1129
        $currentUser = $currentUserPlugin->getUser();
1130
 
1131
        $request = $this->getRequest();
1132
        $uuid = $this->params()->fromRoute('id');
1133
 
1134
        if (!$uuid) {
1135
            $data = [
1136
                'success' => false,
1137
                'data' => 'ERROR_INVALID_PARAMETER'
1138
            ];
1139
 
1140
            return new JsonModel($data);
1141
        }
1142
 
1143
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
1144
        $survey = $surveyMapper->fetchOneByUuid($uuid);
1145
        if (!$survey) {
1146
            $data = [
1147
                'success' => false,
1148
                'data' => 'ERROR_RECORD_NOT_FOUND'
1149
            ];
1150
 
1151
            return new JsonModel($data);
1152
        }
1153
 
1154
        if ($survey->company_id != $currentCompany->id) {
1155
            return new JsonModel([
1156
                'success' => false,
1157
                'data' => 'ERROR_UNAUTHORIZED'
1158
            ]);
1159
        }
1160
 
1161
        if ($request->isPost()) {
1162
 
1163
            $result = $surveyMapper->delete($survey->id);
1164
            if ($result) {
4735 eleazar 1165
                //$this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 1166
 
1167
                $data = [
1168
                    'success' => true,
1169
                    'data' => 'LABEL_RECORD_DELETED'
1170
                ];
1171
            } else {
1172
 
1173
                $data = [
1174
                    'success' => false,
1175
                    'data' => $surveyMapper->getError()
1176
                ];
1177
 
1178
                return new JsonModel($data);
1179
            }
1180
        } else {
1181
            $data = [
1182
                'success' => false,
1183
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1184
            ];
1185
 
1186
            return new JsonModel($data);
1187
        }
1188
 
1189
        return new JsonModel($data);
1190
    }
1191
 
4384 eleazar 1192
}