Proyectos de Subversion LeadersLinked - Backend

Rev

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