Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 12028 | Rev 12030 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4384 eleazar 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
4579 eleazar 11
use Laminas\View\Model\ViewModel;
4384 eleazar 12
use Laminas\View\Model\JsonModel;
5027 efrain 13
use LeadersLinked\Library\Functions;
4579 eleazar 14
use LeadersLinked\Mapper\SurveyMapper;
4678 eleazar 15
use LeadersLinked\Mapper\SurveyFormMapper;
4883 eleazar 16
use LeadersLinked\Mapper\SurveyJobDescriptionMapper;
17
use LeadersLinked\Mapper\SurveyIndustryMapper;
5074 eleazar 18
use LeadersLinked\Mapper\SurveySkillMapper;
4883 eleazar 19
use LeadersLinked\Mapper\SurveyLocationMapper;
5074 eleazar 20
use LeadersLinked\Mapper\SurveyLanguageMapper;
4855 eleazar 21
use LeadersLinked\Model\Location;
22
use LeadersLinked\Mapper\LocationMapper;
23
use LeadersLinked\Mapper\IndustryMapper;
24
use LeadersLinked\Mapper\JobDescriptionMapper;
25
use LeadersLinked\Mapper\BehaviorMapper;
26
use LeadersLinked\Mapper\JobDescriptionBehaviorCompetencyMapper;
27
use LeadersLinked\Mapper\CompanyMapper;
5074 eleazar 28
use LeadersLinked\Mapper\LanguageMapper;
4855 eleazar 29
use LeadersLinked\Model\Company;
5074 eleazar 30
use LeadersLinked\Mapper\SkillMapper;
4865 eleazar 31
use LeadersLinked\Form\SurveySegmentedForm;
4579 eleazar 32
use LeadersLinked\Form\SurveyForm;
33
use LeadersLinked\Model\Survey;
34
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
5026 efrain 35
use LeadersLinked\Model\SurveyJobDescription;
5074 eleazar 36
use LeadersLinked\Model\SurveySkill;
5027 efrain 37
use LeadersLinked\Model\SurveyIndustry;
5074 eleazar 38
use LeadersLinked\Model\SurveyLanguage;
6376 eleazar 39
use LeadersLinked\Model\SurveyLocation;
4384 eleazar 40
 
41
class SurveyController extends AbstractActionController {
42
 
43
    /**
44
     *
45
     * @var AdapterInterface
46
     */
47
    private $adapter;
48
 
49
    /**
50
     *
51
     * @var AbstractAdapter
52
     */
53
    private $cache;
54
 
55
    /**
56
     *
57
     * @var  LoggerInterface
58
     */
59
    private $logger;
60
 
61
    /**
62
     *
63
     * @var array
64
     */
65
    private $config;
66
 
67
    /**
68
     *
69
     * @param AdapterInterface $adapter
70
     * @param AbstractAdapter $cache
71
     * @param LoggerInterface $logger
72
     * @param array $config
73
     */
74
    public function __construct($adapter, $cache, $logger, $config) {
75
        $this->adapter = $adapter;
76
        $this->cache = $cache;
77
        $this->logger = $logger;
78
        $this->config = $config;
79
    }
80
 
81
    public function indexAction() {
4579 eleazar 82
        $request = $this->getRequest();
83
        $currentUserPlugin = $this->plugin('currentUserPlugin');
84
        $currentCompany = $currentUserPlugin->getCompany();
85
        $currentUser = $currentUserPlugin->getUser();
4384 eleazar 86
 
4579 eleazar 87
 
88
        $request = $this->getRequest();
89
        if ($request->isGet()) {
6341 eleazar 90
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
91
            if($sandbox) {
92
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
93
            } else {
94
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
95
            }
4579 eleazar 96
 
97
            $headers = $request->getHeaders();
98
 
99
            $isJson = false;
100
            if ($headers->has('Accept')) {
101
                $accept = $headers->get('Accept');
102
 
103
                $prioritized = $accept->getPrioritized();
104
 
105
                foreach ($prioritized as $key => $value) {
106
                    $raw = trim($value->getRaw());
107
 
108
                    if (!$isJson) {
109
                        $isJson = strpos($raw, 'json');
110
                    }
111
                }
112
            }
113
 
114
            if ($isJson) {
115
                $search = $this->params()->fromQuery('search', []);
116
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
117
 
118
                $page = intval($this->params()->fromQuery('start', 1), 10);
119
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
120
                $order = $this->params()->fromQuery('order', []);
121
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
122
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
123
 
124
                $fields = ['name'];
125
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
126
 
127
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
128
                    $order_direction = 'ASC';
129
                }
130
 
4661 eleazar 131
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
132
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'survey/add');
133
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'survey/edit');
134
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'survey/delete');
135
                $allowSegment = $acl->isAllowed($currentUser->usertype_id, 'survey/segment');
136
 
4579 eleazar 137
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
138
                $paginator = $surveyMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
139
 
140
                $items = [];
141
                $records = $paginator->getCurrentItems();
142
 
143
                foreach ($records as $record) {
4754 eleazar 144
                    $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
145
                    $surveyForm = $surveyFormMapper->fetchOne($record->form_id);
146
 
4579 eleazar 147
                    $item = [
148
                        'id' => $record->id,
149
                        'name' => $record->name,
4754 eleazar 150
                        'form' => $surveyForm->name,
4579 eleazar 151
                        'status' => $record->status,
152
                        'actions' => [
153
                            'link_edit' => $this->url()->fromRoute('survey/edit', ['id' => $record->uuid]),
154
                            'link_delete' => $this->url()->fromRoute('survey/delete', ['id' => $record->uuid]),
155
                            'link_segment' => $this->url()->fromRoute('survey/segment', ['id' => $record->uuid])
156
                        ]
157
                    ];
158
 
159
                    array_push($items, $item);
160
                }
161
 
162
                return new JsonModel([
163
                    'success' => true,
164
                    'data' => [
165
                        'items' => $items,
166
                        'total' => $paginator->getTotalItemCount(),
167
                    ]
168
                ]);
169
            } else {
170
 
171
                $form = new SurveyForm($this->adapter, $currentCompany->id);
172
 
173
                $this->layout()->setTemplate('layout/layout-backend');
174
                $viewModel = new ViewModel();
175
                $viewModel->setTemplate('leaders-linked/survey/index.phtml');
176
                $viewModel->setVariable('form', $form);
6351 eleazar 177
                $viewModel->setVariable('google_map_key', $google_map_key);
4579 eleazar 178
                return $viewModel;
179
            }
180
        } else {
181
            return new JsonModel([
182
                'success' => false,
183
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
184
            ]);
185
        }
4384 eleazar 186
    }
187
 
4579 eleazar 188
    public function addAction() {
189
        $request = $this->getRequest();
190
        $currentUserPlugin = $this->plugin('currentUserPlugin');
191
        $currentCompany = $currentUserPlugin->getCompany();
192
        $currentUser = $currentUserPlugin->getUser();
12027 eleazar 193
        $actual_date = strtotime(date("Y-m-d"));
12028 eleazar 194
        $since_date = strtotime($dataPost['since_date']);
12024 eleazar 195
        return new JsonModel([
196
            'success' => false,
197
            'data' => $actual_date
198
        ]);
4579 eleazar 199
        $request = $this->getRequest();
200
 
201
        if ($request->isPost()) {
202
 
203
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4672 eleazar 204
 
4579 eleazar 205
            $dataPost = $request->getPost()->toArray();
4661 eleazar 206
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
12029 eleazar 207
            $actual_date = strtotime(date("Y-m-d"));
208
            $since_date = strtotime($dataPost['since_date']);
4579 eleazar 209
 
6660 eleazar 210
            if($dataPost['since_date'] > $dataPost['last_date']){
6714 eleazar 211
                new JsonModel([
6659 eleazar 212
                    'success' => false,
213
                    'data' => 'ERROR_UNAUTHORIZED'
214
                ]);
215
            }
216
 
12028 eleazar 217
            if($since_date > $actual_date){
12023 eleazar 218
                new JsonModel([
219
                    'success' => false,
220
                    'data' => 'ERROR_Fecha Actual'
221
                ]);
222
            }
223
 
4579 eleazar 224
            $form->setData($dataPost);
225
 
226
            if ($form->isValid()) {
227
                $dataPost = (array) $form->getData();
228
 
229
                $hydrator = new ObjectPropertyHydrator();
6376 eleazar 230
 
4579 eleazar 231
                $survey = new Survey();
232
                $hydrator->hydrate($dataPost, $survey);
233
 
234
                if (!$survey->status) {
235
                    $survey->status = Survey::STATUS_INACTIVE;
236
                }
237
                $survey->company_id = $currentCompany->id;
238
 
4677 eleazar 239
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
240
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
241
                $survey->form_id = $surveyForm->id;
4579 eleazar 242
 
4724 eleazar 243
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
5150 eleazar 244
                //$result = $surveyMapper->insert($survey);
245
 
246
                if($surveyMapper->insert($survey)) {
247
                    $survey = $surveyMapper->fetchOne($survey->id);
248
 
249
                    $jobDescription = new SurveyJobDescription();
250
                    $skill = new SurveySkill();
251
                    $industry = new SurveyIndustry();
252
                    $language = new SurveyLanguage();
253
 
6627 eleazar 254
                    if(!empty($dataPost['location_search'])){
6376 eleazar 255
 
6627 eleazar 256
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
6376 eleazar 257
 
6627 eleazar 258
                        $ok = true;
259
 
260
                        $formatted_address = $dataPost['formatted_address'];
261
                        $city1 = $dataPost['city1'];
262
                        $city2 = $dataPost['city2'];
263
                        $address1 = $dataPost['address1'];
264
                        $address2 = $dataPost['address2'];
265
                        $country = $dataPost['country'];
266
                        $latitude = $dataPost['latitude'];
267
                        $longitude = $dataPost['longitude'];
268
                        $postal_code = $dataPost['postal_code'];
269
                        $state = $dataPost['state'];
270
 
271
 
272
                        $record = new SurveyLocation();
273
                        $record->formatted_address = $formatted_address;
274
                        $record->city1 = $city1;
275
                        $record->city2 = $city2;
276
                        $record->address1 = $address1;
277
                        $record->address2 = $address2;
278
                        $record->country = $country;
279
                        $record->latitude = $latitude;
280
                        $record->longitude = $longitude;
281
                        $record->postal_code = $postal_code;
282
                        $record->state = $state;
283
                        $record->survey_id = $survey->id;
284
                        $result = $surveyLocationMapper->insert($record);
285
                        $ok = $ok && $result;
286
                           //}
287
                          if($ok){
6376 eleazar 288
 
6627 eleazar 289
                        }
290
                    }
6376 eleazar 291
 
5150 eleazar 292
                    if(!empty($dataPost['job_description_id'])){
293
 
294
                       // print_r($dataPost['job_description_id']);
295
 
296
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
297
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
298
 
299
                        $ok = true;
300
 
301
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
302
 
303
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
304
 
305
 
306
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
307
 
308
                           // print_r($jobDescription);
309
                            //print_r($currentCompany);
310
 
311
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
312
                                $record = new SurveyJobDescription();
313
                                $record->job_description_id = $jobDescription->id;
314
                                $record->survey_id = $survey->id;
315
 
316
 
317
 
318
                                $result = $surveyJobDescriptionMapper->insert($record);
319
                                $ok = $ok && $result;
320
                            }
321
                        }
322
 
323
                        if($ok){
324
 
325
                        }
326
                    }
327
 
328
                    $data = [
329
                        'success' => true,
330
                        'data' => 'LABEL_RECORD_ADDED'
331
                    ];
332
                    //      return new JsonModel($data);
333
 
334
                    if(!empty($dataPost['skill_id'])){
335
 
336
                        // print_r($dataPost['skill_id']);
337
 
338
                         $skillMapper = SkillMapper::getInstance($this->adapter);
339
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
340
 
341
                         $ok = true;
342
 
343
                         foreach($dataPost['skill_id'] as $skillUuid) {
344
 
345
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
346
 
347
 
348
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
349
 
350
                            // print_r($skill);
351
                            //print_r($currentCompany);
352
 
353
                            //if($skill && $skill->company_id == $currentCompany->id) {
354
                                $record = new SurveySkill();
355
                                $record->skill_id = $skill->id;
356
                                $record->survey_id = $survey->id;
357
 
358
 
359
                                $result = $surveySkillMapper->insert($record);
360
                                $ok = $ok && $result;
361
                            // }
362
                         }
363
 
364
                         if($ok){
365
 
366
                         }
367
                     }
368
 
369
                    $data = [
370
                        'success' => true,
371
                        'data' => 'test'
372
                    ];
373
                    //      return new JsonModel($data); exit;
374
 
375
                    if(!empty($dataPost['industry_id'])){
376
 
377
                        // print_r($dataPost['industry_id']);
378
 
379
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
380
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
381
 
382
                         $ok = true;
383
 
384
                         foreach($dataPost['industry_id'] as $industryUuid) {
385
 
386
                            // echo '$industryUuid = ' . $industryUuid ;
387
 
388
 
389
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
390
 
391
                            // print_r($industry);
392
                             //print_r($currentCompany);
393
 
394
                             //if($industry && $industry->company_id == $currentCompany->id) {
395
                                 $record = new SurveyIndustry();
396
                                 $record->industry_id = $industry->id;
397
                                 $record->survey_id = $survey->id;
398
 
399
 
400
 
401
                                 $result = $surveyIndustryMapper->insert($record);
402
                                 $ok = $ok && $result;
403
                             //}
404
                         }
405
 
406
                         if($ok){
407
 
408
                         }
409
                     }
410
 
411
                    $data = [
412
                        'success' => true,
413
                        'data' => 'test industry'
414
                    ];
415
                    // return new JsonModel($data); exit;
416
 
417
                    if(!empty($dataPost['language_id'])){
418
 
419
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
420
 
421
                        $ok = true;
422
 
423
                        foreach($dataPost['language_id'] as $language_id) {
424
 
425
                                $record = new SurveyLanguage();
426
                                $record->language_id = $language_id;
427
                                $record->survey_id = $survey->id;
428
 
429
 
430
                                $result = $surveyLanguageMapper->insert($record);
431
                                $ok = $ok && $result;
432
                           //}
433
                        }
434
                          if($ok){
435
 
436
                        }
437
                     }
438
 
439
                    $data = [
440
                        'success' => true,
441
                        'data' => 'LABEL_RECORD_ADDED'
442
                    ];
443
 
444
                } else {
445
                    $data = [
446
                        'success'   => false,
447
                        'data'      => $surveyMapper->getError()
448
                    ];
449
                }
450
 
5383 eleazar 451
 
4579 eleazar 452
                return new JsonModel($data);
453
            } else {
454
                $messages = [];
455
                $form_messages = (array) $form->getMessages();
456
                foreach ($form_messages as $fieldname => $field_messages) {
457
 
458
                    $messages[$fieldname] = array_values($field_messages);
459
                }
460
 
461
                return new JsonModel([
462
                    'success' => false,
463
                    'data' => $messages
464
                ]);
465
            }
466
        } else {
467
            $data = [
468
                'success' => false,
469
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
470
            ];
471
 
472
            return new JsonModel($data);
473
        }
474
 
475
        return new JsonModel($data);
476
    }
477
 
4856 eleazar 478
    public function segmentAction() {
4855 eleazar 479
        $request = $this->getRequest();
480
        $currentUserPlugin = $this->plugin('currentUserPlugin');
481
        $currentCompany = $currentUserPlugin->getCompany();
482
        $currentUser = $currentUserPlugin->getUser();
483
 
484
        $request = $this->getRequest();
485
        $uuid = $this->params()->fromRoute('id');
486
 
487
 
488
        if (!$uuid) {
489
            $data = [
490
                'success' => false,
491
                'data' => 'ERROR_INVALID_PARAMETER'
492
            ];
493
 
494
            return new JsonModel($data);
495
        }
496
 
497
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
498
        $survey = $surveyMapper->fetchOneByUuid($uuid);
499
        if (!$survey) {
500
            $data = [
501
                'success' => false,
502
                'data' => 'ERROR_RECORD_NOT_FOUND'
503
            ];
504
 
505
            return new JsonModel($data);
506
        }
507
 
508
        if ($survey->company_id != $currentCompany->id) {
509
            return new JsonModel([
510
                'success' => false,
511
                'data' => 'ERROR_UNAUTHORIZED'
512
            ]);
513
        }
514
 
4863 eleazar 515
        if($request->isPost()){
4865 eleazar 516
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 517
 
518
 
4855 eleazar 519
            $dataPost = $request->getPost()->toArray();
5006 eleazar 520
            $form->setData($dataPost);
5019 efrain 521
 
4855 eleazar 522
 
5020 efrain 523
 
4855 eleazar 524
            if ($form->isValid()) {
525
                $dataPost = (array) $form->getData();
5029 efrain 526
 
527
                /*
4855 eleazar 528
 
529
                $location = new Location();
530
                $hydrator->hydrate($dataPost, $location);
531
 
532
                $locationMapper= LocationMapper::getInstance($this->adapter);
533
                $resultLocation = $locationMapper->insert($location);
534
 
535
                if (!$resultLocation) {
536
                    return new JsonModel([
537
                        'success'   => false,
538
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
539
                    ]);
540
                }
5029 efrain 541
                */
4991 eleazar 542
 
4855 eleazar 543
                $jobDescription = new SurveyJobDescription();
5074 eleazar 544
                $skill = new SurveySkill();
4855 eleazar 545
                $industry = new SurveyIndustry();
5074 eleazar 546
                $language = new SurveyLanguage();
5064 eleazar 547
 
5031 efrain 548
                if(!empty($dataPost['job_description_id'])){
549
 
5032 efrain 550
                   // print_r($dataPost['job_description_id']);
5031 efrain 551
 
5026 efrain 552
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
553
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
554
 
555
                    $ok = true;
556
 
557
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
558
 
5032 efrain 559
                       // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
5026 efrain 560
 
561
 
562
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5032 efrain 563
 
5033 efrain 564
                       // print_r($jobDescription);
565
                        //print_r($currentCompany);
5032 efrain 566
 
5034 efrain 567
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 568
                            $record = new SurveyJobDescription();
569
                            $record->job_description_id = $jobDescription->id;
570
                            $record->survey_id = $survey->id;
571
 
5034 efrain 572
 
5033 efrain 573
 
5026 efrain 574
                            $result = $surveyJobDescriptionMapper->insert($record);
575
                            $ok = $ok && $result;
4985 eleazar 576
                        }
4916 eleazar 577
                    }
5026 efrain 578
 
579
                    if($ok){
5028 efrain 580
 
5026 efrain 581
                    }
4883 eleazar 582
                }
5028 efrain 583
 
584
                $data = [
585
                    'success' => true,
586
                    'data' => 'LABEL_RECORD_ADDED'
587
                ];
5065 eleazar 588
              //  return new JsonModel($data);
5063 eleazar 589
 
5074 eleazar 590
                if(!empty($dataPost['skill_id'])){
5042 eleazar 591
 
5074 eleazar 592
                    // print_r($dataPost['skill_id']);
5042 eleazar 593
 
5074 eleazar 594
                     $skillMapper = SkillMapper::getInstance($this->adapter);
595
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 596
 
597
                     $ok = true;
598
 
5074 eleazar 599
                     foreach($dataPost['skill_id'] as $skillUuid) {
5042 eleazar 600
 
601
                        // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
602
 
603
 
5074 eleazar 604
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 605
 
5074 eleazar 606
                        // print_r($skill);
5058 eleazar 607
                        //print_r($currentCompany);
5042 eleazar 608
 
5074 eleazar 609
                        //if($skill && $skill->company_id == $currentCompany->id) {
610
                            $record = new SurveySkill();
611
                            $record->skill_id = $skill->id;
5053 eleazar 612
                            $record->survey_id = $survey->id;
613
 
614
 
5074 eleazar 615
                            $result = $surveySkillMapper->insert($record);
5053 eleazar 616
                            $ok = $ok && $result;
5052 eleazar 617
                        // }
5042 eleazar 618
                     }
619
 
620
                     if($ok){
621
 
622
                     }
623
                 }
624
 
625
                $data = [
626
                    'success' => true,
5062 eleazar 627
                    'data' => 'test'
5042 eleazar 628
                ];
5066 eleazar 629
              //  return new JsonModel($data); exit;
5064 eleazar 630
 
5042 eleazar 631
                if(!empty($dataPost['industry_id'])){
632
 
633
                    // print_r($dataPost['industry_id']);
634
 
635
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
636
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
637
 
638
                     $ok = true;
639
 
640
                     foreach($dataPost['industry_id'] as $industryUuid) {
641
 
642
                        // echo '$industryUuid = ' . $industryUuid ;
643
 
644
 
645
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
646
 
647
                        // print_r($industry);
648
                         //print_r($currentCompany);
649
 
5050 eleazar 650
                         //if($industry && $industry->company_id == $currentCompany->id) {
5042 eleazar 651
                             $record = new SurveyIndustry();
652
                             $record->industry_id = $industry->id;
653
                             $record->survey_id = $survey->id;
654
 
655
 
656
 
657
                             $result = $surveyIndustryMapper->insert($record);
658
                             $ok = $ok && $result;
5050 eleazar 659
                         //}
5042 eleazar 660
                     }
661
 
662
                     if($ok){
663
 
664
                     }
665
                 }
666
 
667
                $data = [
668
                    'success' => true,
5066 eleazar 669
                    'data' => 'test industry'
5042 eleazar 670
                ];
5067 eleazar 671
               // return new JsonModel($data); exit;
5074 eleazar 672
 
5083 eleazar 673
                if(!empty($dataPost['language_id'])){
5042 eleazar 674
 
5074 eleazar 675
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 676
 
677
                    $ok = true;
678
 
5085 eleazar 679
                    foreach($dataPost['language_id'] as $language_id) {
5042 eleazar 680
 
5074 eleazar 681
                            $record = new SurveyLanguage();
5085 eleazar 682
                            $record->language_id = $language_id;
5056 eleazar 683
                            $record->survey_id = $survey->id;
684
 
685
 
5074 eleazar 686
                            $result = $surveyLanguageMapper->insert($record);
5056 eleazar 687
                            $ok = $ok && $result;
688
                       //}
689
                    }
690
                      if($ok){
691
 
692
                    }
5042 eleazar 693
                 }
694
 
695
                $data = [
696
                    'success' => true,
697
                    'data' => 'LABEL_RECORD_ADDED'
698
                ];
5074 eleazar 699
               // return new JsonModel($data); exit;
700
 
5060 eleazar 701
               // return new JsonModel($data);
4855 eleazar 702
            } else {
5013 eleazar 703
                $messages = [];
4855 eleazar 704
                $form_messages = (array) $form->getMessages();
705
                foreach ($form_messages as $fieldname => $field_messages) {
706
 
707
                    $messages[$fieldname] = array_values($field_messages);
708
                }
709
 
710
                return new JsonModel([
711
                    'success' => false,
5011 eleazar 712
                    'data' => $messages
5013 eleazar 713
                ]);
4855 eleazar 714
            }
715
        } else {
716
            $data = [
717
                'success' => false,
718
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
719
            ];
720
 
721
            return new JsonModel($data);
722
        }
723
 
5060 eleazar 724
       return new JsonModel($data);
4855 eleazar 725
 
726
    }
727
 
4579 eleazar 728
    public function editAction() {
729
        $request = $this->getRequest();
730
        $currentUserPlugin = $this->plugin('currentUserPlugin');
731
        $currentCompany = $currentUserPlugin->getCompany();
732
        $currentUser = $currentUserPlugin->getUser();
733
 
734
        $request = $this->getRequest();
735
        $uuid = $this->params()->fromRoute('id');
736
 
6705 eleazar 737
 
4579 eleazar 738
        if (!$uuid) {
739
            $data = [
740
                'success' => false,
741
                'data' => 'ERROR_INVALID_PARAMETER'
742
            ];
743
 
744
            return new JsonModel($data);
745
        }
6691 eleazar 746
 
747
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
748
        $survey = $surveyMapper->fetchOneByUuid($uuid);
6692 eleazar 749
 
4579 eleazar 750
        if (!$survey) {
751
            $data = [
752
                'success' => false,
753
                'data' => 'ERROR_RECORD_NOT_FOUND'
754
            ];
755
 
756
            return new JsonModel($data);
757
        }
758
 
759
        if ($survey->company_id != $currentCompany->id) {
760
            return new JsonModel([
761
                'success' => false,
762
                'data' => 'ERROR_UNAUTHORIZED'
763
            ]);
764
        }
765
 
6705 eleazar 766
 
4579 eleazar 767
        if ($request->isPost()) {
6698 eleazar 768
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4579 eleazar 769
            $dataPost = $request->getPost()->toArray();
770
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
6705 eleazar 771
 
4579 eleazar 772
            $form->setData($dataPost);
773
 
774
            if ($form->isValid()) {
775
                $dataPost = (array) $form->getData();
6710 eleazar 776
 
4579 eleazar 777
                $hydrator = new ObjectPropertyHydrator();
778
                $hydrator->hydrate($dataPost, $survey);
779
 
780
                if (!$survey->status) {
781
                    $survey->status = Survey::STATUS_INACTIVE;
782
                }
4749 eleazar 783
 
784
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
785
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
786
                $survey->form_id = $surveyForm->id;
6708 eleazar 787
                $result = $surveyMapper->update($survey);
788
                if($result){
6705 eleazar 789
                    $survey = $surveyMapper->fetchOne($survey->id);
4579 eleazar 790
 
6705 eleazar 791
                    $jobDescription = new SurveyJobDescription();
792
                    $skill = new SurveySkill();
793
                    $industry = new SurveyIndustry();
794
                    $language = new SurveyLanguage();
795
 
796
                    if(!empty($dataPost['location_search'])){
797
 
798
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
799
 
800
                        $ok = true;
801
 
802
                        $formatted_address = $dataPost['formatted_address'];
803
                        $city1 = $dataPost['city1'];
804
                        $city2 = $dataPost['city2'];
805
                        $address1 = $dataPost['address1'];
806
                        $address2 = $dataPost['address2'];
807
                        $country = $dataPost['country'];
808
                        $latitude = $dataPost['latitude'];
809
                        $longitude = $dataPost['longitude'];
810
                        $postal_code = $dataPost['postal_code'];
811
                        $state = $dataPost['state'];
812
 
813
 
814
                        $record = new SurveyLocation();
815
                        $record->formatted_address = $formatted_address;
816
                        $record->city1 = $city1;
817
                        $record->city2 = $city2;
818
                        $record->address1 = $address1;
819
                        $record->address2 = $address2;
820
                        $record->country = $country;
821
                        $record->latitude = $latitude;
822
                        $record->longitude = $longitude;
823
                        $record->postal_code = $postal_code;
824
                        $record->state = $state;
825
                        $record->survey_id = $survey->id;
826
                        $result = $surveyLocationMapper->update($record);
827
                        $ok = $ok && $result;
828
                           //}
829
                          if($ok){
830
 
831
                        }
832
                    }
833
 
834
                    if(!empty($dataPost['job_description_id'])){
835
 
836
                       // print_r($dataPost['job_description_id']);
837
 
838
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
839
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
840
 
841
                        $ok = true;
842
 
6764 eleazar 843
 
844
                        $surveyJobDescriptionMapper->deleteBySurevy($survey->id);
845
 
6705 eleazar 846
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
847
 
848
                           // echo '$jobDescriptionUuid = ' . $jobDescriptionUuid ;
849
 
850
 
851
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
852
 
853
                           // print_r($jobDescription);
854
                            //print_r($currentCompany);
855
 
856
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
857
                                $record = new SurveyJobDescription();
858
                                $record->job_description_id = $jobDescription->id;
859
                                $record->survey_id = $survey->id;
860
 
861
 
862
 
6751 eleazar 863
                                $result = $surveyJobDescriptionMapper->insert($record);
6705 eleazar 864
                                $ok = $ok && $result;
865
                            }
866
                        }
867
 
868
                        if($ok){
869
 
870
                        }
871
                    }
872
 
873
                    $data = [
874
                        'success' => true,
875
                        'data' => 'LABEL_RECORD_ADDED'
876
                    ];
877
                    //      return new JsonModel($data);
878
 
879
                    if(!empty($dataPost['skill_id'])){
880
 
881
                        // print_r($dataPost['skill_id']);
882
 
883
                         $skillMapper = SkillMapper::getInstance($this->adapter);
884
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
885
 
886
                         $ok = true;
6762 eleazar 887
 
6763 eleazar 888
                        $surveySkillMapper->deleteBySurevy($survey->id);
6762 eleazar 889
 
6705 eleazar 890
 
891
                         foreach($dataPost['skill_id'] as $skillUuid) {
892
 
893
                            // echo '$jobCategoryUuid = ' . $jobCategoryUuid ;
894
 
895
 
896
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
6760 eleazar 897
 
6705 eleazar 898
                            // print_r($skill);
899
                            //print_r($currentCompany);
900
 
901
                            //if($skill && $skill->company_id == $currentCompany->id) {
902
                                $record = new SurveySkill();
903
                                $record->skill_id = $skill->id;
904
                                $record->survey_id = $survey->id;
905
 
906
 
6751 eleazar 907
                                $result = $surveySkillMapper->insert($record);
6705 eleazar 908
                                $ok = $ok && $result;
909
                            // }
910
                         }
911
 
912
                         if($ok){
913
 
914
                         }
6759 eleazar 915
                    }
6705 eleazar 916
                    //      return new JsonModel($data); exit;
917
 
918
                    if(!empty($dataPost['industry_id'])){
919
 
920
                        // print_r($dataPost['industry_id']);
921
 
922
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
923
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
924
 
925
                         $ok = true;
926
 
6764 eleazar 927
                         $surveyIndustryMapper->deleteBySurevy($survey->id);
928
 
6705 eleazar 929
                         foreach($dataPost['industry_id'] as $industryUuid) {
930
 
931
                            // echo '$industryUuid = ' . $industryUuid ;
932
 
933
 
934
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
935
 
936
                            // print_r($industry);
937
                             //print_r($currentCompany);
938
 
939
                             //if($industry && $industry->company_id == $currentCompany->id) {
940
                                 $record = new SurveyIndustry();
941
                                 $record->industry_id = $industry->id;
942
                                 $record->survey_id = $survey->id;
943
 
944
 
945
 
6751 eleazar 946
                                 $result = $surveyIndustryMapper->insert($record);
6705 eleazar 947
                                 $ok = $ok && $result;
948
                             //}
949
                         }
950
 
951
                         if($ok){
952
 
953
                         }
6712 eleazar 954
                    }
6705 eleazar 955
 
956
                    // return new JsonModel($data); exit;
957
 
958
                    if(!empty($dataPost['language_id'])){
959
 
960
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
961
 
962
                        $ok = true;
963
 
6764 eleazar 964
                        $surveyLanguageMapper->deleteBySurevy($survey->id);
965
 
6705 eleazar 966
                        foreach($dataPost['language_id'] as $language_id) {
967
 
968
                                $record = new SurveyLanguage();
969
                                $record->language_id = $language_id;
970
                                $record->survey_id = $survey->id;
971
 
972
 
6734 eleazar 973
                                $result = $surveyLanguageMapper->insert($record);
6705 eleazar 974
                                $ok = $ok && $result;
975
                           //}
976
                        }
977
                          if($ok){
978
 
979
                        }
980
                     }
981
                }
982
 
983
            return new JsonModel($data);
984
 
985
 
4579 eleazar 986
                if ($result) {
987
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
988
                    $data = [
989
                        'success' => true,
990
                        'id' => $survey->id,
991
                        'action_edit' => $this->url()->fromRoute('survey/edit', ['id' => $survey->uuid]),
992
                        'data' => 'LABEL_RECORD_UPDATED'
993
                    ];
994
                } else {
995
                    $data = [
996
                        'success' => false,
997
                        'data' => $surveyMapper->getError()
998
                    ];
999
                }
1000
 
1001
                return new JsonModel($data);
1002
            } else {
1003
                $messages = [];
1004
                $form_messages = (array) $form->getMessages();
1005
                foreach ($form_messages as $fieldname => $field_messages) {
1006
                    $messages[$fieldname] = array_values($field_messages);
1007
                }
1008
 
1009
                return new JsonModel([
1010
                    'success' => false,
1011
                    'data' => $messages
1012
                ]);
1013
            }
1014
        } else if ($request->isGet()) {
1015
            $hydrator = new ObjectPropertyHydrator();
6720 eleazar 1016
 
1017
            $surveylenguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
1018
            $languages  = $surveylenguageMapper->fetchAllBySurveyId($survey->id);
6721 eleazar 1019
 
6714 eleazar 1020
            $lenguage = [];
1021
            foreach($languages as $language)
1022
            {
1023
                array_push($lenguage, $language->language_id);
1024
            }
6735 eleazar 1025
 
1026
            $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
1027
            $skills  = $surveySkillMapper->fetchAllBySurveyId($survey->id);
1028
 
1029
            $skilla = [];
1030
            foreach($skills as $skill)
1031
            {
6749 eleazar 1032
                array_push($skilla, $skill->skill_id);
6735 eleazar 1033
            }
6742 eleazar 1034
 
6738 eleazar 1035
 
1036
            $skillMaster = [];
6744 eleazar 1037
            foreach($skilla as $skillb)
6738 eleazar 1038
            {
6746 eleazar 1039
                $skillMapper = SkillMapper::getInstance($this->adapter);
1040
                $skillm = $skillMapper->fetchOne($skillb);
6738 eleazar 1041
                array_push($skillMaster, $skillm->uuid);
1042
            }
6751 eleazar 1043
 
1044
            $SurveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
1045
            $SurveyJobDescriptions  = $SurveyJobDescriptionMapper->fetchAllBySurveyId($survey->id);
1046
 
1047
            $SurveyJobDescriptionA = [];
1048
            foreach($SurveyJobDescriptions as $SurveyJobDescription)
1049
            {
1050
                array_push($SurveyJobDescriptionA, $SurveyJobDescription->job_description_id);
1051
            }
6765 eleazar 1052
 
6751 eleazar 1053
            $SurveyJobDescriptionMaster = [];
6752 eleazar 1054
            foreach($SurveyJobDescriptionA as $SurveyJobDescriptionB)
6751 eleazar 1055
            {
6752 eleazar 1056
                $JobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
6754 eleazar 1057
                $JobDescriptionm = $JobDescriptionMapper->fetchOne($SurveyJobDescriptionB);
6758 eleazar 1058
                array_push($SurveyJobDescriptionMaster, $JobDescriptionm->uuid);
6751 eleazar 1059
            }
1060
 
6765 eleazar 1061
            $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
1062
            $industrys = $surveyIndustryMapper->fetchAllBySurveyId($survey->id);
1063
 
1064
            $industrya = [];
1065
            foreach($industrys as $industry)
1066
            {
1067
                array_push($industrya, $industry->industry_id);
1068
            }
1069
 
1070
 
1071
            $industryMaster = [];
1072
            foreach($industrya as $industryb)
1073
            {
1074
                $industryMapper = IndustryMapper::getInstance($this->adapter);
1075
                $industrym = $industryMapper->fetchOne($industryb);
1076
                array_push($industryMaster, $industrym->uuid);
1077
            }
1078
 
1079
 
6767 eleazar 1080
            $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
6776 eleazar 1081
            $location  = $surveyLocationMapper->fetchAllbySurveyId($survey->id);
6765 eleazar 1082
 
6778 eleazar 1083
            //  return new JsonModel([
1084
            //      'success' => false,
1085
            //      'data' => $location
1086
            //  ]);
6765 eleazar 1087
 
6757 eleazar 1088
 
6742 eleazar 1089
 
4749 eleazar 1090
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
1091
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
6765 eleazar 1092
            // return new JsonModel([
1093
            //     'success' => false,
1094
            //     'data' => $SurveyJobDescriptionA
1095
            // ]);
4579 eleazar 1096
            $data = [
1097
                'success' => true,
1098
                'data' => [
4653 eleazar 1099
                    'name' => $survey->name,
4749 eleazar 1100
                    'form_id' => $surveyForm->uuid,
4653 eleazar 1101
                    'target' => $survey->target,
1102
                    'identity' => $survey->identity,
1103
                    'since_date' => $survey->since_date,
1104
                    'last_date' => $survey->last_date,
1105
                    'status' => $survey->status,
6714 eleazar 1106
                    'lenguage_id' => $lenguage,
6738 eleazar 1107
                    'skill_id' => $skillMaster,
6752 eleazar 1108
                    'job_description_id' => $SurveyJobDescriptionMaster,
6765 eleazar 1109
                    'industry_id' => $industryMaster,
6783 eleazar 1110
                    //'location' => $location->city1,
4579 eleazar 1111
                ]
1112
            ];
1113
 
1114
            return new JsonModel($data);
1115
        } else {
1116
            $data = [
1117
                'success' => false,
1118
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1119
            ];
1120
 
1121
            return new JsonModel($data);
1122
        }
1123
 
1124
        return new JsonModel($data);
1125
    }
1126
 
1127
    public function deleteAction() {
1128
        $request = $this->getRequest();
1129
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1130
        $currentCompany = $currentUserPlugin->getCompany();
1131
        $currentUser = $currentUserPlugin->getUser();
1132
 
1133
        $request = $this->getRequest();
1134
        $uuid = $this->params()->fromRoute('id');
1135
 
1136
        if (!$uuid) {
1137
            $data = [
1138
                'success' => false,
1139
                'data' => 'ERROR_INVALID_PARAMETER'
1140
            ];
1141
 
1142
            return new JsonModel($data);
1143
        }
1144
 
1145
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
1146
        $survey = $surveyMapper->fetchOneByUuid($uuid);
1147
        if (!$survey) {
1148
            $data = [
1149
                'success' => false,
1150
                'data' => 'ERROR_RECORD_NOT_FOUND'
1151
            ];
1152
 
1153
            return new JsonModel($data);
1154
        }
1155
 
1156
        if ($survey->company_id != $currentCompany->id) {
1157
            return new JsonModel([
1158
                'success' => false,
1159
                'data' => 'ERROR_UNAUTHORIZED'
1160
            ]);
1161
        }
1162
 
1163
        if ($request->isPost()) {
1164
 
1165
            $result = $surveyMapper->delete($survey->id);
1166
            if ($result) {
4735 eleazar 1167
                //$this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 1168
 
1169
                $data = [
1170
                    'success' => true,
1171
                    'data' => 'LABEL_RECORD_DELETED'
1172
                ];
1173
            } else {
1174
 
1175
                $data = [
1176
                    'success' => false,
1177
                    'data' => $surveyMapper->getError()
1178
                ];
1179
 
1180
                return new JsonModel($data);
1181
            }
1182
        } else {
1183
            $data = [
1184
                'success' => false,
1185
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1186
            ];
1187
 
1188
            return new JsonModel($data);
1189
        }
1190
 
1191
        return new JsonModel($data);
1192
    }
1193
 
4384 eleazar 1194
}