Proyectos de Subversion LeadersLinked - Backend

Rev

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