Proyectos de Subversion LeadersLinked - Backend

Rev

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