Proyectos de Subversion LeadersLinked - Backend

Rev

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

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