Proyectos de Subversion LeadersLinked - Backend

Rev

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