Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
1384 efrain 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;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
15457 efrain 13
use LeadersLinked\Form\RecruitmentSelection\RecruitmentSelectionVacancyForm;
1384 efrain 14
use LeadersLinked\Library\Functions;
1386 eleazar 15
use LeadersLinked\Mapper\RecruitmentSelectionVacancyMapper;
1387 eleazar 16
use LeadersLinked\Model\RecruitmentSelectionVacancy;
1384 efrain 17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
18
use LeadersLinked\Model\Location;
19
use LeadersLinked\Mapper\LocationMapper;
20
use LeadersLinked\Mapper\IndustryMapper;
21
use LeadersLinked\Mapper\JobDescriptionMapper;
22
use LeadersLinked\Mapper\JobCategoryMapper;
15457 efrain 23
use Laminas\Paginator\Adapter\DbSelect;
24
use Laminas\Paginator\Paginator;
25
use LeadersLinked\Mapper\QueryMapper;
26
use Laminas\Hydrator\ArraySerializableHydrator;
27
use Laminas\Db\ResultSet\HydratingResultSet;
1384 efrain 28
 
12314 stevensc 29
class RecruitmentSelectionVacancyController extends AbstractActionController
30
{
1384 efrain 31
 
32
    /**
33
     *
34
     * @var AdapterInterface
35
     */
36
    private $adapter;
37
 
38
    /**
39
     *
40
     * @var AbstractAdapter
41
     */
42
    private $cache;
43
 
44
    /**
45
     *
46
     * @var  LoggerInterface
47
     */
48
    private $logger;
49
 
50
    /**
51
     *
52
     * @var array
53
     */
54
    private $config;
55
 
56
    /**
57
     *
58
     * @param AdapterInterface $adapter
59
     * @param AbstractAdapter $cache
60
     * @param LoggerInterface $logger
61
     * @param array $config
62
     */
12314 stevensc 63
    public function __construct($adapter, $cache, $logger, $config)
64
    {
1384 efrain 65
        $this->adapter = $adapter;
66
        $this->cache = $cache;
67
        $this->logger = $logger;
68
        $this->config = $config;
69
    }
70
 
12314 stevensc 71
    public function indexAction()
72
    {
1384 efrain 73
        $request = $this->getRequest();
74
        $currentUserPlugin = $this->plugin('currentUserPlugin');
75
        $currentCompany = $currentUserPlugin->getCompany();
76
        $currentUser = $currentUserPlugin->getUser();
77
 
78
 
79
        $request = $this->getRequest();
80
        if ($request->isGet()) {
81
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
12314 stevensc 82
            if ($sandbox) {
1384 efrain 83
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
84
            } else {
85
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
86
            }
87
 
12314 stevensc 88
 
1384 efrain 89
            $headers = $request->getHeaders();
90
 
91
            $isJson = false;
92
            if ($headers->has('Accept')) {
93
                $accept = $headers->get('Accept');
94
 
95
                $prioritized = $accept->getPrioritized();
96
 
97
                foreach ($prioritized as $key => $value) {
98
                    $raw = trim($value->getRaw());
99
 
100
                    if (!$isJson) {
101
                        $isJson = strpos($raw, 'json');
102
                    }
103
                }
104
            }
105
 
106
            //$isJson = true;
107
            if ($isJson) {
10093 stevensc 108
                $search = $this->params()->fromQuery('search');
109
                $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
1384 efrain 110
 
15371 efrain 111
                $start = intval($this->params()->fromQuery('start', 0), 10);
1384 efrain 112
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
15371 efrain 113
                $page =  intval($start / $records_x_page);
114
                $page++;
115
 
1384 efrain 116
                $order = $this->params()->fromQuery('order', []);
117
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
118
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
119
 
120
                $fields = ['name'];
121
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
122
 
123
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
124
                    $order_direction = 'ASC';
125
                }
126
 
1434 eleazar 127
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
1477 efrain 128
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'recruitment-and-selection/vacancies/delete');
129
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'recruitment-and-selection/vacancies/edit');
1434 eleazar 130
 
12314 stevensc 131
 
15457 efrain 132
                $queryMapper = QueryMapper::getInstance($this->adapter);
133
                $select = $queryMapper->getSql()->select();
134
                $select->from(['tb1' => RecruitmentSelectionVacancyMapper::_TABLE]);
135
                $select->columns(['uuid', 'name', 'last_date', 'status']);
136
                $select->join(['tb2' => JobDescriptionMapper::_TABLE], 'tb1.job_description_id = tb2.id AND tb1.company_id = tb2.company_id', ['job_description' => 'name']);
137
 
138
                $select->where->equalTo('tb1.company_id', $currentCompany->network_id);
139
 
140
                if($search) {
141
                    $select->where->like('tb1.name', '%' . $search . '%');
142
                }
143
                $select->order($order_field . ' ' . $order_direction);
144
 
145
                //echo $select->getSqlString($this->adapter->platform); exit;
146
 
147
                $hydrator   = new ArraySerializableHydrator();
148
                $resultset  = new HydratingResultSet($hydrator);
149
 
150
                $adapter = new DbSelect($select, $queryMapper->getSql(), $resultset);
151
                $paginator = new Paginator($adapter);
152
                $paginator->setItemCountPerPage($records_x_page);
153
                $paginator->setCurrentPageNumber($page);
154
 
155
 
1384 efrain 156
 
157
                $items = [];
158
                $records = $paginator->getCurrentItems();
12314 stevensc 159
 
1384 efrain 160
                foreach ($records as $record) {
15457 efrain 161
                    $dt = \DateTime::createFromFormat('Y-m-d', $record['last_date']);
162
 
163
                    switch($record['status'])
164
                    {
165
                        case RecruitmentSelectionVacancy::STATUS_ACTIVE :
166
                            $status = 'LABEL_ACTIVE';
167
                            break;
168
 
169
                        case RecruitmentSelectionVacancy::STATUS_INACTIVE :
170
                            $status = 'LABEL_INACTIVE';
171
                            break;
172
 
173
                        case RecruitmentSelectionVacancy::STATUS_EXPIRED :
174
                            $status = 'LABEL_EXPIRED';
175
                            break;
176
 
177
                        case RecruitmentSelectionVacancy::STATUS_COMPLETED :
178
                            $status = 'LABEL_COMPLETED';
179
                            break;
180
 
181
                        default :
182
                            $status = 'LABEL_UNKNOWN';
183
                            break;
184
 
1384 efrain 185
                    }
15457 efrain 186
 
187
                    $item = [
188
                      'name' => $record['name'],
189
                      'job_description' => $record['job_description'],
190
                      'last_date' => $dt->format('d/m/Y'),
191
                      'status' => $record->status,
192
                      'actions' => [
193
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('recruitment-and-selection/vacancies/edit', ['id' => $record['uuid']]) : '',
194
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('recruitment-and-selection/vacancies/delete', ['id' => $record['uuid']]) : ''
195
                       ]
196
                    ];
197
 
1384 efrain 198
 
199
                    array_push($items, $item);
200
                }
201
 
202
                return new JsonModel([
203
                    'success' => true,
204
                    'data' => [
205
                        'items' => $items,
206
                        'total' => $paginator->getTotalItemCount(),
207
                    ]
208
                ]);
209
            } else {
210
 
1544 eleazar 211
                $form = new RecruitmentSelectionVacancyForm($this->adapter, $currentCompany->id);
1384 efrain 212
 
1549 eleazar 213
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
214
                $industryMapper = industryMapper::getInstance($this->adapter);
12314 stevensc 215
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
216
 
217
                $jobDescritions = [];
218
                $industries = [];
219
                $jobCategories = [];
220
 
15087 efrain 221
                $records = $jobCategoryMapper->fetchAllActive();
12314 stevensc 222
 
223
                foreach ($records as $record) {
224
                    $jobCategories[$record->uuid] = $record->name;
225
                }
226
 
15087 efrain 227
                $records = $industryMapper->fetchAllActive();
12314 stevensc 228
 
229
                foreach ($records as $record) {
230
                    $industries[$record->uuid] = $record->name;
231
                }
232
 
233
                $records = $currentCompany ?
234
                    $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
15087 efrain 235
                    $jobDescriptionMapper->fetchAllActiveByDefault();
236
 
12314 stevensc 237
                foreach ($records as $record) {
238
                    $jobDescritions[$record->uuid] = $record->name;
239
                }
240
 
15087 efrain 241
 
242
                //print_r($jobDescritions); exit;
243
 
1384 efrain 244
                $this->layout()->setTemplate('layout/layout-backend');
245
                $viewModel = new ViewModel();
1396 eleazar 246
                $viewModel->setTemplate('leaders-linked/recruitment-and-selection-vacancies/index.phtml');
1384 efrain 247
                $viewModel->setVariable('form', $form);
10112 stevensc 248
                $viewModel->setVariable('google_map_key', $google_map_key);
12314 stevensc 249
                $viewModel->setVariable('jobDescritions', $jobDescritions);
250
                $viewModel->setVariable('industries', $industries);
251
                $viewModel->setVariable('jobCategories', $jobCategories);
1561 efrain 252
 
1384 efrain 253
                return $viewModel;
254
            }
255
        } else {
256
            return new JsonModel([
257
                'success' => false,
258
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
12314 stevensc 259
            ]);;
1384 efrain 260
        }
261
    }
262
 
12314 stevensc 263
    public function addAction()
264
    {
1384 efrain 265
        $request = $this->getRequest();
266
        $currentUserPlugin = $this->plugin('currentUserPlugin');
267
        $currentCompany = $currentUserPlugin->getCompany();
268
        $currentUser = $currentUserPlugin->getUser();
269
 
270
        $request = $this->getRequest();
271
 
272
 
273
        if ($request->isPost()) {
1544 eleazar 274
            $form = new RecruitmentSelectionVacancyForm($this->adapter, $currentCompany->id);
1384 efrain 275
            $dataPost = $request->getPost()->toArray();
15087 efrain 276
 
277
 
278
 
279
 
1387 eleazar 280
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 281
 
282
            $form->setData($dataPost);
283
 
284
            if ($form->isValid()) {
285
                $dataPost = (array) $form->getData();
286
 
15087 efrain 287
 
1384 efrain 288
                $hydrator = new ObjectPropertyHydrator();
289
 
1417 eleazar 290
                $location = new Location();
291
                $hydrator->hydrate($dataPost, $location);
12314 stevensc 292
 
293
                $locationMapper = LocationMapper::getInstance($this->adapter);
1452 eleazar 294
                $result = $locationMapper->insert($location);
1451 eleazar 295
 
1417 eleazar 296
 
1418 eleazar 297
                if (!$result) {
298
                    return new JsonModel([
299
                        'success'   => false,
12314 stevensc 300
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
1418 eleazar 301
                    ]);
302
                }
1417 eleazar 303
 
1539 eleazar 304
                $vacancy = new RecruitmentSelectionVacancy();
305
                $hydrator->hydrate($dataPost, $vacancy);
1427 eleazar 306
 
1539 eleazar 307
                $vacancy->location_id = $location->id;
1544 eleazar 308
                $vacancy->company_id = $currentCompany->id;
1384 efrain 309
 
1427 eleazar 310
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
311
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
1539 eleazar 312
                $vacancy->job_description_id = $jobDescription->id;
1427 eleazar 313
 
314
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
12314 stevensc 315
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1539 eleazar 316
                $vacancy->job_category_id = $jobCategory->id;
1427 eleazar 317
 
1428 eleazar 318
                $industryMapper = IndustryMapper::getInstance($this->adapter);
319
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
1539 eleazar 320
                $vacancy->industry_id = $industry->id;
1425 eleazar 321
 
1539 eleazar 322
                $vacancy->description = $dataPost['description'];
323
                $vacancy->last_date = $dataPost['last_date'];
12314 stevensc 324
 
15087 efrain 325
                $dt = \DateTime::createFromFormat('m/d/Y', $vacancy->last_date);
12314 stevensc 326
                if ($dt) {
1539 eleazar 327
                    $vacancy->last_date = $dt->format('Y-m-d');
15087 efrain 328
 
329
 
330
 
1433 eleazar 331
                }
1428 eleazar 332
 
15087 efrain 333
 
1427 eleazar 334
                $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1430 eleazar 335
 
1539 eleazar 336
                $result = $recruitmentSelectionVacancyMapper->insert($vacancy);
1384 efrain 337
 
338
                if ($result) {
1539 eleazar 339
                    $this->logger->info('Se agrego el proceso de reclutamiento' . $vacancy->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 340
 
341
                    $data = [
342
                        'success' => true,
343
                        'data' => 'LABEL_RECORD_ADDED'
344
                    ];
345
                } else {
346
                    $data = [
347
                        'success' => false,
1412 eleazar 348
                        'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 349
                    ];
350
                }
351
 
352
                return new JsonModel($data);
353
            } else {
354
                $messages = [];
355
                $form_messages = (array) $form->getMessages();
356
                foreach ($form_messages as $fieldname => $field_messages) {
357
 
358
                    $messages[$fieldname] = array_values($field_messages);
359
                }
360
 
361
                return new JsonModel([
362
                    'success' => false,
363
                    'data' => $messages
364
                ]);
365
            }
366
        } else {
367
            $data = [
368
                'success' => false,
1575 eleazar 369
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1384 efrain 370
            ];
371
 
372
            return new JsonModel($data);
373
        }
374
 
375
        return new JsonModel($data);
376
    }
377
 
12314 stevensc 378
    public function editAction()
379
    {
1384 efrain 380
        $request = $this->getRequest();
381
        $currentUserPlugin = $this->plugin('currentUserPlugin');
382
        $currentCompany = $currentUserPlugin->getCompany();
383
        $currentUser = $currentUserPlugin->getUser();
384
 
385
        $request = $this->getRequest();
386
        $uuid = $this->params()->fromRoute('id');
387
 
388
 
389
        if (!$uuid) {
390
            $data = [
391
                'success' => false,
392
                'data' => 'ERROR_INVALID_PARAMETER'
393
            ];
394
 
395
            return new JsonModel($data);
396
        }
397
 
1386 eleazar 398
        $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1575 eleazar 399
        $vacancy = $recruitmentSelectionVacancyMapper->fetchOneByUuid($uuid);
400
        if (!$vacancy) {
1384 efrain 401
            $data = [
402
                'success' => false,
403
                'data' => 'ERROR_RECORD_NOT_FOUND'
404
            ];
405
 
406
            return new JsonModel($data);
407
        }
408
 
1575 eleazar 409
        if ($vacancy->company_id != $currentCompany->id) {
1384 efrain 410
            return new JsonModel([
411
                'success' => false,
412
                'data' => 'ERROR_UNAUTHORIZED'
413
            ]);
414
        }
415
 
416
 
417
        if ($request->isPost()) {
1544 eleazar 418
            $form = new RecruitmentSelectionVacancyForm($this->adapter, $currentCompany->id);
1384 efrain 419
            $dataPost = $request->getPost()->toArray();
1387 eleazar 420
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 421
 
422
            $form->setData($dataPost);
423
 
424
            if ($form->isValid()) {
425
                $dataPost = (array) $form->getData();
426
 
427
                $hydrator = new ObjectPropertyHydrator();
1575 eleazar 428
                $hydrator->hydrate($dataPost, $vacancy);
1384 efrain 429
 
1575 eleazar 430
                if (!$vacancy->status) {
431
                    $vacancy->status = RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 432
                }
15118 efrain 433
 
434
                $dt = \DateTime::createFromFormat('m/d/Y', $vacancy->last_date);
435
                if ($dt) {
436
                    $vacancy->last_date = $dt->format('Y-m-d');
437
                }
1384 efrain 438
 
1578 eleazar 439
                $locationMapper = LocationMapper::getInstance($this->adapter);
440
                $location = $locationMapper->fetchOne($vacancy->location_id);
441
                $hydrator->hydrate($dataPost, $location);
442
                $locationMapper->update($location);
443
 
1384 efrain 444
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
445
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
1575 eleazar 446
                $vacancy->job_description_id = $jobDescription->id;
1384 efrain 447
 
1439 eleazar 448
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
12314 stevensc 449
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1575 eleazar 450
                $vacancy->job_category_id = $jobCategory->id;
1384 efrain 451
 
1439 eleazar 452
                $industryMapper = IndustryMapper::getInstance($this->adapter);
453
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
1575 eleazar 454
                $vacancy->industry_id = $industry->id;
1439 eleazar 455
 
1575 eleazar 456
                $vacancy->job_description_id = $jobDescription->id;
457
                $vacancy->job_category_id = $jobCategory->id;
1578 eleazar 458
                $vacancy->industry_id = $industry->id;
1577 eleazar 459
 
460
                $result = $recruitmentSelectionVacancyMapper->update($vacancy);
1439 eleazar 461
 
12314 stevensc 462
 
1384 efrain 463
                if ($result) {
1575 eleazar 464
                    $this->logger->info('Se agrego el proceso de reclutamiento' . $vacancy->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 465
                    $data = [
466
                        'success' => true,
467
                        'data' => 'LABEL_RECORD_UPDATED'
468
                    ];
469
                } else {
470
                    $data = [
471
                        'success' => false,
1386 eleazar 472
                        'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 473
                    ];
474
                }
475
 
476
                return new JsonModel($data);
477
            } else {
478
                $messages = [];
479
                $form_messages = (array) $form->getMessages();
480
                foreach ($form_messages as $fieldname => $field_messages) {
481
                    $messages[$fieldname] = array_values($field_messages);
482
                }
483
 
484
                return new JsonModel([
485
                    'success' => false,
486
                    'data' => $messages
487
                ]);
488
            }
489
        } else if ($request->isGet()) {
490
            $hydrator = new ObjectPropertyHydrator();
491
 
1441 eleazar 492
            $locationMapper = LocationMapper::getInstance($this->adapter);
1575 eleazar 493
            $location = $locationMapper->fetchOne($vacancy->location_id);
1441 eleazar 494
 
1384 efrain 495
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
1575 eleazar 496
            $jobDescription = $jobDescriptionMapper->fetchOne($vacancy->job_description_id);
10258 stevensc 497
            $jobDescritions = [];
1445 eleazar 498
 
10258 stevensc 499
            $records = $currentCompany ?
12314 stevensc 500
                $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
501
                $jobDescriptionMapper->fetchAllByDefault();
502
 
503
            foreach ($records as $record) {
10258 stevensc 504
                $jobDescritions[$record->uuid] = $record->name;
505
            }
506
 
1445 eleazar 507
            $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
1575 eleazar 508
            $jobCategory = $jobCategoryMapper->fetchOne($vacancy->job_category_id);
10254 stevensc 509
            $jobCategories = [];
1445 eleazar 510
 
15087 efrain 511
            $records = $jobCategoryMapper->fetchAllActive();
12314 stevensc 512
 
513
            foreach ($records as $record) {
10254 stevensc 514
                $jobCategories[$record->uuid] = $record->name;
10112 stevensc 515
            }
516
 
1445 eleazar 517
            $industryMapper = IndustryMapper::getInstance($this->adapter);
1575 eleazar 518
            $industry = $industryMapper->fetchOne($vacancy->industry_id);
10254 stevensc 519
            $industries = [];
1445 eleazar 520
 
15087 efrain 521
            $records = $industryMapper->fetchAllActive();
12314 stevensc 522
 
523
            foreach ($records as $record) {
10254 stevensc 524
                $industries[$record->uuid] = $record->name;
525
            }
526
 
12314 stevensc 527
 
1384 efrain 528
            if (!$jobDescription) {
529
                $data = [
530
                    'success' => false,
531
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
532
                ];
533
 
534
                return new JsonModel($data);
535
            }
15087 efrain 536
 
1384 efrain 537
 
15087 efrain 538
            $dt = \DateTime::createFromFormat('Y-m-d', $vacancy->last_date);
539
            $last_date = $dt->format('m/d/Y');
540
 
1384 efrain 541
            $data = [
542
                'success' => true,
543
                'data' => [
1575 eleazar 544
                    'id' => $vacancy->uuid,
545
                    'name' => $vacancy->name,
10258 stevensc 546
                    'job_description' => [
547
                        'description_options' => $jobDescritions,
548
                        'current_description' => [
549
                            'description_id' => $jobDescription->uuid,
550
                            'description_name' => $jobDescription->name
551
                        ]
552
                    ],
1572 eleazar 553
                    'location_search' => $location->formatted_address,
1570 eleazar 554
                    'formatted_address' => $location->formatted_address,
1572 eleazar 555
                    'address1' => $location->address1,
556
                    'address2' => $location->address2,
1568 eleazar 557
                    'country' => $location->country,
558
                    'state' => $location->state,
12314 stevensc 559
                    'city1' => $location->city1,
1568 eleazar 560
                    'city2' => $location->city2,
561
                    'postal_code' => $location->postal_code,
562
                    'latitude' => $location->latitude,
563
                    'longitude' => $location->longitude,
10112 stevensc 564
                    'job_category' => [
10254 stevensc 565
                        'category_options' => $jobCategories,
566
                        'current_category' => [
10112 stevensc 567
                            'job_category_id' => $jobCategory->uuid,
568
                            'job_category_name' => $jobCategory->name,
569
                        ]
570
                    ],
1575 eleazar 571
                    'description' => $vacancy->description,
10254 stevensc 572
                    'industry' => [
573
                        'industry_options' => $industries,
574
                        'current_industry' => [
575
                            'industry_id' => $industry->uuid,
576
                            'industry_name' => $industry->name,
577
                        ]
12314 stevensc 578
                    ],
15087 efrain 579
                    'last_date' => $last_date,
1575 eleazar 580
                    'status' => $vacancy->status,
12314 stevensc 581
                    // 'content' => $vacancy->content ? json_decode($vacancy->content) : [],
1384 efrain 582
                ]
583
            ];
584
 
585
            return new JsonModel($data);
586
        } else {
587
            $data = [
588
                'success' => false,
1574 eleazar 589
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1384 efrain 590
            ];
591
 
592
            return new JsonModel($data);
593
        }
594
 
595
        return new JsonModel($data);
596
    }
597
 
12314 stevensc 598
    public function deleteAction()
599
    {
1384 efrain 600
        $request = $this->getRequest();
601
        $currentUserPlugin = $this->plugin('currentUserPlugin');
602
        $currentCompany = $currentUserPlugin->getCompany();
603
        $currentUser = $currentUserPlugin->getUser();
604
 
605
        $request = $this->getRequest();
606
        $uuid = $this->params()->fromRoute('id');
607
 
608
        if (!$uuid) {
609
            $data = [
610
                'success' => false,
611
                'data' => 'ERROR_INVALID_PARAMETER'
612
            ];
613
 
614
            return new JsonModel($data);
615
        }
616
 
1386 eleazar 617
        $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1539 eleazar 618
        $vacancyMapper = $recruitmentSelectionVacancyMapper->fetchOneByUuid($uuid);
619
        if (!$vacancyMapper) {
1384 efrain 620
            $data = [
621
                'success' => false,
622
                'data' => 'ERROR_RECORD_NOT_FOUND'
623
            ];
624
 
625
            return new JsonModel($data);
626
        }
627
 
1544 eleazar 628
        if ($vacancyMapper->company_id != $currentCompany->id) {
1384 efrain 629
            return new JsonModel([
630
                'success' => false,
631
                'data' => 'ERROR_UNAUTHORIZED'
632
            ]);
633
        }
634
 
635
        if ($request->isPost()) {
636
 
637
 
1539 eleazar 638
            $result = $recruitmentSelectionVacancyMapper->delete($vacancyMapper->id);
1384 efrain 639
            if ($result) {
1539 eleazar 640
                $this->logger->info('Se borro el formulario de reclutamiento ' . $vacancyMapper->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 641
 
642
                $data = [
643
                    'success' => true,
644
                    'data' => 'LABEL_RECORD_DELETED'
645
                ];
646
            } else {
647
 
648
                $data = [
649
                    'success' => false,
1386 eleazar 650
                    'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 651
                ];
652
 
653
                return new JsonModel($data);
654
            }
655
        } else {
656
            $data = [
657
                'success' => false,
658
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
659
            ];
660
 
661
            return new JsonModel($data);
662
        }
663
 
664
        return new JsonModel($data);
665
    }
666
}