Proyectos de Subversion LeadersLinked - Backend

Rev

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