Proyectos de Subversion LeadersLinked - Backend

Rev

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