Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 12114 | Rev 15371 | 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\Mapper\IndustryMapper;
22
use LeadersLinked\Mapper\JobDescriptionMapper;
5074 eleazar 23
use LeadersLinked\Mapper\LanguageMapper;
24
use LeadersLinked\Mapper\SkillMapper;
4579 eleazar 25
use LeadersLinked\Form\SurveyForm;
26
use LeadersLinked\Model\Survey;
27
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
5026 efrain 28
use LeadersLinked\Model\SurveyJobDescription;
5074 eleazar 29
use LeadersLinked\Model\SurveySkill;
5027 efrain 30
use LeadersLinked\Model\SurveyIndustry;
5074 eleazar 31
use LeadersLinked\Model\SurveyLanguage;
6376 eleazar 32
use LeadersLinked\Model\SurveyLocation;
4384 eleazar 33
 
34
class SurveyController extends AbstractActionController {
35
 
36
    /**
37
     *
38
     * @var AdapterInterface
39
     */
40
    private $adapter;
41
 
42
    /**
43
     *
44
     * @var AbstractAdapter
45
     */
46
    private $cache;
47
 
48
    /**
49
     *
50
     * @var  LoggerInterface
51
     */
52
    private $logger;
53
 
54
    /**
55
     *
56
     * @var array
57
     */
58
    private $config;
59
 
60
    /**
61
     *
62
     * @param AdapterInterface $adapter
63
     * @param AbstractAdapter $cache
64
     * @param LoggerInterface $logger
65
     * @param array $config
66
     */
67
    public function __construct($adapter, $cache, $logger, $config) {
68
        $this->adapter = $adapter;
69
        $this->cache = $cache;
70
        $this->logger = $logger;
71
        $this->config = $config;
72
    }
73
 
74
    public function indexAction() {
4579 eleazar 75
        $request = $this->getRequest();
76
        $currentUserPlugin = $this->plugin('currentUserPlugin');
77
        $currentCompany = $currentUserPlugin->getCompany();
78
        $currentUser = $currentUserPlugin->getUser();
4384 eleazar 79
 
4579 eleazar 80
 
81
        $request = $this->getRequest();
82
        if ($request->isGet()) {
6341 eleazar 83
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
84
            if($sandbox) {
85
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
86
            } else {
87
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
88
            }
4579 eleazar 89
 
90
            $headers = $request->getHeaders();
91
 
92
            $isJson = false;
93
            if ($headers->has('Accept')) {
94
                $accept = $headers->get('Accept');
95
 
96
                $prioritized = $accept->getPrioritized();
97
 
98
                foreach ($prioritized as $key => $value) {
99
                    $raw = trim($value->getRaw());
100
 
101
                    if (!$isJson) {
102
                        $isJson = strpos($raw, 'json');
103
                    }
104
                }
105
            }
106
 
107
            if ($isJson) {
108
                $search = $this->params()->fromQuery('search', []);
109
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
110
 
111
                $page = intval($this->params()->fromQuery('start', 1), 10);
112
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
113
                $order = $this->params()->fromQuery('order', []);
114
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
115
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
116
 
117
                $fields = ['name'];
118
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
119
 
120
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
121
                    $order_direction = 'ASC';
122
                }
123
 
4661 eleazar 124
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
125
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'survey/edit');
126
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'survey/delete');
15150 efrain 127
 
4579 eleazar 128
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
129
                $paginator = $surveyMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
130
 
131
                $items = [];
132
                $records = $paginator->getCurrentItems();
15150 efrain 133
 
134
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
135
 
136
                $forms = [];
137
 
4579 eleazar 138
                foreach ($records as $record) {
15150 efrain 139
 
140
                    if(isset($forms[$record->form_id])) {
141
 
142
                        $surveyForm = $forms[$record->form_id];
143
                    } else {
144
                        $surveyForm = $surveyFormMapper->fetchOne($record->form_id);
145
                        $forms[$record->form_id] = $surveyForm;
146
                    }
147
 
148
                    $dtSinceDate = \DateTime::createFromFormat('Y-m-d', $record->since_date);
149
                    $dtLastDate = \DateTime::createFromFormat('Y-m-d', $record->last_date);
150
 
151
 
152
 
4579 eleazar 153
                    $item = [
154
                        'id' => $record->id,
155
                        'name' => $record->name,
4754 eleazar 156
                        'form' => $surveyForm->name,
15150 efrain 157
                        'since_date' => $dtSinceDate->format('d/m/Y'),
158
                        'last_date' => $dtLastDate->format('d/m/Y'),
4579 eleazar 159
                        'status' => $record->status,
160
                        'actions' => [
15150 efrain 161
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('survey/edit', ['id' => $record->uuid]) : '',
162
                            'link_delete' => $allowDelete  ? $this->url()->fromRoute('survey/delete', ['id' => $record->uuid]) : '',
4579 eleazar 163
                        ]
164
                    ];
165
 
166
                    array_push($items, $item);
167
                }
168
 
169
                return new JsonModel([
170
                    'success' => true,
171
                    'data' => [
172
                        'items' => $items,
173
                        'total' => $paginator->getTotalItemCount(),
174
                    ]
175
                ]);
176
            } else {
177
 
178
                $form = new SurveyForm($this->adapter, $currentCompany->id);
179
 
180
                $this->layout()->setTemplate('layout/layout-backend');
181
                $viewModel = new ViewModel();
182
                $viewModel->setTemplate('leaders-linked/survey/index.phtml');
183
                $viewModel->setVariable('form', $form);
6351 eleazar 184
                $viewModel->setVariable('google_map_key', $google_map_key);
4579 eleazar 185
                return $viewModel;
186
            }
187
        } else {
188
            return new JsonModel([
189
                'success' => false,
190
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
191
            ]);
192
        }
4384 eleazar 193
    }
194
 
4579 eleazar 195
    public function addAction() {
196
        $request = $this->getRequest();
197
        $currentUserPlugin = $this->plugin('currentUserPlugin');
198
        $currentCompany = $currentUserPlugin->getCompany();
199
        $currentUser = $currentUserPlugin->getUser();
12030 eleazar 200
 
4579 eleazar 201
        $request = $this->getRequest();
202
 
203
        if ($request->isPost()) {
204
 
205
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4672 eleazar 206
 
4579 eleazar 207
            $dataPost = $request->getPost()->toArray();
4661 eleazar 208
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
6659 eleazar 209
 
4579 eleazar 210
            $form->setData($dataPost);
211
 
212
            if ($form->isValid()) {
213
                $dataPost = (array) $form->getData();
214
 
215
                $hydrator = new ObjectPropertyHydrator();
6376 eleazar 216
 
4579 eleazar 217
                $survey = new Survey();
218
                $hydrator->hydrate($dataPost, $survey);
219
 
220
                if (!$survey->status) {
221
                    $survey->status = Survey::STATUS_INACTIVE;
222
                }
223
                $survey->company_id = $currentCompany->id;
224
 
4677 eleazar 225
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
226
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
227
                $survey->form_id = $surveyForm->id;
4579 eleazar 228
 
4724 eleazar 229
                $surveyMapper = SurveyMapper::getInstance($this->adapter);
5150 eleazar 230
                //$result = $surveyMapper->insert($survey);
231
 
232
                if($surveyMapper->insert($survey)) {
233
                    $survey = $surveyMapper->fetchOne($survey->id);
234
 
6627 eleazar 235
                    if(!empty($dataPost['location_search'])){
15150 efrain 236
                                                $record = new SurveyLocation();
237
                        $record->formatted_address = $dataPost['formatted_address'];
238
                        $record->city1 = $dataPost['city1'];
239
                        $record->city2 = $dataPost['city2'];
240
                        $record->address1 = $dataPost['address1'];
241
                        $record->address2 = $dataPost['address2'];
242
                        $record->country = $dataPost['country'];
243
                        $record->latitude = $dataPost['latitude'];
244
                        $record->longitude = $dataPost['longitude'];
245
                        $record->postal_code = $dataPost['postal_code'];
246
                        $record->state = $dataPost['state'];
247
                        $record->survey_id = $survey->id;
248
 
6627 eleazar 249
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
15150 efrain 250
                        $surveyLocationMapper->insert($record);
6627 eleazar 251
                    }
6376 eleazar 252
 
5150 eleazar 253
                    if(!empty($dataPost['job_description_id'])){
254
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
255
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
256
 
15150 efrain 257
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid)
258
                        {
5150 eleazar 259
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
260
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
261
                                $record = new SurveyJobDescription();
262
                                $record->job_description_id = $jobDescription->id;
263
                                $record->survey_id = $survey->id;
264
 
15150 efrain 265
                                $surveyJobDescriptionMapper->insert($record);
5150 eleazar 266
                            }
267
                        }
268
                    }
269
                    if(!empty($dataPost['skill_id'])){
270
                         $skillMapper = SkillMapper::getInstance($this->adapter);
271
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
272
 
15150 efrain 273
                         foreach($dataPost['skill_id'] as $skillUuid)
274
                         {
5150 eleazar 275
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
276
 
15150 efrain 277
                             if($skill) {
5150 eleazar 278
                                $record = new SurveySkill();
279
                                $record->skill_id = $skill->id;
280
                                $record->survey_id = $survey->id;
281
 
15150 efrain 282
                                $surveySkillMapper->insert($record);
283
                            }
5150 eleazar 284
                         }
285
                     }
286
 
287
                    if(!empty($dataPost['industry_id'])){
288
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
289
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
290
 
15150 efrain 291
                         foreach($dataPost['industry_id'] as $industryUuid)
292
                         {
5150 eleazar 293
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
15150 efrain 294
                             if($industry) {
5150 eleazar 295
                                 $record = new SurveyIndustry();
296
                                 $record->industry_id = $industry->id;
297
                                 $record->survey_id = $survey->id;
298
 
15150 efrain 299
                                 $surveyIndustryMapper->insert($record);
300
                             }
5150 eleazar 301
                         }
302
                     }
303
 
304
                    if(!empty($dataPost['language_id'])){
15150 efrain 305
                        $languageMapper = LanguageMapper::getInstance($this->adapter);
5150 eleazar 306
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
307
 
15150 efrain 308
                        foreach($dataPost['language_id'] as $language_id)
309
                        {
5150 eleazar 310
 
15150 efrain 311
                            $language = $languageMapper->fetchOne($language_id);
312
                            if($language) {
5150 eleazar 313
                                $record = new SurveyLanguage();
314
                                $record->language_id = $language_id;
315
                                $record->survey_id = $survey->id;
316
 
15150 efrain 317
                                $surveyLanguageMapper->insert($record);
318
                            }
5150 eleazar 319
                        }
15150 efrain 320
                    }
5150 eleazar 321
 
322
                    $data = [
323
                        'success' => true,
324
                        'data' => 'LABEL_RECORD_ADDED'
325
                    ];
326
 
327
                } else {
328
                    $data = [
329
                        'success'   => false,
330
                        'data'      => $surveyMapper->getError()
331
                    ];
332
                }
333
 
5383 eleazar 334
 
4579 eleazar 335
                return new JsonModel($data);
336
            } else {
337
                $messages = [];
338
                $form_messages = (array) $form->getMessages();
339
                foreach ($form_messages as $fieldname => $field_messages) {
340
 
341
                    $messages[$fieldname] = array_values($field_messages);
342
                }
343
 
344
                return new JsonModel([
345
                    'success' => false,
346
                    'data' => $messages
347
                ]);
348
            }
349
        } else {
350
            $data = [
351
                'success' => false,
352
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
353
            ];
354
 
355
            return new JsonModel($data);
356
        }
357
 
358
        return new JsonModel($data);
359
    }
360
 
15150 efrain 361
    /*
4856 eleazar 362
    public function segmentAction() {
4855 eleazar 363
        $request = $this->getRequest();
364
        $currentUserPlugin = $this->plugin('currentUserPlugin');
365
        $currentCompany = $currentUserPlugin->getCompany();
366
        $currentUser = $currentUserPlugin->getUser();
367
 
368
        $request = $this->getRequest();
369
        $uuid = $this->params()->fromRoute('id');
370
 
371
 
372
        if (!$uuid) {
373
            $data = [
374
                'success' => false,
375
                'data' => 'ERROR_INVALID_PARAMETER'
376
            ];
377
 
378
            return new JsonModel($data);
379
        }
380
 
381
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
382
        $survey = $surveyMapper->fetchOneByUuid($uuid);
383
        if (!$survey) {
384
            $data = [
385
                'success' => false,
386
                'data' => 'ERROR_RECORD_NOT_FOUND'
387
            ];
388
 
389
            return new JsonModel($data);
390
        }
391
 
392
        if ($survey->company_id != $currentCompany->id) {
393
            return new JsonModel([
394
                'success' => false,
395
                'data' => 'ERROR_UNAUTHORIZED'
396
            ]);
397
        }
398
 
4863 eleazar 399
        if($request->isPost()){
4865 eleazar 400
            $form = new SurveySegmentedForm($this->adapter, $currentCompany->id);
5039 efrain 401
 
402
 
4855 eleazar 403
            $dataPost = $request->getPost()->toArray();
5006 eleazar 404
            $form->setData($dataPost);
5019 efrain 405
 
4855 eleazar 406
 
5020 efrain 407
 
4855 eleazar 408
            if ($form->isValid()) {
409
                $dataPost = (array) $form->getData();
5029 efrain 410
 
5031 efrain 411
                if(!empty($dataPost['job_description_id'])){
5026 efrain 412
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
413
                    $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
414
 
15150 efrain 415
                    foreach($dataPost['job_description_id'] as $jobDescriptionUuid)
416
                    {
5026 efrain 417
                        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
5034 efrain 418
                        if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
5026 efrain 419
                            $record = new SurveyJobDescription();
420
                            $record->job_description_id = $jobDescription->id;
421
                            $record->survey_id = $survey->id;
15150 efrain 422
 
423
                            $surveyJobDescriptionMapper->insert($record);
4985 eleazar 424
                        }
4916 eleazar 425
                    }
4883 eleazar 426
                }
5028 efrain 427
 
5063 eleazar 428
 
5074 eleazar 429
                if(!empty($dataPost['skill_id'])){
430
                     $skillMapper = SkillMapper::getInstance($this->adapter);
431
                     $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
5042 eleazar 432
 
15150 efrain 433
                     foreach($dataPost['skill_id'] as $skillUuid)
434
                     {
5074 eleazar 435
                         $skill = $skillMapper->fetchOneByUuid($skillUuid);
5042 eleazar 436
 
15150 efrain 437
                         if($skill) {
5074 eleazar 438
                            $record = new SurveySkill();
439
                            $record->skill_id = $skill->id;
5053 eleazar 440
                            $record->survey_id = $survey->id;
441
 
15150 efrain 442
                            $surveySkillMapper->insert($record);
443
                         }
5042 eleazar 444
                     }
445
                 }
446
 
447
                if(!empty($dataPost['industry_id'])){
448
 
449
                     $industryMapper = IndustryMapper::getInstance($this->adapter);
450
                     $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
451
 
452
                     $ok = true;
453
 
15150 efrain 454
                     foreach($dataPost['industry_id'] as $industryUuid)
455
                     {
5042 eleazar 456
                         $industry = $industryMapper->fetchOneByUuid($industryUuid);
15150 efrain 457
                         if($industry) {
5042 eleazar 458
                             $record = new SurveyIndustry();
459
                             $record->industry_id = $industry->id;
460
                             $record->survey_id = $survey->id;
461
 
15150 efrain 462
                             $surveyIndustryMapper->insert($record);
463
                          }
5042 eleazar 464
                     }
465
                 }
466
 
5074 eleazar 467
 
5083 eleazar 468
                if(!empty($dataPost['language_id'])){
15150 efrain 469
                    $languageMapper = LanguageMapper::getInstance($this->adapter);
5074 eleazar 470
                    $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
5056 eleazar 471
 
15150 efrain 472
                    foreach($dataPost['language_id'] as $language_id)
473
                    {
474
                        $language = $languageMapper->fetchOne($language_id);
475
                        if($language) {
5074 eleazar 476
                            $record = new SurveyLanguage();
5085 eleazar 477
                            $record->language_id = $language_id;
5056 eleazar 478
                            $record->survey_id = $survey->id;
479
 
15150 efrain 480
                            $surveyLanguageMapper->insert($record);
481
                        }
5056 eleazar 482
                    }
5042 eleazar 483
                 }
484
 
485
                $data = [
486
                    'success' => true,
487
                    'data' => 'LABEL_RECORD_ADDED'
488
                ];
5074 eleazar 489
               // return new JsonModel($data); exit;
490
 
5060 eleazar 491
               // return new JsonModel($data);
4855 eleazar 492
            } else {
5013 eleazar 493
                $messages = [];
4855 eleazar 494
                $form_messages = (array) $form->getMessages();
495
                foreach ($form_messages as $fieldname => $field_messages) {
496
 
497
                    $messages[$fieldname] = array_values($field_messages);
498
                }
499
 
500
                return new JsonModel([
501
                    'success' => false,
5011 eleazar 502
                    'data' => $messages
5013 eleazar 503
                ]);
4855 eleazar 504
            }
505
        } else {
506
            $data = [
507
                'success' => false,
508
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
509
            ];
510
 
511
            return new JsonModel($data);
512
        }
513
 
5060 eleazar 514
       return new JsonModel($data);
4855 eleazar 515
 
15150 efrain 516
    }*/
4855 eleazar 517
 
4579 eleazar 518
    public function editAction() {
519
        $request = $this->getRequest();
520
        $currentUserPlugin = $this->plugin('currentUserPlugin');
521
        $currentCompany = $currentUserPlugin->getCompany();
522
        $currentUser = $currentUserPlugin->getUser();
523
 
524
        $request = $this->getRequest();
525
        $uuid = $this->params()->fromRoute('id');
526
 
6705 eleazar 527
 
4579 eleazar 528
        if (!$uuid) {
529
            $data = [
530
                'success' => false,
531
                'data' => 'ERROR_INVALID_PARAMETER'
532
            ];
533
 
534
            return new JsonModel($data);
535
        }
6691 eleazar 536
 
537
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
538
        $survey = $surveyMapper->fetchOneByUuid($uuid);
6692 eleazar 539
 
4579 eleazar 540
        if (!$survey) {
541
            $data = [
542
                'success' => false,
543
                'data' => 'ERROR_RECORD_NOT_FOUND'
544
            ];
545
 
546
            return new JsonModel($data);
547
        }
548
 
549
        if ($survey->company_id != $currentCompany->id) {
550
            return new JsonModel([
551
                'success' => false,
552
                'data' => 'ERROR_UNAUTHORIZED'
553
            ]);
554
        }
555
 
6705 eleazar 556
 
4579 eleazar 557
        if ($request->isPost()) {
6698 eleazar 558
            $form = new SurveyForm($this->adapter, $currentCompany->id);
4579 eleazar 559
            $dataPost = $request->getPost()->toArray();
560
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : SurveyForm::STATUS_INACTIVE;
6705 eleazar 561
 
4579 eleazar 562
            $form->setData($dataPost);
563
 
564
            if ($form->isValid()) {
565
                $dataPost = (array) $form->getData();
6710 eleazar 566
 
4579 eleazar 567
                $hydrator = new ObjectPropertyHydrator();
568
                $hydrator->hydrate($dataPost, $survey);
569
 
570
                if (!$survey->status) {
571
                    $survey->status = Survey::STATUS_INACTIVE;
572
                }
4749 eleazar 573
 
574
                $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
575
                $surveyForm = $surveyFormMapper->fetchOneByUuid($dataPost['form_id']);
576
                $survey->form_id = $surveyForm->id;
15150 efrain 577
 
6708 eleazar 578
                $result = $surveyMapper->update($survey);
579
                if($result){
6705 eleazar 580
                    $jobDescription = new SurveyJobDescription();
581
                    $skill = new SurveySkill();
582
                    $industry = new SurveyIndustry();
583
                    $language = new SurveyLanguage();
584
 
585
                    if(!empty($dataPost['location_search'])){
586
 
587
                        $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
15150 efrain 588
                        $surveyLocation = $surveyLocationMapper->fetchOneBySurveyId($survey->id);
6705 eleazar 589
 
15150 efrain 590
                        if($surveyLocation) {
591
                            $surveyLocation->formatted_address = $dataPost['formatted_address'];
592
                            $surveyLocation->city1 = $dataPost['city1'];
593
                            $surveyLocation->city2 = $dataPost['city2'];
594
                            $surveyLocation->address1 = $dataPost['address1'];
595
                            $surveyLocation->address2 = $dataPost['address2'];
596
                            $surveyLocation->country = $dataPost['country'];
597
                            $surveyLocation->latitude = $dataPost['latitude'];
598
                            $surveyLocation->longitude = $dataPost['longitude'];
599
                            $surveyLocation->postal_code = $dataPost['postal_code'];
600
                            $surveyLocation->state = $dataPost['state'];
601
                            $surveyLocationMapper->update($surveyLocation);
602
                        } else {
603
                            $surveyLocation = new SurveyLocation();
604
                            $surveyLocation->formatted_address = $dataPost['formatted_address'];
605
                            $surveyLocation->city1 = $dataPost['city1'];
606
                            $surveyLocation->city2 = $dataPost['city2'];
607
                            $surveyLocation->address1 = $dataPost['address1'];
608
                            $surveyLocation->address2 = $dataPost['address2'];
609
                            $surveyLocation->country = $dataPost['country'];
610
                            $surveyLocation->latitude = $dataPost['latitude'];
611
                            $surveyLocation->longitude = $dataPost['longitude'];
612
                            $surveyLocation->postal_code = $dataPost['postal_code'];
613
                            $surveyLocation->state = $dataPost['state'];
614
                            $surveyLocation->survey_id = $survey->id;
615
                            $surveyLocationMapper->insert($surveyLocation);
6705 eleazar 616
                        }
617
                    }
618
 
619
                    if(!empty($dataPost['job_description_id'])){
620
                        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
621
                        $surveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
622
 
15150 efrain 623
                        $surveyJobDescriptionMapper->deleteBySurveyId($survey->id);
6705 eleazar 624
 
625
                        foreach($dataPost['job_description_id'] as $jobDescriptionUuid) {
626
 
627
                            $jobDescription = $jobDescriptionMapper->fetchOneByUuid($jobDescriptionUuid);
628
                            if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
629
                                $record = new SurveyJobDescription();
630
                                $record->job_description_id = $jobDescription->id;
631
                                $record->survey_id = $survey->id;
632
 
15150 efrain 633
                                $surveyJobDescriptionMapper->insert($record);
6705 eleazar 634
                            }
635
                        }
636
 
637
                    }
638
 
639
 
640
                    if(!empty($dataPost['skill_id'])){
641
                         $skillMapper = SkillMapper::getInstance($this->adapter);
642
                         $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
643
 
6762 eleazar 644
 
15150 efrain 645
                         $surveySkillMapper->deleteBySurveyId($survey->id);
6762 eleazar 646
 
6705 eleazar 647
 
648
                         foreach($dataPost['skill_id'] as $skillUuid) {
649
                             $skill = $skillMapper->fetchOneByUuid($skillUuid);
15150 efrain 650
                             if($skill) {
6705 eleazar 651
                                $record = new SurveySkill();
652
                                $record->skill_id = $skill->id;
653
                                $record->survey_id = $survey->id;
654
 
15150 efrain 655
                                $surveySkillMapper->insert($record);
656
                            }
6705 eleazar 657
                         }
6759 eleazar 658
                    }
6705 eleazar 659
 
660
                    if(!empty($dataPost['industry_id'])){
661
                         $industryMapper = IndustryMapper::getInstance($this->adapter);
662
                         $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
663
 
15150 efrain 664
                         $surveyIndustryMapper->deleteBySurveyId($survey->id);
6705 eleazar 665
 
666
                         foreach($dataPost['industry_id'] as $industryUuid) {
667
                             $industry = $industryMapper->fetchOneByUuid($industryUuid);
668
 
15150 efrain 669
                             if($industry) {
6705 eleazar 670
                                 $record = new SurveyIndustry();
671
                                 $record->industry_id = $industry->id;
672
                                 $record->survey_id = $survey->id;
673
 
15150 efrain 674
                                 $surveyIndustryMapper->insert($record);
675
 
676
                             }
6705 eleazar 677
                         }
6712 eleazar 678
                    }
6705 eleazar 679
 
15150 efrain 680
 
6705 eleazar 681
                    if(!empty($dataPost['language_id'])){
682
 
683
                        $surveyLanguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
15150 efrain 684
                        $surveyLanguageMapper->deleteBySurveyId($survey->id);
6705 eleazar 685
 
15150 efrain 686
                        $languageMapper = LanguageMapper::getInstance($this->adapter);
687
 
688
                        foreach($dataPost['language_id'] as $language_id)
689
                        {
690
                            $language = $languageMapper->fetchOne($language_id);
691
                            if($language) {
6705 eleazar 692
                                $record = new SurveyLanguage();
693
                                $record->language_id = $language_id;
694
                                $record->survey_id = $survey->id;
695
 
696
 
15150 efrain 697
                                $surveyLanguageMapper->insert($record);
698
                            }
6705 eleazar 699
                        }
700
                     }
701
                }
15150 efrain 702
 
6705 eleazar 703
 
4579 eleazar 704
                if ($result) {
705
                    $this->logger->info('Se edito la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
706
                    $data = [
707
                        'success' => true,
708
                        'data' => 'LABEL_RECORD_UPDATED'
709
                    ];
710
                } else {
711
                    $data = [
712
                        'success' => false,
713
                        'data' => $surveyMapper->getError()
714
                    ];
715
                }
716
 
717
                return new JsonModel($data);
718
            } else {
719
                $messages = [];
720
                $form_messages = (array) $form->getMessages();
721
                foreach ($form_messages as $fieldname => $field_messages) {
722
                    $messages[$fieldname] = array_values($field_messages);
723
                }
724
 
725
                return new JsonModel([
726
                    'success' => false,
727
                    'data' => $messages
728
                ]);
729
            }
730
        } else if ($request->isGet()) {
731
            $hydrator = new ObjectPropertyHydrator();
6720 eleazar 732
 
733
            $surveylenguageMapper = SurveyLanguageMapper::getInstance($this->adapter);
734
            $languages  = $surveylenguageMapper->fetchAllBySurveyId($survey->id);
6721 eleazar 735
 
6714 eleazar 736
            $lenguage = [];
737
            foreach($languages as $language)
738
            {
739
                array_push($lenguage, $language->language_id);
740
            }
6735 eleazar 741
 
742
            $surveySkillMapper = SurveySkillMapper::getInstance($this->adapter);
743
            $skills  = $surveySkillMapper->fetchAllBySurveyId($survey->id);
744
 
745
            $skilla = [];
746
            foreach($skills as $skill)
747
            {
6749 eleazar 748
                array_push($skilla, $skill->skill_id);
6735 eleazar 749
            }
6742 eleazar 750
 
6738 eleazar 751
 
752
            $skillMaster = [];
6744 eleazar 753
            foreach($skilla as $skillb)
6738 eleazar 754
            {
6746 eleazar 755
                $skillMapper = SkillMapper::getInstance($this->adapter);
756
                $skillm = $skillMapper->fetchOne($skillb);
6738 eleazar 757
                array_push($skillMaster, $skillm->uuid);
758
            }
6751 eleazar 759
 
760
            $SurveyJobDescriptionMapper = SurveyJobDescriptionMapper::getInstance($this->adapter);
761
            $SurveyJobDescriptions  = $SurveyJobDescriptionMapper->fetchAllBySurveyId($survey->id);
762
 
763
            $SurveyJobDescriptionA = [];
764
            foreach($SurveyJobDescriptions as $SurveyJobDescription)
765
            {
766
                array_push($SurveyJobDescriptionA, $SurveyJobDescription->job_description_id);
767
            }
6765 eleazar 768
 
6751 eleazar 769
            $SurveyJobDescriptionMaster = [];
6752 eleazar 770
            foreach($SurveyJobDescriptionA as $SurveyJobDescriptionB)
6751 eleazar 771
            {
6752 eleazar 772
                $JobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
6754 eleazar 773
                $JobDescriptionm = $JobDescriptionMapper->fetchOne($SurveyJobDescriptionB);
6758 eleazar 774
                array_push($SurveyJobDescriptionMaster, $JobDescriptionm->uuid);
6751 eleazar 775
            }
776
 
6765 eleazar 777
            $surveyIndustryMapper = SurveyIndustryMapper::getInstance($this->adapter);
778
            $industrys = $surveyIndustryMapper->fetchAllBySurveyId($survey->id);
779
 
780
            $industrya = [];
781
            foreach($industrys as $industry)
782
            {
783
                array_push($industrya, $industry->industry_id);
784
            }
785
 
786
 
787
            $industryMaster = [];
788
            foreach($industrya as $industryb)
789
            {
790
                $industryMapper = IndustryMapper::getInstance($this->adapter);
791
                $industrym = $industryMapper->fetchOne($industryb);
792
                array_push($industryMaster, $industrym->uuid);
793
            }
794
 
795
 
6767 eleazar 796
            $surveyLocationMapper = SurveyLocationMapper::getInstance($this->adapter);
15150 efrain 797
            $surveyLocation  = $surveyLocationMapper->fetchOneBySurveyId($survey->id);
6765 eleazar 798
 
799
 
6742 eleazar 800
 
4749 eleazar 801
            $surveyFormMapper = SurveyFormMapper::getInstance($this->adapter);
802
            $surveyForm = $surveyFormMapper->fetchOne($survey->form_id);
15150 efrain 803
 
4579 eleazar 804
            $data = [
805
                'success' => true,
806
                'data' => [
4653 eleazar 807
                    'name' => $survey->name,
4749 eleazar 808
                    'form_id' => $surveyForm->uuid,
4653 eleazar 809
                    'target' => $survey->target,
810
                    'identity' => $survey->identity,
811
                    'since_date' => $survey->since_date,
812
                    'last_date' => $survey->last_date,
813
                    'status' => $survey->status,
6714 eleazar 814
                    'lenguage_id' => $lenguage,
6738 eleazar 815
                    'skill_id' => $skillMaster,
6752 eleazar 816
                    'job_description_id' => $SurveyJobDescriptionMaster,
6765 eleazar 817
                    'industry_id' => $industryMaster,
15150 efrain 818
 
819
 
820
                    'formatted_address' => $surveyLocation  ? $surveyLocation->formatted_address : '',
821
                    'city1' => $surveyLocation  ? $surveyLocation ->city1 : '',
822
                    'city2' => $surveyLocation  ? $surveyLocation ->city2 : '',
823
                    'address1' => $surveyLocation  ? $surveyLocation ->address1: '',
824
                    'address2' => $surveyLocation  ? $surveyLocation ->address2 : '',
825
                    'country' => $surveyLocation  ? $surveyLocation ->country : '',
826
                    'latitude' => $surveyLocation  ? $surveyLocation ->latitude : '',
827
                    'longitude' => $surveyLocation  ? $surveyLocation ->longitude : '',
828
                    'postal_code' => $surveyLocation  ? $surveyLocation ->postal_code : '',
829
                    'state' => $surveyLocation  ? $surveyLocation ->state : '',
830
 
831
 
4579 eleazar 832
                ]
833
            ];
834
 
835
            return new JsonModel($data);
836
        } else {
837
            $data = [
838
                'success' => false,
839
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
840
            ];
841
 
842
            return new JsonModel($data);
843
        }
844
 
845
        return new JsonModel($data);
846
    }
847
 
848
    public function deleteAction() {
849
        $request = $this->getRequest();
850
        $currentUserPlugin = $this->plugin('currentUserPlugin');
851
        $currentCompany = $currentUserPlugin->getCompany();
852
        $currentUser = $currentUserPlugin->getUser();
853
 
854
        $request = $this->getRequest();
855
        $uuid = $this->params()->fromRoute('id');
856
 
857
        if (!$uuid) {
858
            $data = [
859
                'success' => false,
860
                'data' => 'ERROR_INVALID_PARAMETER'
861
            ];
862
 
863
            return new JsonModel($data);
864
        }
865
 
866
        $surveyMapper = SurveyMapper::getInstance($this->adapter);
867
        $survey = $surveyMapper->fetchOneByUuid($uuid);
868
        if (!$survey) {
869
            $data = [
870
                'success' => false,
871
                'data' => 'ERROR_RECORD_NOT_FOUND'
872
            ];
873
 
874
            return new JsonModel($data);
875
        }
876
 
877
        if ($survey->company_id != $currentCompany->id) {
878
            return new JsonModel([
879
                'success' => false,
880
                'data' => 'ERROR_UNAUTHORIZED'
881
            ]);
882
        }
883
 
884
        if ($request->isPost()) {
885
 
886
            $result = $surveyMapper->delete($survey->id);
887
            if ($result) {
15150 efrain 888
                $this->logger->info('Se borro la encuesta ' . $survey->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4579 eleazar 889
 
890
                $data = [
891
                    'success' => true,
892
                    'data' => 'LABEL_RECORD_DELETED'
893
                ];
894
            } else {
895
 
896
                $data = [
897
                    'success' => false,
898
                    'data' => $surveyMapper->getError()
899
                ];
900
 
901
                return new JsonModel($data);
902
            }
903
        } else {
904
            $data = [
905
                'success' => false,
906
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
907
            ];
908
 
909
            return new JsonModel($data);
910
        }
911
 
912
        return new JsonModel($data);
913
    }
914
 
4384 eleazar 915
}