Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 12304 | Rev 15087 | 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
 
177
                $records = $jobCategoryMapper->fetchAllActives();
178
 
179
                foreach ($records as $record) {
180
                    $jobCategories[$record->uuid] = $record->name;
181
                }
182
 
183
                $records = $industryMapper->fetchAllActives();
184
 
185
                foreach ($records as $record) {
186
                    $industries[$record->uuid] = $record->name;
187
                }
188
 
189
                $records = $currentCompany ?
190
                    $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
191
                    $jobDescriptionMapper->fetchAllByDefault();
192
 
193
                foreach ($records as $record) {
194
                    $jobDescritions[$record->uuid] = $record->name;
195
                }
196
 
1384 efrain 197
                $this->layout()->setTemplate('layout/layout-backend');
198
                $viewModel = new ViewModel();
1396 eleazar 199
                $viewModel->setTemplate('leaders-linked/recruitment-and-selection-vacancies/index.phtml');
1384 efrain 200
                $viewModel->setVariable('form', $form);
10112 stevensc 201
                $viewModel->setVariable('google_map_key', $google_map_key);
12314 stevensc 202
                $viewModel->setVariable('jobDescritions', $jobDescritions);
203
                $viewModel->setVariable('industries', $industries);
204
                $viewModel->setVariable('jobCategories', $jobCategories);
1561 efrain 205
 
1384 efrain 206
                return $viewModel;
207
            }
208
        } else {
209
            return new JsonModel([
210
                'success' => false,
211
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
12314 stevensc 212
            ]);;
1384 efrain 213
        }
214
    }
215
 
12314 stevensc 216
    public function addAction()
217
    {
1384 efrain 218
        $request = $this->getRequest();
219
        $currentUserPlugin = $this->plugin('currentUserPlugin');
220
        $currentCompany = $currentUserPlugin->getCompany();
221
        $currentUser = $currentUserPlugin->getUser();
222
 
223
        $request = $this->getRequest();
224
 
225
 
226
        if ($request->isPost()) {
1544 eleazar 227
            $form = new RecruitmentSelectionVacancyForm($this->adapter, $currentCompany->id);
1384 efrain 228
            $dataPost = $request->getPost()->toArray();
12052 eleazar 229
            $actual_date = time();
12161 eleazar 230
            $last_dt = date('Y-d-m', strtotime($dataPost['last_date']));
12146 eleazar 231
            $actual_dt = date('Y-m-d', $actual_date);
12165 eleazar 232
            //return new JsonModel([
233
            //   'success'   => false,
234
            //   'data' => [
235
            //    'last' =>  $last_dt,
236
            //    'actual' => $actual_dt,
237
            //    'todb' => $dataPost['last_date']
238
            //   ]
239
            //]);
12314 stevensc 240
            if ($actual_dt > $last_dt) {
241
                return new JsonModel([
242
                    'success' => false,
243
                    'data' => 'ERROR_UNAUTHORIZED'
244
                ]);
12165 eleazar 245
            }
1387 eleazar 246
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 247
 
248
            $form->setData($dataPost);
249
 
250
            if ($form->isValid()) {
251
                $dataPost = (array) $form->getData();
252
 
253
                $hydrator = new ObjectPropertyHydrator();
254
 
1417 eleazar 255
                $location = new Location();
256
                $hydrator->hydrate($dataPost, $location);
12314 stevensc 257
 
258
                $locationMapper = LocationMapper::getInstance($this->adapter);
1452 eleazar 259
                $result = $locationMapper->insert($location);
1451 eleazar 260
 
1417 eleazar 261
 
1418 eleazar 262
                if (!$result) {
263
                    return new JsonModel([
264
                        'success'   => false,
12314 stevensc 265
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
1418 eleazar 266
                    ]);
267
                }
1417 eleazar 268
 
1539 eleazar 269
                $vacancy = new RecruitmentSelectionVacancy();
270
                $hydrator->hydrate($dataPost, $vacancy);
1427 eleazar 271
 
1539 eleazar 272
                $vacancy->location_id = $location->id;
1544 eleazar 273
                $vacancy->company_id = $currentCompany->id;
1384 efrain 274
 
1427 eleazar 275
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
276
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
1539 eleazar 277
                $vacancy->job_description_id = $jobDescription->id;
1427 eleazar 278
 
279
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
12314 stevensc 280
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1539 eleazar 281
                $vacancy->job_category_id = $jobCategory->id;
1427 eleazar 282
 
1428 eleazar 283
                $industryMapper = IndustryMapper::getInstance($this->adapter);
284
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
1539 eleazar 285
                $vacancy->industry_id = $industry->id;
1425 eleazar 286
 
1539 eleazar 287
                $vacancy->description = $dataPost['description'];
288
                $vacancy->last_date = $dataPost['last_date'];
12314 stevensc 289
 
1539 eleazar 290
                $dt = \DateTime::createFromFormat('d/m/Y', $vacancy->last_date);
12314 stevensc 291
                if ($dt) {
1539 eleazar 292
                    $vacancy->last_date = $dt->format('Y-m-d');
1433 eleazar 293
                }
1428 eleazar 294
 
1427 eleazar 295
                $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1430 eleazar 296
 
1539 eleazar 297
                $result = $recruitmentSelectionVacancyMapper->insert($vacancy);
1384 efrain 298
 
299
                if ($result) {
1539 eleazar 300
                    $this->logger->info('Se agrego el proceso de reclutamiento' . $vacancy->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 301
 
302
                    $data = [
303
                        'success' => true,
304
                        'data' => 'LABEL_RECORD_ADDED'
305
                    ];
306
                } else {
307
                    $data = [
308
                        'success' => false,
1412 eleazar 309
                        'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 310
                    ];
311
                }
312
 
313
                return new JsonModel($data);
314
            } else {
315
                $messages = [];
316
                $form_messages = (array) $form->getMessages();
317
                foreach ($form_messages as $fieldname => $field_messages) {
318
 
319
                    $messages[$fieldname] = array_values($field_messages);
320
                }
321
 
322
                return new JsonModel([
323
                    'success' => false,
324
                    'data' => $messages
325
                ]);
326
            }
327
        } else {
328
            $data = [
329
                'success' => false,
1575 eleazar 330
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1384 efrain 331
            ];
332
 
333
            return new JsonModel($data);
334
        }
335
 
336
        return new JsonModel($data);
337
    }
338
 
12314 stevensc 339
    public function editAction()
340
    {
1384 efrain 341
        $request = $this->getRequest();
342
        $currentUserPlugin = $this->plugin('currentUserPlugin');
343
        $currentCompany = $currentUserPlugin->getCompany();
344
        $currentUser = $currentUserPlugin->getUser();
345
 
346
        $request = $this->getRequest();
347
        $uuid = $this->params()->fromRoute('id');
348
 
349
 
350
        if (!$uuid) {
351
            $data = [
352
                'success' => false,
353
                'data' => 'ERROR_INVALID_PARAMETER'
354
            ];
355
 
356
            return new JsonModel($data);
357
        }
358
 
1386 eleazar 359
        $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1575 eleazar 360
        $vacancy = $recruitmentSelectionVacancyMapper->fetchOneByUuid($uuid);
361
        if (!$vacancy) {
1384 efrain 362
            $data = [
363
                'success' => false,
364
                'data' => 'ERROR_RECORD_NOT_FOUND'
365
            ];
366
 
367
            return new JsonModel($data);
368
        }
369
 
1575 eleazar 370
        if ($vacancy->company_id != $currentCompany->id) {
1384 efrain 371
            return new JsonModel([
372
                'success' => false,
373
                'data' => 'ERROR_UNAUTHORIZED'
374
            ]);
375
        }
376
 
377
 
378
        if ($request->isPost()) {
1544 eleazar 379
            $form = new RecruitmentSelectionVacancyForm($this->adapter, $currentCompany->id);
1384 efrain 380
            $dataPost = $request->getPost()->toArray();
1387 eleazar 381
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 382
 
383
            $form->setData($dataPost);
384
 
385
            if ($form->isValid()) {
386
                $dataPost = (array) $form->getData();
387
 
388
                $hydrator = new ObjectPropertyHydrator();
1575 eleazar 389
                $hydrator->hydrate($dataPost, $vacancy);
1384 efrain 390
 
1575 eleazar 391
                if (!$vacancy->status) {
392
                    $vacancy->status = RecruitmentSelectionVacancy::STATUS_INACTIVE;
1384 efrain 393
                }
394
 
1578 eleazar 395
                $locationMapper = LocationMapper::getInstance($this->adapter);
396
                $location = $locationMapper->fetchOne($vacancy->location_id);
397
                $hydrator->hydrate($dataPost, $location);
398
                $locationMapper->update($location);
399
 
1384 efrain 400
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
401
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
1575 eleazar 402
                $vacancy->job_description_id = $jobDescription->id;
1384 efrain 403
 
1439 eleazar 404
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
12314 stevensc 405
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1575 eleazar 406
                $vacancy->job_category_id = $jobCategory->id;
1384 efrain 407
 
1439 eleazar 408
                $industryMapper = IndustryMapper::getInstance($this->adapter);
409
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
1575 eleazar 410
                $vacancy->industry_id = $industry->id;
1439 eleazar 411
 
1575 eleazar 412
                $vacancy->job_description_id = $jobDescription->id;
413
                $vacancy->job_category_id = $jobCategory->id;
1578 eleazar 414
                $vacancy->industry_id = $industry->id;
1577 eleazar 415
 
416
                $result = $recruitmentSelectionVacancyMapper->update($vacancy);
1439 eleazar 417
 
12314 stevensc 418
 
1384 efrain 419
                if ($result) {
1575 eleazar 420
                    $this->logger->info('Se agrego el proceso de reclutamiento' . $vacancy->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 421
                    $data = [
422
                        'success' => true,
423
                        'data' => 'LABEL_RECORD_UPDATED'
424
                    ];
425
                } else {
426
                    $data = [
427
                        'success' => false,
1386 eleazar 428
                        'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 429
                    ];
430
                }
431
 
432
                return new JsonModel($data);
433
            } else {
434
                $messages = [];
435
                $form_messages = (array) $form->getMessages();
436
                foreach ($form_messages as $fieldname => $field_messages) {
437
                    $messages[$fieldname] = array_values($field_messages);
438
                }
439
 
440
                return new JsonModel([
441
                    'success' => false,
442
                    'data' => $messages
443
                ]);
444
            }
445
        } else if ($request->isGet()) {
446
            $hydrator = new ObjectPropertyHydrator();
447
 
1441 eleazar 448
            $locationMapper = LocationMapper::getInstance($this->adapter);
1575 eleazar 449
            $location = $locationMapper->fetchOne($vacancy->location_id);
1441 eleazar 450
 
1384 efrain 451
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
1575 eleazar 452
            $jobDescription = $jobDescriptionMapper->fetchOne($vacancy->job_description_id);
10258 stevensc 453
            $jobDescritions = [];
1445 eleazar 454
 
10258 stevensc 455
            $records = $currentCompany ?
12314 stevensc 456
                $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
457
                $jobDescriptionMapper->fetchAllByDefault();
458
 
459
            foreach ($records as $record) {
10258 stevensc 460
                $jobDescritions[$record->uuid] = $record->name;
461
            }
462
 
1445 eleazar 463
            $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
1575 eleazar 464
            $jobCategory = $jobCategoryMapper->fetchOne($vacancy->job_category_id);
10254 stevensc 465
            $jobCategories = [];
1445 eleazar 466
 
10256 stevensc 467
            $records = $jobCategoryMapper->fetchAllActives();
12314 stevensc 468
 
469
            foreach ($records as $record) {
10254 stevensc 470
                $jobCategories[$record->uuid] = $record->name;
10112 stevensc 471
            }
472
 
1445 eleazar 473
            $industryMapper = IndustryMapper::getInstance($this->adapter);
1575 eleazar 474
            $industry = $industryMapper->fetchOne($vacancy->industry_id);
10254 stevensc 475
            $industries = [];
1445 eleazar 476
 
10254 stevensc 477
            $records = $industryMapper->fetchAllActives();
12314 stevensc 478
 
479
            foreach ($records as $record) {
10254 stevensc 480
                $industries[$record->uuid] = $record->name;
481
            }
482
 
12314 stevensc 483
 
1384 efrain 484
            if (!$jobDescription) {
485
                $data = [
486
                    'success' => false,
487
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
488
                ];
489
 
490
                return new JsonModel($data);
491
            }
492
 
493
            $data = [
494
                'success' => true,
495
                'data' => [
1575 eleazar 496
                    'id' => $vacancy->uuid,
497
                    'name' => $vacancy->name,
10258 stevensc 498
                    'job_description' => [
499
                        'description_options' => $jobDescritions,
500
                        'current_description' => [
501
                            'description_id' => $jobDescription->uuid,
502
                            'description_name' => $jobDescription->name
503
                        ]
504
                    ],
1572 eleazar 505
                    'location_search' => $location->formatted_address,
1570 eleazar 506
                    'formatted_address' => $location->formatted_address,
1572 eleazar 507
                    'address1' => $location->address1,
508
                    'address2' => $location->address2,
1568 eleazar 509
                    'country' => $location->country,
510
                    'state' => $location->state,
12314 stevensc 511
                    'city1' => $location->city1,
1568 eleazar 512
                    'city2' => $location->city2,
513
                    'postal_code' => $location->postal_code,
514
                    'latitude' => $location->latitude,
515
                    'longitude' => $location->longitude,
10112 stevensc 516
                    'job_category' => [
10254 stevensc 517
                        'category_options' => $jobCategories,
518
                        'current_category' => [
10112 stevensc 519
                            'job_category_id' => $jobCategory->uuid,
520
                            'job_category_name' => $jobCategory->name,
521
                        ]
522
                    ],
1575 eleazar 523
                    'description' => $vacancy->description,
10254 stevensc 524
                    'industry' => [
525
                        'industry_options' => $industries,
526
                        'current_industry' => [
527
                            'industry_id' => $industry->uuid,
528
                            'industry_name' => $industry->name,
529
                        ]
12314 stevensc 530
                    ],
1575 eleazar 531
                    'last_date' => $vacancy->last_date,
532
                    'status' => $vacancy->status,
12314 stevensc 533
                    // 'content' => $vacancy->content ? json_decode($vacancy->content) : [],
1384 efrain 534
                ]
535
            ];
536
 
537
            return new JsonModel($data);
538
        } else {
539
            $data = [
540
                'success' => false,
1574 eleazar 541
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1384 efrain 542
            ];
543
 
544
            return new JsonModel($data);
545
        }
546
 
547
        return new JsonModel($data);
548
    }
549
 
12314 stevensc 550
    public function deleteAction()
551
    {
1384 efrain 552
        $request = $this->getRequest();
553
        $currentUserPlugin = $this->plugin('currentUserPlugin');
554
        $currentCompany = $currentUserPlugin->getCompany();
555
        $currentUser = $currentUserPlugin->getUser();
556
 
557
        $request = $this->getRequest();
558
        $uuid = $this->params()->fromRoute('id');
559
 
560
        if (!$uuid) {
561
            $data = [
562
                'success' => false,
563
                'data' => 'ERROR_INVALID_PARAMETER'
564
            ];
565
 
566
            return new JsonModel($data);
567
        }
568
 
1386 eleazar 569
        $recruitmentSelectionVacancyMapper = RecruitmentSelectionVacancyMapper::getInstance($this->adapter);
1539 eleazar 570
        $vacancyMapper = $recruitmentSelectionVacancyMapper->fetchOneByUuid($uuid);
571
        if (!$vacancyMapper) {
1384 efrain 572
            $data = [
573
                'success' => false,
574
                'data' => 'ERROR_RECORD_NOT_FOUND'
575
            ];
576
 
577
            return new JsonModel($data);
578
        }
579
 
1544 eleazar 580
        if ($vacancyMapper->company_id != $currentCompany->id) {
1384 efrain 581
            return new JsonModel([
582
                'success' => false,
583
                'data' => 'ERROR_UNAUTHORIZED'
584
            ]);
585
        }
586
 
587
        if ($request->isPost()) {
588
 
589
 
1539 eleazar 590
            $result = $recruitmentSelectionVacancyMapper->delete($vacancyMapper->id);
1384 efrain 591
            if ($result) {
1539 eleazar 592
                $this->logger->info('Se borro el formulario de reclutamiento ' . $vacancyMapper->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1384 efrain 593
 
594
                $data = [
595
                    'success' => true,
596
                    'data' => 'LABEL_RECORD_DELETED'
597
                ];
598
            } else {
599
 
600
                $data = [
601
                    'success' => false,
1386 eleazar 602
                    'data' => $recruitmentSelectionVacancyMapper->getError()
1384 efrain 603
                ];
604
 
605
                return new JsonModel($data);
606
            }
607
        } else {
608
            $data = [
609
                'success' => false,
610
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
611
            ];
612
 
613
            return new JsonModel($data);
614
        }
615
 
616
        return new JsonModel($data);
617
    }
618
}