Proyectos de Subversion LeadersLinked - Backend

Rev

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

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