Proyectos de Subversion LeadersLinked - Backend

Rev

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