Proyectos de Subversion LeadersLinked - Backend

Rev

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