Proyectos de Subversion LeadersLinked - Backend

Rev

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