Proyectos de Subversion LeadersLinked - Backend

Rev

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