Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
<?php
11139 stevensc 2
 
1 www 3
/**
4
 *
5
 * Controlador: Mis Perfiles
6
 *
7
 */
11139 stevensc 8
 
1 www 9
declare(strict_types=1);
10
 
11
namespace LeadersLinked\Controller;
12
 
13
use Laminas\Db\Adapter\AdapterInterface;
14
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
15
use Laminas\Mvc\Controller\AbstractActionController;
16
use Laminas\Log\LoggerInterface;
17
use Laminas\View\Model\ViewModel;
18
use Laminas\View\Model\JsonModel;
19
 
20
use LeadersLinked\Library\Functions;
21
 
22
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
23
use LeadersLinked\Mapper\CompanyUserMapper;
24
use LeadersLinked\Model\Job;
25
use LeadersLinked\Model\Location;
26
use LeadersLinked\Mapper\LocationMapper;
27
use LeadersLinked\Mapper\JobMapper;
28
use LeadersLinked\Mapper\CompanyMapper;
29
use LeadersLinked\Model\CompanyUser;
30
use LeadersLinked\Mapper\QueryMapper;
31
 
32
use LeadersLinked\Mapper\JobCategoryMapper;
33
use LeadersLinked\Form\CompanyJobExtendedForm;
34
use LeadersLinked\Form\CompanyJobLocationForm;
35
use LeadersLinked\Form\CompanyJobCreateForm;
36
use LeadersLinked\Form\CompanyJobCategoryForm;
37
use LeadersLinked\Form\CompanyJobEmploymentTypeForm;
38
use LeadersLinked\Form\CompanyJobExperienceForm;
39
use LeadersLinked\Form\CompanyJobSalaryForm;
40
use LeadersLinked\Form\CompanyJobDegreeForm;
41
use LeadersLinked\Form\CompanyJobLanguageForm;
42
use LeadersLinked\Form\CompanyJobSkillForm;
43
use LeadersLinked\Form\CompanyJobLastDateOfApplicationForm;
44
use LeadersLinked\Mapper\JobSkillMapper;
45
use LeadersLinked\Model\JobSkill;
46
use LeadersLinked\Model\JobDegree;
47
use LeadersLinked\Mapper\JobDegreeMapper;
48
use LeadersLinked\Model\JobLanguage;
49
use LeadersLinked\Mapper\JobLanguageMapper;
50
use LeadersLinked\Mapper\DegreeMapper;
51
use LeadersLinked\Mapper\LanguageMapper;
52
use LeadersLinked\Mapper\SkillMapper;
53
use LeadersLinked\Mapper\UserMapper;
54
use LeadersLinked\Model\User;
55
use Laminas\Paginator\Adapter\DbSelect;
56
use Laminas\Paginator\Paginator;
57
use LeadersLinked\Mapper\JobApplicationMapper;
58
use LeadersLinked\Mapper\UserProfileMapper;
59
use LeadersLinked\Mapper\IndustryMapper;
60
use LeadersLinked\Mapper\CurrencyMapper;
61
use LeadersLinked\Form\CompanyJobTitleForm;
62
use LeadersLinked\Form\CompanyJobStatusForm;
63
 
64
class JobController extends AbstractActionController
65
{
66
    /**
67
     *
68
     * @var AdapterInterface
69
     */
70
    private $adapter;
11139 stevensc 71
 
72
 
1 www 73
    /**
74
     *
75
     * @var AbstractAdapter
76
     */
77
    private $cache;
11139 stevensc 78
 
1 www 79
    /**
80
     *
81
     * @var  LoggerInterface
82
     */
83
    private $logger;
84
 
11139 stevensc 85
 
1 www 86
    /**
87
     *
88
     * @var array
89
     */
90
    private $config;
11139 stevensc 91
 
1 www 92
    /**
93
     *
94
     * @param AdapterInterface $adapter
95
     * @param AbstractAdapter $cache
96
     * @param LoggerInterface $logger
97
     * @param array $config
98
     */
11139 stevensc 99
    public function __construct($adapter, $cache, $logger,  $config)
1 www 100
    {
101
        $this->adapter      = $adapter;
102
        $this->cache        = $cache;
103
        $this->logger       = $logger;
104
        $this->config       = $config;
11139 stevensc 105
    }
1 www 106
 
107
    /**
108
     *
109
     * Generación del listado de perfiles
110
     * {@inheritDoc}
111
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
112
     */
113
    public function indexAction()
114
    {
115
        $currentUserPlugin = $this->plugin('currentUserPlugin');
116
        $currentUser = $currentUserPlugin->getUser();
117
        $currentCompany = $currentUserPlugin->getCompany();
118
 
11139 stevensc 119
 
120
 
121
 
1 www 122
        $request = $this->getRequest();
11139 stevensc 123
        if ($request->isGet()) {
1 www 124
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
11139 stevensc 125
            if ($sandbox) {
1 www 126
                $google_map_key  = $this->config['leaderslinked.google_map.sandbox_api_key'];
127
            } else {
128
                $google_map_key  = $this->config['leaderslinked.google_map.production_api_key'];
129
            }
11139 stevensc 130
 
1 www 131
            $headers  = $request->getHeaders();
11139 stevensc 132
 
1 www 133
            $isJson = false;
11139 stevensc 134
            if ($headers->has('Accept')) {
1 www 135
                $accept = $headers->get('Accept');
11139 stevensc 136
 
1 www 137
                $prioritized = $accept->getPrioritized();
11139 stevensc 138
 
139
                foreach ($prioritized as $key => $value) {
1 www 140
                    $raw = trim($value->getRaw());
11139 stevensc 141
 
142
                    if (!$isJson) {
1 www 143
                        $isJson = strpos($raw, 'json');
144
                    }
145
                }
146
            }
11139 stevensc 147
 
148
            if ($isJson) {
7135 stevensc 149
                $search = $this->params()->fromQuery('search');
150
                $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
11139 stevensc 151
 
1 www 152
                $page               = intval($this->params()->fromQuery('start', 1), 10);
153
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
154
                $order =  $this->params()->fromQuery('order', []);
155
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
11139 stevensc 156
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
157
 
1 www 158
                $fields =  ['last_date_of_application', 'titlte'];
159
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'last_date_of_application';
11139 stevensc 160
 
161
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
1 www 162
                    $order_direction = 'ASC';
163
                }
11139 stevensc 164
 
1 www 165
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
166
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'jobs/delete');
11139 stevensc 167
 
1 www 168
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'jobs/edit');
169
                $allowUsersWhoApplied = $acl->isAllowed($currentUser->usertype_id, 'jobs/users-who-applied');
11139 stevensc 170
 
171
 
172
 
1 www 173
                $jobMapper = JobMapper::getInstance($this->adapter);
174
                $jobApplicationMapper = JobApplicationMapper::getInstance($this->adapter);
175
                $paginator = $jobMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
176
 
11139 stevensc 177
 
1 www 178
                $records = $paginator->getCurrentItems();
179
 
180
                $items = [];
11139 stevensc 181
                foreach ($records as $record) {
182
 
183
                    switch ($record->status) {
184
                        case  Job::STATUS_ACTIVE:
1 www 185
                            $status = 'LABEL_ACTIVE';
186
                            break;
11139 stevensc 187
 
188
                        case  Job::STATUS_INACTIVE:
1 www 189
                            $status = 'LABEL_INACTIVE';
190
                            break;
11139 stevensc 191
 
192
 
193
                        case  Job::STATUS_DELETED:
1 www 194
                            $status = 'LABEL_DELETED';
195
                            break;
11139 stevensc 196
 
197
                        default:
1 www 198
                            $status = '';
199
                            break;
200
                    }
11139 stevensc 201
 
202
                    switch ($record->employment_type) {
203
                        case Job::EMPLOYMENT_TYPE_FULL_TIME:
1 www 204
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
205
                            break;
11139 stevensc 206
                        case Job::EMPLOYMENT_TYPE_PART_TIME:
1 www 207
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
208
                            break;
11139 stevensc 209
 
210
                        case Job::EMPLOYMENT_TYPE_CONTRACT:
1 www 211
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
212
                            break;
11139 stevensc 213
 
214
                        case Job::EMPLOYMENT_TYPE_TEMPORARY:
1 www 215
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
216
                            break;
11139 stevensc 217
 
218
                        default:
1 www 219
                            $employment_type = '';
220
                            break;
221
                    }
11139 stevensc 222
 
1 www 223
                    $users_who_applied = $jobApplicationMapper->fetchTotalApplicationsByJobId($record->id);
224
 
11139 stevensc 225
 
226
                    $dt = \DateTime::createFromFormat('Y-m-d', $record->last_date_of_application);
227
 
228
 
1 www 229
                    $item = [
11139 stevensc 230
                        'last_date_of_application' => $dt->format('d/m/Y'),
231
                        'title' => $record->title,
232
 
233
 
1 www 234
                        'details' => [
235
                            'status' => $status,
11139 stevensc 236
                            'employment_type' => $employment_type,
1 www 237
                            'users_who_applied' => $users_who_applied,
238
                        ],
239
                        'actions' => [
11139 stevensc 240
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('jobs/edit', ['id' => $record->uuid]) : '',
241
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('jobs/delete', ['id' => $record->uuid]) : '',
242
                            'link_users_who_applied'  => $allowUsersWhoApplied && $users_who_applied  ? $this->url()->fromRoute('jobs/users-who-applied', ['id' => $record->uuid]) : '',
243
                        ]
1 www 244
                    ];
11139 stevensc 245
 
1 www 246
                    array_push($items, $item);
247
                }
248
 
11139 stevensc 249
 
250
 
251
 
1 www 252
                $response = [
253
                    'success' => true,
254
                    'data' => [
255
                        'items' => $items,
256
                        'total' => $paginator->getTotalItemCount(),
257
                    ]
258
                ];
11139 stevensc 259
 
1 www 260
                return new JsonModel($response);
261
            } else {
11139 stevensc 262
 
263
 
1 www 264
                $formAdd = new CompanyJobCreateForm($this->adapter);
265
                $formExtended = new CompanyJobExtendedForm();
266
                $formLocation = new CompanyJobLocationForm();
267
                $formEmploymentType = new CompanyJobEmploymentTypeForm();
268
                $formJobCategory = new CompanyJobCategoryForm($this->adapter);
269
                $formExperience = new CompanyJobExperienceForm();
270
                $formSalary = new CompanyJobSalaryForm($this->adapter);
271
                $fromLastDateOfApplication = new CompanyJobLastDateOfApplicationForm();
272
                $formDegree = new CompanyJobDegreeForm($this->adapter);
273
                $formLanguage = new CompanyJobLanguageForm($this->adapter);
274
                $formSkill = new CompanyJobSkillForm($this->adapter);
275
                $formStatus = new CompanyJobStatusForm();
276
                $formTitle = new CompanyJobTitleForm();
11139 stevensc 277
 
278
                $jobCategories = [];
279
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
280
                $records = $jobCategoryMapper->fetchAllActives();
281
 
282
                foreach ($records as $record) {
283
                    $jobCategories[$record->uuid] = $record->name;
284
                }
285
 
14156 efrain 286
 
1 www 287
                $this->layout()->setTemplate('layout/layout-backend');
288
                $viewModel = new ViewModel();
289
                $viewModel->setTemplate('leaders-linked/jobs/index.phtml');
290
                $viewModel->setVariables([
291
                    'formAdd'                   => $formAdd,
292
                    'formLocation'              => $formLocation,
293
                    'formExtended'              => $formExtended,
294
                    'formEmploymentType'        => $formEmploymentType,
295
                    'formJobCategory'           => $formJobCategory,
296
                    'formExperience'            => $formExperience,
297
                    'formSalary'                => $formSalary,
298
                    'fromLastDateOfApplication' => $fromLastDateOfApplication,
299
                    'formDegree'                => $formDegree,
300
                    'formLanguage'              => $formLanguage,
301
                    'formSkill'                 => $formSkill,
302
                    'formStatus'                => $formStatus,
303
                    'formTitle'                 => $formTitle,
11139 stevensc 304
                    'job_categories'            => $jobCategories,
1 www 305
                    'google_map_key'    => $google_map_key,
306
 
307
                ]);
11139 stevensc 308
                return $viewModel;
1 www 309
            }
310
        } else {
311
            return new JsonModel([
312
                'success' => false,
313
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
314
            ]);
315
        }
316
    }
11139 stevensc 317
 
1 www 318
    /**
319
     *
320
     * Agregar un nuevo perfil
321
     * @return \Laminas\View\Model\JsonModel
322
     */
323
    public function addAction()
324
    {
325
        $request = $this->getRequest();
11139 stevensc 326
 
327
 
1 www 328
        $currentUserPlugin = $this->plugin('currentUserPlugin');
329
        $currentUser = $currentUserPlugin->getUser();
330
        $currentCompany = $currentUserPlugin->getCompany();
331
 
11139 stevensc 332
 
333
 
334
        if ($request->isPost()) {
1 www 335
            $form = new  CompanyJobCreateForm($this->adapter);
336
            $dataPost = $request->getPost()->toArray();
11139 stevensc 337
 
1 www 338
            $form->setData($dataPost);
11139 stevensc 339
 
340
            if ($form->isValid()) {
1 www 341
                $companyMapper = CompanyMapper::getInstance($this->adapter);
342
                $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 343
 
344
 
1 www 345
                $dataPost = (array) $form->getData();
11139 stevensc 346
 
1 www 347
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
11139 stevensc 348
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1 www 349
 
11139 stevensc 350
 
351
 
1 www 352
                $hydrator = new ObjectPropertyHydrator();
353
                $location = new Location();
354
                $hydrator->hydrate($dataPost, $location);
11139 stevensc 355
 
356
 
357
                $locationMapper = LocationMapper::getInstance($this->adapter);
1 www 358
                $result = $locationMapper->insert($location);
359
 
11139 stevensc 360
                if ($result) {
361
 
1 www 362
                    $job = new Job();
363
                    $hydrator->hydrate($dataPost, $job);
11139 stevensc 364
 
1 www 365
                    $job->location_id = $location->id;
366
                    $job->status = Job::STATUS_INACTIVE;
367
                    $job->company_id = $company->id;
368
                    $job->job_category_id = $jobCategory->id;
369
                    $job->description = '';
11139 stevensc 370
 
1 www 371
                    $last_date_of_application = $job->last_date_of_application;
11139 stevensc 372
 
1 www 373
                    $dt = \DateTime::createFromFormat('d/m/Y', $last_date_of_application);
11139 stevensc 374
                    if ($dt) {
1 www 375
                        $job->last_date_of_application = $dt->format('Y-m-d');
376
                    }
11139 stevensc 377
 
378
 
379
 
1 www 380
                    $jobMapper = JobMapper::getInstance($this->adapter);
381
                    $result = $jobMapper->insert($job);
11139 stevensc 382
 
383
                    if ($result) {
384
 
1 www 385
                        $this->logger->info('Se agrego el empleo : ' . $job->title . ' a  la empresa ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 386
 
387
                        switch ($job->employment_type) {
388
                            case Job::EMPLOYMENT_TYPE_FULL_TIME:
1 www 389
                                $employment_type = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
390
                                break;
11139 stevensc 391
                            case Job::EMPLOYMENT_TYPE_PART_TIME:
1 www 392
                                $employment_type = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
393
                                break;
11139 stevensc 394
 
395
                            case Job::EMPLOYMENT_TYPE_CONTRACT:
1 www 396
                                $employment_type = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
397
                                break;
11139 stevensc 398
 
399
                            case Job::EMPLOYMENT_TYPE_TEMPORARY:
1 www 400
                                $employment_type = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
401
                                break;
11139 stevensc 402
 
403
                            default:
1 www 404
                                $employment_type = '';
405
                                break;
406
                        }
11139 stevensc 407
 
1 www 408
                        $months = [
409
                            1 => 'LABEL_MONTH_JANUARY',
410
                            2 => 'LABEL_MONTH_FEBRUARY',
411
                            3 => 'LABEL_MONTH_MARCH',
412
                            4 => 'LABEL_MONTH_APRIL',
413
                            5 => 'LABEL_MONTH_MAY',
414
                            6 => 'LABEL_MONTH_JUNE',
415
                            7 => 'LABEL_MONTH_JULY',
416
                            8 => 'LABEL_MONTH_AUGUST',
417
                            9 => 'LABEL_MONTH_SEPTEMBER',
418
                            10 => 'LABEL_MONTH_OCTOBER',
419
                            11 => 'LABEL_MONTH_NOVEMBER',
420
                            12 => 'LABEL_MONTH_DECEMBER',
421
                        ];
11139 stevensc 422
 
1 www 423
                        $dt = \DateTime::createFromFormat('Y-m-d', $job->last_date_of_application);
424
                        $last_date_of_application = $dt->format('d') . ' de ' . $months[$dt->format('n')] . ' de ' . $dt->format('Y');
11139 stevensc 425
 
1 www 426
                        $job = $jobMapper->fetchOne($job->id);
11139 stevensc 427
 
428
 
1 www 429
                        //'LABEL_RECORD_ADDED'
430
                        $response = [
431
                            'success'   => true,
432
                            'data'   => [
433
                                'title' => $job->title,
434
                                'status' => 'LABEL_INACTIVE',
435
                                'employment_type' => $employment_type,
436
                                'job_category' => $jobCategory->name,
437
                                'last_date_of_application' => $last_date_of_application,
438
                                'location'  => $location->formatted_address,
11139 stevensc 439
                                'route_status' => $this->url()->fromRoute('jobs/edit/status', ['id' => $job->uuid]),
440
                                'route_title' => $this->url()->fromRoute('jobs/edit/title', ['id' => $job->uuid]),
441
                                'route_extended' => $this->url()->fromRoute('jobs/edit/extended', ['id' => $job->uuid]),
442
                                'route_location' => $this->url()->fromRoute('jobs/edit/location', ['id' => $job->uuid]),
443
                                'route_job_category' => $this->url()->fromRoute('jobs/edit/job-category', ['id' => $job->uuid]),
444
                                'route_employment_type' => $this->url()->fromRoute('jobs/edit/employment-type', ['id' => $job->uuid]),
445
                                'route_salary' => $this->url()->fromRoute('jobs/edit/salary', ['id' => $job->uuid]),
446
                                'route_experience' => $this->url()->fromRoute('jobs/edit/experience', ['id' => $job->uuid]),
447
                                'route_languages' => $this->url()->fromRoute('jobs/edit/languages', ['id' => $job->uuid]),
448
                                'route_degrees' => $this->url()->fromRoute('jobs/edit/degrees', ['id' => $job->uuid]),
449
                                'route_skills' => $this->url()->fromRoute('jobs/edit/skills', ['id' => $job->uuid]),
450
                                'route_last_date_of_application' => $this->url()->fromRoute('jobs/edit/last-date-of-application', ['id' => $job->uuid]),
451
 
1 www 452
                            ]
453
                        ];
454
                    } else {
455
                        $response = [
456
                            'success'   => false,
457
                            'data' => 'ERROR_THERE_WAS_AN_ERROR'
458
                        ];
459
                    }
460
                } else {
461
                    $response = [
462
                        'success'   => false,
463
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
464
                    ];
465
                }
466
            } else {
467
                $messages = [];
468
                $form_messages = (array) $form->getMessages();
11139 stevensc 469
                foreach ($form_messages  as $fieldname => $field_messages) {
470
 
1 www 471
                    $messages[$fieldname] = array_values($field_messages);
472
                }
11139 stevensc 473
 
1 www 474
                return new JsonModel([
475
                    'success'   => false,
476
                    'data'   => $messages
477
                ]);
478
            }
479
        } else {
480
            $response = [
481
                'success' => false,
482
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
483
            ];
11139 stevensc 484
        }
1 www 485
 
486
        return new JsonModel($response);
487
    }
11139 stevensc 488
 
1 www 489
    /**
490
     *
491
     * Borrar un perfil excepto el público
492
     * @return \Laminas\View\Model\JsonModel
493
     */
494
    public function deleteAction()
495
    {
11139 stevensc 496
 
1 www 497
        $currentUserPlugin = $this->plugin('currentUserPlugin');
498
        $currentUser = $currentUserPlugin->getUser();
499
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 500
 
501
 
1 www 502
        $request = $this->getRequest();
503
        $id = $this->params()->fromRoute('id');
11139 stevensc 504
 
505
        if (!$id) {
1 www 506
            $data = [
507
                'success'   => false,
508
                'data'   => 'ERROR_INVALID_PARAMETER'
509
            ];
11139 stevensc 510
 
1 www 511
            return new JsonModel($data);
512
        }
11139 stevensc 513
 
1 www 514
        $jobMapper = JobMapper::getInstance($this->adapter);
515
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 516
        if (!$job) {
1 www 517
            $data = [
518
                'success'   => false,
519
                'data'   => 'ERROR_JOB_NOT_FOUND'
520
            ];
11139 stevensc 521
 
1 www 522
            return new JsonModel($data);
523
        }
11139 stevensc 524
 
525
        if ($job->company_id != $currentCompany->id) {
1 www 526
            $data = [
527
                'success'   => false,
528
                'data'   => 'ERROR_UNAUTHORIZED'
529
            ];
11139 stevensc 530
 
1 www 531
            return new JsonModel($data);
532
        }
533
 
11139 stevensc 534
 
535
 
536
        if ($request->isPost()) {
1 www 537
            $companyMapper = CompanyMapper::getInstance($this->adapter);
538
            $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 539
 
1 www 540
            $result = $jobMapper->delete($job);
11139 stevensc 541
            if ($result) {
1 www 542
                $this->logger->info('Se borro el empleo : ' . $job->title . ' de la empresa : ' .  $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 543
 
1 www 544
                $data = [
545
                    'success' => true,
546
                    'data' => 'LABEL_RECORD_DELETED'
547
                ];
548
            } else {
11139 stevensc 549
 
1 www 550
                $data = [
551
                    'success'   => false,
552
                    'data'      => $job->getError()
553
                ];
11139 stevensc 554
 
1 www 555
                return new JsonModel($data);
556
            }
557
        } else {
558
            $data = [
559
                'success' => false,
560
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
561
            ];
11139 stevensc 562
 
1 www 563
            return new JsonModel($data);
564
        }
11139 stevensc 565
 
1 www 566
        return new JsonModel($data);
567
    }
11139 stevensc 568
 
1 www 569
    /**
570
     * Presenta el perfil con las opciónes de edición de cada sección
571
     * @return \Laminas\Http\Response|\Laminas\View\Model\ViewModel|\Laminas\View\Model\JsonModel
572
     */
573
    public function editAction()
574
    {
575
        $currentUserPlugin = $this->plugin('currentUserPlugin');
576
        $currentUser = $currentUserPlugin->getUser();
577
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 578
 
579
 
1 www 580
        $request = $this->getRequest();
581
        $id = $this->params()->fromRoute('id');
11139 stevensc 582
 
583
        if (!$id) {
1 www 584
            $data = [
585
                'success'   => false,
586
                'data'   => 'ERROR_INVALID_PARAMETER'
587
            ];
11139 stevensc 588
 
1 www 589
            return new JsonModel($data);
590
        }
11139 stevensc 591
 
1 www 592
        $jobMapper = JobMapper::getInstance($this->adapter);
593
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 594
        if (!$job) {
1 www 595
            $data = [
596
                'success'   => false,
597
                'data'   => 'ERROR_JOB_NOT_FOUND'
598
            ];
11139 stevensc 599
 
1 www 600
            return new JsonModel($data);
601
        }
11139 stevensc 602
 
603
        if ($job->company_id != $currentCompany->id) {
1 www 604
            $data = [
605
                'success'   => false,
606
                'data'   => 'ERROR_UNAUTHORIZED'
607
            ];
11139 stevensc 608
 
1 www 609
            return new JsonModel($data);
610
        }
611
 
11139 stevensc 612
 
613
        if ($request->isGet()) {
1 www 614
            $months = [
615
                1 => 'LABEL_MONTH_JANUARY',
616
                2 => 'LABEL_MONTH_FEBRUARY',
617
                3 => 'LABEL_MONTH_MARCH',
618
                4 => 'LABEL_MONTH_APRIL',
619
                5 => 'LABEL_MONTH_MAY',
620
                6 => 'LABEL_MONTH_JUNE',
621
                7 => 'LABEL_MONTH_JULY',
622
                8 => 'LABEL_MONTH_AUGUST',
623
                9 => 'LABEL_MONTH_SEPTEMBER',
624
                10 => 'LABEL_MONTH_OCTOBER',
625
                11 => 'LABEL_MONTH_NOVEMBER',
626
                12 => 'LABEL_MONTH_DECEMBER',
627
            ];
11139 stevensc 628
 
1 www 629
            $dt = \DateTime::createFromFormat('Y-m-d', $job->last_date_of_application);
630
            $last_date_of_application = $dt->format('d') . ' de ' . $months[$dt->format('n')] . ' de ' . $dt->format('Y');
11139 stevensc 631
 
632
 
633
 
1 www 634
            $locationMapper = LocationMapper::getInstance($this->adapter);
635
            $location = $locationMapper->fetchOne($job->location_id);
11139 stevensc 636
 
1 www 637
            $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
638
            $jobCategory = $jobCategoryMapper->fetchOne($job->job_category_id);
11139 stevensc 639
 
640
            switch ($job->employment_type) {
641
                case Job::EMPLOYMENT_TYPE_FULL_TIME:
1 www 642
                    $employment_type = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
643
                    break;
11139 stevensc 644
                case Job::EMPLOYMENT_TYPE_PART_TIME:
1 www 645
                    $employment_type = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
646
                    break;
11139 stevensc 647
 
648
                case Job::EMPLOYMENT_TYPE_CONTRACT:
1 www 649
                    $employment_type = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
650
                    break;
11139 stevensc 651
 
652
                case Job::EMPLOYMENT_TYPE_TEMPORARY:
1 www 653
                    $employment_type = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
654
                    break;
11139 stevensc 655
 
656
                default:
1 www 657
                    $employment_type = '';
658
                    break;
659
            }
660
 
11139 stevensc 661
            switch ($job->status) {
662
                case Job::STATUS_ACTIVE:
1 www 663
                    $status = 'LABEL_ACTIVE';
664
                    break;
11139 stevensc 665
 
666
                case Job::STATUS_INACTIVE:
1 www 667
                    $status = 'LABEL_INACTIVE';
668
                    break;
11139 stevensc 669
 
670
                default:
1 www 671
                    $status = '';
672
                    break;
673
            }
11139 stevensc 674
 
675
 
1 www 676
            $degreeMapper = DegreeMapper::getInstance($this->adapter);
11139 stevensc 677
 
1 www 678
            $jobDegreeMapper = JobDegreeMapper::getInstance($this->adapter);
679
            $records = $jobDegreeMapper->fetchAllByJobId($job->id);
11139 stevensc 680
 
1 www 681
            $job_degrees = [];
11139 stevensc 682
            foreach ($records as $record) {
1 www 683
                $degree = $degreeMapper->fetchOne($record->degree_id);
684
                array_push($job_degrees, $degree->name);
685
            }
686
 
11139 stevensc 687
 
1 www 688
            $languageMapper = LanguageMapper::getInstance($this->adapter);
689
            $jobLanguageMapper = JobLanguageMapper::getInstance($this->adapter);
690
            $records = $jobLanguageMapper->fetchAllByJobId($job->id);
11139 stevensc 691
 
1 www 692
            $job_languages = [];
11139 stevensc 693
            foreach ($records as $record) {
1 www 694
                $language = $languageMapper->fetchOne($record->language_id);
695
                array_push($job_languages, $language->name);
696
            }
11139 stevensc 697
 
1 www 698
            $skillMapper = SkillMapper::getInstance($this->adapter);
11139 stevensc 699
 
1 www 700
            $jobSkillMapper = JobSkillMapper::getInstance($this->adapter);
701
            $records = $jobSkillMapper->fetchAllByJobId($job->id);
11139 stevensc 702
 
1 www 703
            $job_skills = [];
11139 stevensc 704
            foreach ($records as $record) {
1 www 705
                $skill = $skillMapper->fetchOne($record->skill_id);
706
                array_push($job_skills, $skill->name);
707
            }
708
 
709
 
11139 stevensc 710
 
1 www 711
            return new JsonModel([
11139 stevensc 712
                'success' => true,
1 www 713
                'data' => [
714
                    'title'                     => $job->title,
715
                    'status'                    => $status,
11899 stevensc 716
                    'description'               => $job->description,
1 www 717
                    'location'                  => $location->formatted_address,
718
                    'employment_type'           => $employment_type,
719
                    'last_date_of_application'  => $last_date_of_application,
720
                    'job_category'              => $jobCategory->name,
721
                    'experience'                => $job->experience_visible ? $job->experience_min . '-' . $job->experience_max : '',
722
                    'salary'                    => $job->salary_visible ==  Job::SALARY_VISIBLE_YES ? $job->salary_min . '-' . $job->salary_max . ' ' . $job->salary_currency : '',
723
                    'degrees'                   => $job_degrees,
724
                    'languages'                 => $job_languages,
725
                    'skills'                    => $job_skills,
11139 stevensc 726
 
727
                    'route_status'              => $this->url()->fromRoute('jobs/edit/status', ['id' => $job->uuid]),
728
                    'route_title'               => $this->url()->fromRoute('jobs/edit/title', ['id' => $job->uuid]),
729
                    'route_extended'            => $this->url()->fromRoute('jobs/edit/extended', ['id' => $job->uuid]),
730
                    'route_location'            => $this->url()->fromRoute('jobs/edit/location', ['id' => $job->uuid]),
731
                    'route_job_category'        => $this->url()->fromRoute('jobs/edit/job-category', ['id' => $job->uuid]),
732
                    'route_employment_type'     => $this->url()->fromRoute('jobs/edit/employment-type', ['id' => $job->uuid]),
733
                    'route_salary'              => $this->url()->fromRoute('jobs/edit/salary', ['id' => $job->uuid]),
734
                    'route_experience'          => $this->url()->fromRoute('jobs/edit/experience', ['id' => $job->uuid]),
735
                    'route_languages'           => $this->url()->fromRoute('jobs/edit/languages', ['id' => $job->uuid]),
736
                    'route_degrees'             => $this->url()->fromRoute('jobs/edit/degrees', ['id' => $job->uuid]),
737
                    'route_skills'              => $this->url()->fromRoute('jobs/edit/skills', ['id' => $job->uuid]),
738
                    'route_last_date_of_application'    => $this->url()->fromRoute('jobs/edit/last-date-of-application', ['id' => $job->uuid]),
1 www 739
                ]
740
            ]);
741
        } else {
742
            $data = [
743
                'success' => false,
744
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
745
            ];
11139 stevensc 746
 
1 www 747
            return new JsonModel($data);
748
        }
11139 stevensc 749
 
1 www 750
        return new JsonModel($data);
751
    }
11139 stevensc 752
 
753
 
754
 
1 www 755
    /**
756
     * Actualización de la descripción y cualquier otro campo extendido del perfil a futuro
757
     * @return \Laminas\View\Model\JsonModel
758
     */
759
    public function extendedAction()
760
    {
761
        $currentUserPlugin = $this->plugin('currentUserPlugin');
762
        $currentUser = $currentUserPlugin->getUser();
763
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 764
 
765
 
1 www 766
        $request = $this->getRequest();
767
        $id = $this->params()->fromRoute('id');
768
 
11139 stevensc 769
 
770
        if (!$id) {
1 www 771
            $response = [
772
                'success' => false,
773
                'data' => 'ERROR_INVALID_PARAMETER'
774
            ];
11139 stevensc 775
 
1 www 776
            return new JsonModel($response);
777
        }
11139 stevensc 778
 
1 www 779
        $jobMapper = JobMapper::getInstance($this->adapter);
780
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 781
 
782
        if (!$job) {
1 www 783
            $response = [
784
                'success' => false,
785
                'data' => 'ERROR_JOB_NOT_FOUND'
786
            ];
11139 stevensc 787
 
1 www 788
            return new JsonModel($response);
789
        }
11139 stevensc 790
 
791
        if ($job->company_id != $currentCompany->id) {
1 www 792
            $response = [
793
                'success' => false,
794
                'data' => 'ERROR_UNAUTHORIZED'
795
            ];
11139 stevensc 796
 
1 www 797
            return new JsonModel($response);
798
        }
11139 stevensc 799
 
800
 
1 www 801
        $companyMapper = CompanyMapper::getInstance($this->adapter);
802
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 803
        if (!$company) {
1 www 804
            $response = [
805
                'success' => false,
806
                'data' => 'ERROR_COMPANY_NOT_FOUND'
807
            ];
11139 stevensc 808
 
1 www 809
            return new JsonModel($response);
810
        }
811
 
812
 
11139 stevensc 813
 
814
 
1 www 815
        $request = $this->getRequest();
11139 stevensc 816
        if ($request->isGet()) {
1 www 817
            $data = [
818
                'success' => true,
819
                'data' => [
7136 stevensc 820
                    'description' => strip_tags($job->description, 'p'),
1 www 821
                ]
822
            ];
11139 stevensc 823
 
1 www 824
            return new JsonModel($data);
11139 stevensc 825
        } else if ($request->isPost()) {
826
 
827
 
1 www 828
            $form = new CompanyJobExtendedForm();
829
            $dataPost = $request->getPost()->toArray();
11139 stevensc 830
 
1 www 831
            $form->setData($dataPost);
11139 stevensc 832
 
833
            if ($form->isValid()) {
1 www 834
                $dataPost = (array) $form->getData();
11139 stevensc 835
 
1 www 836
                $hydrator = new ObjectPropertyHydrator();
837
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 838
 
1 www 839
                $jobMapper->updateExtended($job);
11139 stevensc 840
 
1 www 841
                $this->logger->info('Se actualizo las descripción del empleo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 842
 
1 www 843
                return new JsonModel([
844
                    'success'   => true,
845
                    'data' => [
7136 stevensc 846
                        'description' => strip_tags($job->description, 'p'),
1 www 847
                    ]
848
                ]);
849
            } else {
850
                $messages = [];
851
                $form_messages = (array) $form->getMessages();
11139 stevensc 852
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 853
                    $messages[$fieldname] = array_values($field_messages);
854
                }
11139 stevensc 855
 
1 www 856
                return new JsonModel([
857
                    'success'   => false,
858
                    'data'   => $messages
859
                ]);
860
            }
861
        }
11139 stevensc 862
 
863
 
1 www 864
        $data = [
865
            'success' => false,
866
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
867
        ];
11139 stevensc 868
 
869
 
1 www 870
        return new JsonModel($data);
871
    }
11139 stevensc 872
 
873
 
1 www 874
    public function locationAction()
875
    {
11139 stevensc 876
 
1 www 877
        $currentUserPlugin = $this->plugin('currentUserPlugin');
878
        $currentUser = $currentUserPlugin->getUser();
879
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 880
 
881
 
1 www 882
        $request = $this->getRequest();
883
        $id = $this->params()->fromRoute('id');
11139 stevensc 884
 
885
 
886
        if (!$id) {
1 www 887
            $response = [
888
                'success' => false,
889
                'data' => 'ERROR_INVALID_PARAMETER'
890
            ];
11139 stevensc 891
 
1 www 892
            return new JsonModel($response);
893
        }
11139 stevensc 894
 
1 www 895
        $jobMapper = JobMapper::getInstance($this->adapter);
896
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 897
 
898
        if (!$job) {
1 www 899
            $response = [
900
                'success' => false,
901
                'data' => 'ERROR_JOB_NOT_FOUND'
902
            ];
11139 stevensc 903
 
1 www 904
            return new JsonModel($response);
905
        }
11139 stevensc 906
 
907
        if ($job->company_id != $currentCompany->id) {
1 www 908
            $response = [
909
                'success' => false,
910
                'data' => 'ERROR_UNAUTHORIZED'
911
            ];
11139 stevensc 912
 
1 www 913
            return new JsonModel($response);
914
        }
11139 stevensc 915
 
916
 
1 www 917
        $companyMapper = CompanyMapper::getInstance($this->adapter);
918
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 919
        if (!$company) {
1 www 920
            $response = [
921
                'success' => false,
922
                'data' => 'ERROR_COMPANY_NOT_FOUND'
923
            ];
11139 stevensc 924
 
1 www 925
            return new JsonModel($response);
926
        }
11139 stevensc 927
 
928
 
1 www 929
        $request = $this->getRequest();
11139 stevensc 930
        if ($request->isPost()) {
1 www 931
            $form = new CompanyJobLocationForm();
932
            $dataPost = $request->getPost()->toArray();
11139 stevensc 933
 
1 www 934
            $form->setData($dataPost);
11139 stevensc 935
            if ($form->isValid()) {
1 www 936
                $dataPost = (array) $form->getData();
11139 stevensc 937
 
1 www 938
                $locationMapper = LocationMapper::getInstance($this->adapter);
939
                $location = $locationMapper->fetchOne($job->location_id);
11139 stevensc 940
 
1 www 941
                $hydrator = new ObjectPropertyHydrator();
942
                $hydrator->hydrate($dataPost, $location);
11139 stevensc 943
 
944
                if ($locationMapper->update($location)) {
945
                    $this->logger->info('Se actualizo una ubicación del empleo: ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
946
 
947
                    $response = [
948
                        'success' => true,
949
                        'data' =>  $location->formatted_address
950
                    ];
1 www 951
                } else {
952
                    $response = [
953
                        'success'   => false,
954
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
955
                    ];
956
                }
957
            } else {
958
                $response = [
959
                    'success'   => false,
960
                    'data'   =>   'ERROR_PLACED_AUTOCOMPLETE_DOES_NOT_CONTAIN_GEOMETRY'
961
                ];
962
            }
11139 stevensc 963
 
1 www 964
            return new JsonModel($response);
965
        }
11139 stevensc 966
 
1 www 967
        $response = [
968
            'success' => false,
969
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
970
        ];
11139 stevensc 971
 
972
 
1 www 973
        return new JsonModel($response);
974
    }
11139 stevensc 975
 
1 www 976
    public function employmentTypeAction()
977
    {
11139 stevensc 978
 
1 www 979
        $currentUserPlugin = $this->plugin('currentUserPlugin');
980
        $currentUser = $currentUserPlugin->getUser();
981
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 982
 
983
 
1 www 984
        $request = $this->getRequest();
985
        $id = $this->params()->fromRoute('id');
11139 stevensc 986
 
987
 
988
        if (!$id) {
1 www 989
            $response = [
990
                'success' => false,
991
                'data' => 'ERROR_INVALID_PARAMETER'
992
            ];
11139 stevensc 993
 
1 www 994
            return new JsonModel($response);
995
        }
11139 stevensc 996
 
1 www 997
        $jobMapper = JobMapper::getInstance($this->adapter);
998
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 999
 
1000
        if (!$job) {
1 www 1001
            $response = [
1002
                'success' => false,
1003
                'data' => 'ERROR_JOB_NOT_FOUND'
1004
            ];
11139 stevensc 1005
 
1 www 1006
            return new JsonModel($response);
1007
        }
11139 stevensc 1008
 
1009
        if ($job->company_id != $currentCompany->id) {
1 www 1010
            $response = [
1011
                'success' => false,
1012
                'data' => 'ERROR_UNAUTHORIZED'
1013
            ];
11139 stevensc 1014
 
1 www 1015
            return new JsonModel($response);
1016
        }
11139 stevensc 1017
 
1018
 
1 www 1019
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1020
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1021
        if (!$company) {
1 www 1022
            $response = [
1023
                'success' => false,
1024
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1025
            ];
11139 stevensc 1026
 
1 www 1027
            return new JsonModel($response);
1028
        }
11139 stevensc 1029
 
8367 efrain 1030
        $employment_types = [];
1031
        $employment_types[Job::EMPLOYMENT_TYPE_FULL_TIME] = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
1032
        $employment_types[Job::EMPLOYMENT_TYPE_PART_TIME] = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
1033
        $employment_types[Job::EMPLOYMENT_TYPE_CONTRACT] = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
1034
        $employment_types[Job::EMPLOYMENT_TYPE_TEMPORARY] = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
1035
 
11139 stevensc 1036
 
1 www 1037
        $request = $this->getRequest();
11139 stevensc 1038
        if ($request->isGet()) {
1 www 1039
            $data = [
1040
                'success' => true,
8367 efrain 1041
                'data' => [
1042
                    'employment_type' => $job->employment_type,
1043
                    'employment_types' => $employment_types
11139 stevensc 1044
                ]
1 www 1045
            ];
11139 stevensc 1046
 
1 www 1047
            return new JsonModel($data);
11139 stevensc 1048
        } else if ($request->isPost()) {
1049
 
1 www 1050
            $form = new CompanyJobEmploymentTypeForm();
1051
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1052
 
1 www 1053
            $form->setData($dataPost);
11139 stevensc 1054
 
1055
            if ($form->isValid()) {
1056
 
1 www 1057
                $dataPost = (array) $form->getData();
11139 stevensc 1058
 
1 www 1059
                $hydrator = new ObjectPropertyHydrator();
1060
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 1061
 
1062
                if ($jobMapper->updateEmploymentType($job)) {
1063
                    $this->logger->info('Se actualizo tipo de empleo: ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1064
 
1065
                    switch ($job->employment_type) {
1066
                        case Job::EMPLOYMENT_TYPE_FULL_TIME:
1 www 1067
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
1068
                            break;
11139 stevensc 1069
                        case Job::EMPLOYMENT_TYPE_PART_TIME:
1 www 1070
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
1071
                            break;
11139 stevensc 1072
 
1073
                        case Job::EMPLOYMENT_TYPE_CONTRACT:
1 www 1074
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
1075
                            break;
11139 stevensc 1076
 
1077
                        case Job::EMPLOYMENT_TYPE_TEMPORARY:
1 www 1078
                            $employment_type = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
1079
                            break;
11139 stevensc 1080
 
1081
                        default:
1 www 1082
                            $employment_type = '';
1083
                            break;
1084
                    }
1085
 
11139 stevensc 1086
 
1087
 
1 www 1088
                    return new JsonModel([
1089
                        'success'   => true,
1090
                        'data' => $employment_type
1091
                    ]);
11139 stevensc 1092
                } else {
1 www 1093
                    return new JsonModel([
1094
                        'success'   => false,
1095
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
1096
                    ]);
1097
                }
1098
            } else {
1099
                $messages = [];
1100
                $form_messages = (array) $form->getMessages();
11139 stevensc 1101
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1102
                    $messages[$fieldname] = array_values($field_messages);
1103
                }
11139 stevensc 1104
 
1 www 1105
                return new JsonModel([
1106
                    'success'   => false,
1107
                    'data'   => $messages
1108
                ]);
1109
            }
1110
        }
11139 stevensc 1111
 
1112
 
1 www 1113
        $data = [
1114
            'success' => false,
1115
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1116
        ];
11139 stevensc 1117
 
1118
 
1 www 1119
        return new JsonModel($data);
1120
    }
11139 stevensc 1121
 
1 www 1122
    public function jobCategoryAction()
1123
    {
11139 stevensc 1124
 
1 www 1125
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1126
        $currentUser = $currentUserPlugin->getUser();
1127
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1128
 
1129
 
1 www 1130
        $request = $this->getRequest();
1131
        $id = $this->params()->fromRoute('id');
11139 stevensc 1132
 
1133
 
1134
        if (!$id) {
1 www 1135
            $response = [
1136
                'success' => false,
1137
                'data' => 'ERROR_INVALID_PARAMETER'
1138
            ];
11139 stevensc 1139
 
1 www 1140
            return new JsonModel($response);
1141
        }
11139 stevensc 1142
 
1 www 1143
        $jobMapper = JobMapper::getInstance($this->adapter);
1144
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1145
 
1146
        if (!$job) {
1 www 1147
            $response = [
1148
                'success' => false,
1149
                'data' => 'ERROR_JOB_NOT_FOUND'
1150
            ];
11139 stevensc 1151
 
1 www 1152
            return new JsonModel($response);
1153
        }
11139 stevensc 1154
 
1155
        if ($job->company_id != $currentCompany->id) {
1 www 1156
            $response = [
1157
                'success' => false,
1158
                'data' => 'ERROR_UNAUTHORIZED'
1159
            ];
11139 stevensc 1160
 
1 www 1161
            return new JsonModel($response);
1162
        }
11139 stevensc 1163
 
1164
 
1 www 1165
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1166
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1167
        if (!$company) {
1 www 1168
            $response = [
1169
                'success' => false,
1170
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1171
            ];
11139 stevensc 1172
 
1 www 1173
            return new JsonModel($response);
1174
        }
11139 stevensc 1175
 
8367 efrain 1176
        $jobCategories = [];
1 www 1177
        $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
8367 efrain 1178
        $records = $jobCategoryMapper->fetchAllActives();
11139 stevensc 1179
 
1180
        foreach ($records as $record) {
8367 efrain 1181
            $jobCategories[$record->uuid] = $record->name;
1182
        }
11139 stevensc 1183
 
1184
 
1185
        $jobCategory = $jobCategoryMapper->fetchOne($job->job_category_id);
1186
 
1187
 
1 www 1188
        $request = $this->getRequest();
11139 stevensc 1189
        if ($request->isGet()) {
1 www 1190
            $data = [
1191
                'success' => true,
8367 efrain 1192
                'data' => [
1193
                    'job_category' => $jobCategory->uuid,
1194
                    'job_categories' => $jobCategories
11139 stevensc 1195
                ],
1 www 1196
            ];
11139 stevensc 1197
 
1 www 1198
            return new JsonModel($data);
11139 stevensc 1199
        } else if ($request->isPost()) {
1200
 
1 www 1201
            $form = new CompanyJobCategoryForm($this->adapter);
1202
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1203
 
1 www 1204
            $form->setData($dataPost);
11139 stevensc 1205
 
1206
            if ($form->isValid()) {
1207
                $this->logger->info('Se actualizaron la categoría de la empresa: ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1208
 
1 www 1209
                $dataPost = (array) $form->getData();
11139 stevensc 1210
 
1 www 1211
                $jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
11139 stevensc 1212
                $jobCategory = $jobCategoryMapper->fetchOneByUuid($dataPost['job_category_id']);
1 www 1213
 
1214
                $job->job_category_id = $jobCategory->id;
11139 stevensc 1215
 
1216
                if ($jobMapper->updateJobCategory($job)) {
1217
 
1218
 
1 www 1219
                    return new JsonModel([
1220
                        'success'   => true,
1221
                        'data' => $jobCategory->name
1222
                    ]);
11139 stevensc 1223
                } else {
1 www 1224
                    return new JsonModel([
1225
                        'success'   => false,
1226
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
1227
                    ]);
1228
                }
1229
            } else {
1230
                $messages = [];
1231
                $form_messages = (array) $form->getMessages();
11139 stevensc 1232
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1233
                    $messages[$fieldname] = array_values($field_messages);
1234
                }
11139 stevensc 1235
 
1 www 1236
                return new JsonModel([
1237
                    'success'   => false,
1238
                    'data'   => $messages
1239
                ]);
1240
            }
1241
        }
11139 stevensc 1242
 
1243
 
1 www 1244
        $data = [
1245
            'success' => false,
1246
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1247
        ];
11139 stevensc 1248
 
1249
 
1 www 1250
        return new JsonModel($data);
1251
    }
1252
 
11139 stevensc 1253
 
1 www 1254
    public function salaryAction()
1255
    {
1256
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1257
        $currentUser = $currentUserPlugin->getUser();
1258
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1259
 
1260
 
1 www 1261
        $request = $this->getRequest();
1262
        $id = $this->params()->fromRoute('id');
11139 stevensc 1263
 
1264
 
1265
        if (!$id) {
1 www 1266
            $response = [
1267
                'success' => false,
1268
                'data' => 'ERROR_INVALID_PARAMETER'
1269
            ];
11139 stevensc 1270
 
1 www 1271
            return new JsonModel($response);
1272
        }
11139 stevensc 1273
 
1 www 1274
        $jobMapper = JobMapper::getInstance($this->adapter);
1275
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1276
 
1277
        if (!$job) {
1 www 1278
            $response = [
1279
                'success' => false,
1280
                'data' => 'ERROR_JOB_NOT_FOUND'
1281
            ];
11139 stevensc 1282
 
1 www 1283
            return new JsonModel($response);
1284
        }
11139 stevensc 1285
 
1286
        if ($job->company_id != $currentCompany->id) {
1 www 1287
            $response = [
1288
                'success' => false,
1289
                'data' => 'ERROR_UNAUTHORIZED'
1290
            ];
11139 stevensc 1291
 
1 www 1292
            return new JsonModel($response);
1293
        }
11139 stevensc 1294
 
1295
 
1 www 1296
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1297
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1298
        if (!$company) {
1 www 1299
            $response = [
1300
                'success' => false,
1301
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1302
            ];
11139 stevensc 1303
 
1 www 1304
            return new JsonModel($response);
1305
        }
11139 stevensc 1306
 
1307
 
1308
 
1 www 1309
        $request = $this->getRequest();
11139 stevensc 1310
        if ($request->isGet()) {
1 www 1311
            $data = [
1312
                'success' => true,
1313
                'data' => [
1314
                    'salary_visible' => $job->salary_visible,
1315
                    'salary_currency' => $job->salary_currency,
1316
                    'salary_min' => $job->salary_min,
1317
                    'salary_max' =>  $job->salary_max
1318
                ]
1319
            ];
11139 stevensc 1320
 
1 www 1321
            return new JsonModel($data);
11139 stevensc 1322
        } else if ($request->isPost()) {
1323
 
1324
 
1 www 1325
            $form = new CompanyJobSalaryForm($this->adapter);
1326
            $dataPost = $request->getPost()->toArray();
1327
 
11139 stevensc 1328
            $dataPost['salary_visible'] = empty($dataPost['salary_visible']) ? Job::SALARY_VISIBLE_NO :  $dataPost['salary_visible'];
1329
            $dataPost['salary_currency'] = empty($dataPost['salary_currency']) ? 'USD' :  $dataPost['salary_currency'];
1330
 
1331
 
1 www 1332
            $form->setData($dataPost);
11139 stevensc 1333
 
1334
            if ($form->isValid()) {
1 www 1335
                $dataPost = (array) $form->getData();
11139 stevensc 1336
 
1 www 1337
                $hydrator = new ObjectPropertyHydrator();
1338
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 1339
 
1 www 1340
                $jobMapper->updateSalary($job);
11139 stevensc 1341
 
1 www 1342
                $this->logger->info('Se actualizo el salario del empleo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 1343
 
1 www 1344
                return new JsonModel([
1345
                    'success'   => true,
11139 stevensc 1346
                    'data' =>  $job->salary_visible == Job::SALARY_VISIBLE_YES ?  $job->salary_min . '-' . $job->salary_max . ' ' . $job->salary_currency : ''
1 www 1347
                ]);
1348
            } else {
1349
                $messages = [];
1350
                $form_messages = (array) $form->getMessages();
11139 stevensc 1351
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1352
                    $messages[$fieldname] = array_values($field_messages);
1353
                }
11139 stevensc 1354
 
1 www 1355
                return new JsonModel([
1356
                    'success'   => false,
1357
                    'data'   => $messages
1358
                ]);
1359
            }
1360
        }
11139 stevensc 1361
 
1362
 
1 www 1363
        $data = [
1364
            'success' => false,
1365
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1366
        ];
11139 stevensc 1367
 
1368
 
1 www 1369
        return new JsonModel($data);
1370
    }
11139 stevensc 1371
 
1 www 1372
    public function experienceAction()
1373
    {
1374
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1375
        $currentUser = $currentUserPlugin->getUser();
1376
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1377
 
1378
 
1 www 1379
        $request = $this->getRequest();
1380
        $id = $this->params()->fromRoute('id');
11139 stevensc 1381
 
1382
 
1383
        if (!$id) {
1 www 1384
            $response = [
1385
                'success' => false,
1386
                'data' => 'ERROR_INVALID_PARAMETER'
1387
            ];
11139 stevensc 1388
 
1 www 1389
            return new JsonModel($response);
1390
        }
11139 stevensc 1391
 
1 www 1392
        $jobMapper = JobMapper::getInstance($this->adapter);
1393
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1394
 
1395
        if (!$job) {
1 www 1396
            $response = [
1397
                'success' => false,
1398
                'data' => 'ERROR_JOB_NOT_FOUND'
1399
            ];
11139 stevensc 1400
 
1 www 1401
            return new JsonModel($response);
1402
        }
11139 stevensc 1403
 
1404
        if ($job->company_id != $currentCompany->id) {
1 www 1405
            $response = [
1406
                'success' => false,
1407
                'data' => 'ERROR_UNAUTHORIZED'
1408
            ];
11139 stevensc 1409
 
1 www 1410
            return new JsonModel($response);
1411
        }
11139 stevensc 1412
 
1413
 
1 www 1414
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1415
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1416
        if (!$company) {
1 www 1417
            $response = [
1418
                'success' => false,
1419
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1420
            ];
11139 stevensc 1421
 
1 www 1422
            return new JsonModel($response);
1423
        }
11139 stevensc 1424
 
1 www 1425
        $request = $this->getRequest();
11139 stevensc 1426
        if ($request->isGet()) {
1 www 1427
            $data = [
1428
                'success' => true,
1429
                'data' =>  [
1430
                    'experience_visible' => $job->experience_visible,
1431
                    'experience_min' => $job->experience_min,
1432
                    'experience_max' => $job->experience_max
11139 stevensc 1433
                ]
1 www 1434
            ];
11139 stevensc 1435
 
1 www 1436
            return new JsonModel($data);
11139 stevensc 1437
        } else if ($request->isPost()) {
1438
 
1439
 
1 www 1440
            $form = new CompanyJobExperienceForm();
1441
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1442
 
1 www 1443
            $form->setData($dataPost);
11139 stevensc 1444
 
1445
            if ($form->isValid()) {
1 www 1446
                $dataPost = (array) $form->getData();
11139 stevensc 1447
 
1 www 1448
                $hydrator = new ObjectPropertyHydrator();
1449
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 1450
 
1 www 1451
                $jobMapper->updateExperience($job);
11139 stevensc 1452
 
1 www 1453
                $this->logger->info('Se actualizo el experiencia del empleo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 1454
 
1 www 1455
                return new JsonModel([
1456
                    'success'   => true,
1457
                    'data' => $job->experience_visible ? $job->experience_min . '-' . $job->experience_max . ' LABEL_YEARS' : ''
1458
                ]);
1459
            } else {
1460
                $messages = [];
1461
                $form_messages = (array) $form->getMessages();
11139 stevensc 1462
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1463
                    $messages[$fieldname] = array_values($field_messages);
1464
                }
11139 stevensc 1465
 
1 www 1466
                return new JsonModel([
1467
                    'success'   => false,
1468
                    'data'   => $messages
1469
                ]);
1470
            }
1471
        }
11139 stevensc 1472
 
1473
 
1 www 1474
        $data = [
1475
            'success' => false,
1476
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1477
        ];
11139 stevensc 1478
 
1479
 
1 www 1480
        return new JsonModel($data);
1481
    }
11139 stevensc 1482
 
1 www 1483
    public function skillAction()
1484
    {
11139 stevensc 1485
 
1 www 1486
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1487
        $currentUser = $currentUserPlugin->getUser();
1488
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1489
 
1490
 
1 www 1491
        $request = $this->getRequest();
1492
        $id = $this->params()->fromRoute('id');
11139 stevensc 1493
 
1494
 
1495
        if (!$id) {
1 www 1496
            $response = [
1497
                'success' => false,
1498
                'data' => 'ERROR_INVALID_PARAMETER'
1499
            ];
11139 stevensc 1500
 
1 www 1501
            return new JsonModel($response);
1502
        }
11139 stevensc 1503
 
1 www 1504
        $jobMapper = JobMapper::getInstance($this->adapter);
1505
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1506
 
1507
        if (!$job) {
1 www 1508
            $response = [
1509
                'success' => false,
1510
                'data' => 'ERROR_JOB_NOT_FOUND'
1511
            ];
11139 stevensc 1512
 
1 www 1513
            return new JsonModel($response);
1514
        }
11139 stevensc 1515
 
1516
        if ($job->company_id != $currentCompany->id) {
1 www 1517
            $response = [
1518
                'success' => false,
1519
                'data' => 'ERROR_UNAUTHORIZED'
1520
            ];
11139 stevensc 1521
 
1 www 1522
            return new JsonModel($response);
1523
        }
11139 stevensc 1524
 
1525
 
1 www 1526
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1527
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1528
        if (!$company) {
1 www 1529
            $response = [
1530
                'success' => false,
1531
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1532
            ];
11139 stevensc 1533
 
1 www 1534
            return new JsonModel($response);
1535
        }
11139 stevensc 1536
 
1537
 
1538
 
1 www 1539
        $request = $this->getRequest();
11139 stevensc 1540
        if ($request->isGet()) {
1541
 
8367 efrain 1542
            $skills = [];
1 www 1543
            $skillMapper = SkillMapper::getInstance($this->adapter);
8367 efrain 1544
            $records = $skillMapper->fetchAllActives();
11139 stevensc 1545
 
1546
            foreach ($records as $record) {
8367 efrain 1547
                $skills[$record->uuid] = $record->name;
1548
            }
11139 stevensc 1549
 
1 www 1550
            $jobSkillMapper = JobSkillMapper::getInstance($this->adapter);
8367 efrain 1551
            $skillsByjob  = $jobSkillMapper->fetchAllByJobId($job->id);
11139 stevensc 1552
 
1 www 1553
            $items = [];
11139 stevensc 1554
            foreach ($skillsByjob as $skill) {
1555
                $skill = $skillMapper->fetchOne($skill->skill_id);
1556
 
1557
 
1558
                array_push($items, $skill->uuid);
1 www 1559
            }
11139 stevensc 1560
 
1 www 1561
            $data = [
1562
                'success' => true,
8367 efrain 1563
                'data' => [
1564
                    'skills_selected' => $items,
1565
                    'skills_available' => $skills
11139 stevensc 1566
                ]
1 www 1567
            ];
11139 stevensc 1568
 
1 www 1569
            return new JsonModel($data);
11139 stevensc 1570
        } else if ($request->isPost()) {
1571
 
1 www 1572
            $form = new CompanyJobSkillForm($this->adapter);
1573
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1574
 
1 www 1575
            $form->setData($dataPost);
11139 stevensc 1576
 
1577
            if ($form->isValid()) {
1 www 1578
                $this->logger->info('Se actualizaron las habilidades requeridas del empleo : ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 1579
 
1 www 1580
                $skillMapper = SkillMapper::getInstance($this->adapter);
11139 stevensc 1581
 
1 www 1582
                $jobSkillMapper = JobSkillMapper::getInstance($this->adapter);
1583
                $jobSkillMapper->deleteByJobId($job->id);
11139 stevensc 1584
 
1 www 1585
                $dataPost = (array) $form->getData();
1586
                $skills = $dataPost['skills'];
11139 stevensc 1587
                foreach ($skills as $skill_id) {
1588
                    $skill = $skillMapper->fetchOneByUuid($skill_id);
1589
 
1 www 1590
                    $jobSkill = new JobSkill();
1591
                    $jobSkill->job_id = $job->id;
1592
                    $jobSkill->skill_id = $skill->id;
11139 stevensc 1593
 
1 www 1594
                    $jobSkillMapper->insert($jobSkill);
1595
                }
11139 stevensc 1596
 
1 www 1597
                $items = [];
11139 stevensc 1598
                $records = $jobSkillMapper->fetchAllByJobId($job->id);
1599
                foreach ($records as $record) {
1 www 1600
                    $skill = $skillMapper->fetchOne($record->skill_id);
11139 stevensc 1601
 
1602
                    array_push($items,  ['value' => $skill->uuid, 'label' => $skill->name]);
1 www 1603
                }
11139 stevensc 1604
 
1 www 1605
                return new JsonModel([
1606
                    'success'   => true,
1607
                    'data'   => $items
1608
                ]);
1609
            } else {
1610
                $messages = [];
1611
                $form_messages = (array) $form->getMessages();
11139 stevensc 1612
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1613
                    $messages[$fieldname] = array_values($field_messages);
1614
                }
11139 stevensc 1615
 
1 www 1616
                return new JsonModel([
1617
                    'success'   => false,
1618
                    'data'   => $messages
1619
                ]);
1620
            }
11139 stevensc 1621
 
1 www 1622
            $jobSkillMapper = JobSkillMapper::getInstance($this->adapter);
1623
        }
11139 stevensc 1624
 
1625
 
1 www 1626
        $data = [
1627
            'success' => false,
1628
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1629
        ];
11139 stevensc 1630
 
1631
 
1 www 1632
        return new JsonModel($data);
1633
    }
1634
 
11139 stevensc 1635
 
1 www 1636
    public function languageAction()
1637
    {
11139 stevensc 1638
 
1 www 1639
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1640
        $currentUser = $currentUserPlugin->getUser();
1641
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1642
 
1643
 
1 www 1644
        $request = $this->getRequest();
1645
        $id = $this->params()->fromRoute('id');
11139 stevensc 1646
 
1647
 
1648
        if (!$id) {
1 www 1649
            $response = [
1650
                'success' => false,
1651
                'data' => 'ERROR_INVALID_PARAMETER'
1652
            ];
11139 stevensc 1653
 
1 www 1654
            return new JsonModel($response);
1655
        }
11139 stevensc 1656
 
1 www 1657
        $jobMapper = JobMapper::getInstance($this->adapter);
1658
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1659
 
1660
        if (!$job) {
1 www 1661
            $response = [
1662
                'success' => false,
1663
                'data' => 'ERROR_JOB_NOT_FOUND'
1664
            ];
11139 stevensc 1665
 
1 www 1666
            return new JsonModel($response);
1667
        }
11139 stevensc 1668
 
1669
        if ($job->company_id != $currentCompany->id) {
1 www 1670
            $response = [
1671
                'success' => false,
1672
                'data' => 'ERROR_UNAUTHORIZED'
1673
            ];
11139 stevensc 1674
 
1 www 1675
            return new JsonModel($response);
1676
        }
11139 stevensc 1677
 
1678
 
1 www 1679
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1680
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1681
        if (!$company) {
1 www 1682
            $response = [
1683
                'success' => false,
1684
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1685
            ];
11139 stevensc 1686
 
1 www 1687
            return new JsonModel($response);
1688
        }
11139 stevensc 1689
 
1690
 
1691
 
1 www 1692
        $request = $this->getRequest();
11139 stevensc 1693
        if ($request->isGet()) {
1 www 1694
            $this->logger->info('Se actualizaron los idiomas requeridos del empleo : ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 1695
 
8367 efrain 1696
            $languages = [];
1697
            $languageMapper = LanguageMapper::getInstance($this->adapter);
1698
            $records = $languageMapper->fetchAllActives();
11139 stevensc 1699
 
1700
            foreach ($records as $record) {
8367 efrain 1701
                $languages[$record->id] = $record->name;
1702
            }
11139 stevensc 1703
 
1 www 1704
            $jobLanguageMapper = JobLanguageMapper::getInstance($this->adapter);
8367 efrain 1705
            $languagesSelected  = $jobLanguageMapper->fetchAllByJobId($job->id);
11139 stevensc 1706
 
1 www 1707
            $items = [];
11139 stevensc 1708
            foreach ($languagesSelected as $language) {
1 www 1709
                array_push($items, $language->language_id);
1710
            }
11139 stevensc 1711
 
1 www 1712
            $data = [
1713
                'success' => true,
8367 efrain 1714
                'data' => [
1715
                    'languages_selected' => $items,
1716
                    'languages_available' => $languages
11139 stevensc 1717
                ]
1 www 1718
            ];
11139 stevensc 1719
 
1 www 1720
            return new JsonModel($data);
11139 stevensc 1721
        } else if ($request->isPost()) {
1722
 
1 www 1723
            $form = new CompanyJobLanguageForm($this->adapter);
1724
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1725
 
1 www 1726
            $form->setData($dataPost);
11139 stevensc 1727
 
1728
            if ($form->isValid()) {
1 www 1729
                $languageMapper = LanguageMapper::getInstance($this->adapter);
11139 stevensc 1730
 
1 www 1731
                $jobLanguageMapper = JobLanguageMapper::getInstance($this->adapter);
1732
                $jobLanguageMapper->deleteByJobId($job->id);
11139 stevensc 1733
 
1 www 1734
                $dataPost = (array) $form->getData();
1735
                $languages = $dataPost['languages'];
11139 stevensc 1736
                foreach ($languages as $language_id) {
1 www 1737
                    $language = $languageMapper->fetchOne($language_id);
11139 stevensc 1738
 
1 www 1739
                    $jobLanguage = new JobLanguage();
1740
                    $jobLanguage->job_id = $job->id;
1741
                    $jobLanguage->language_id = $language->id;
11139 stevensc 1742
 
1 www 1743
                    $jobLanguageMapper->insert($jobLanguage);
1744
                }
11139 stevensc 1745
 
1 www 1746
                $items = [];
1747
                $records = $jobLanguageMapper->fetchAllByJobId($job->id);
11139 stevensc 1748
                foreach ($records as $record) {
1 www 1749
                    $language = $languageMapper->fetchOne($record->language_id);
11139 stevensc 1750
 
1 www 1751
                    array_push($items,  ['value' => $language->id, 'label' => $language->name]);
1752
                }
11139 stevensc 1753
 
1 www 1754
                return new JsonModel([
1755
                    'success'   => true,
1756
                    'data'   => $items
1757
                ]);
1758
            } else {
1759
                $messages = [];
1760
                $form_messages = (array) $form->getMessages();
11139 stevensc 1761
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1762
                    $messages[$fieldname] = array_values($field_messages);
1763
                }
11139 stevensc 1764
 
1 www 1765
                return new JsonModel([
1766
                    'success'   => false,
1767
                    'data'   => $messages
1768
                ]);
1769
            }
1770
        }
11139 stevensc 1771
 
1772
 
1 www 1773
        $data = [
1774
            'success' => false,
1775
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1776
        ];
11139 stevensc 1777
 
1778
 
1 www 1779
        return new JsonModel($data);
1780
    }
11139 stevensc 1781
 
1 www 1782
    public function degreeAction()
1783
    {
11139 stevensc 1784
 
1 www 1785
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1786
        $currentUser = $currentUserPlugin->getUser();
1787
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1788
 
1789
 
1 www 1790
        $request = $this->getRequest();
1791
        $id = $this->params()->fromRoute('id');
11139 stevensc 1792
 
1793
 
1794
        if (!$id) {
1 www 1795
            $response = [
1796
                'success' => false,
1797
                'data' => 'ERROR_INVALID_PARAMETER'
1798
            ];
11139 stevensc 1799
 
1 www 1800
            return new JsonModel($response);
1801
        }
11139 stevensc 1802
 
1 www 1803
        $jobMapper = JobMapper::getInstance($this->adapter);
1804
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1805
 
1806
        if (!$job) {
1 www 1807
            $response = [
1808
                'success' => false,
1809
                'data' => 'ERROR_JOB_NOT_FOUND'
1810
            ];
11139 stevensc 1811
 
1 www 1812
            return new JsonModel($response);
1813
        }
11139 stevensc 1814
 
1815
        if ($job->company_id != $currentCompany->id) {
1 www 1816
            $response = [
1817
                'success' => false,
1818
                'data' => 'ERROR_UNAUTHORIZED'
1819
            ];
11139 stevensc 1820
 
1 www 1821
            return new JsonModel($response);
1822
        }
11139 stevensc 1823
 
1824
 
1 www 1825
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1826
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1827
        if (!$company) {
1 www 1828
            $response = [
1829
                'success' => false,
1830
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1831
            ];
11139 stevensc 1832
 
1 www 1833
            return new JsonModel($response);
1834
        }
11139 stevensc 1835
 
1836
 
1837
 
1 www 1838
        $request = $this->getRequest();
11139 stevensc 1839
        if ($request->isGet()) {
1 www 1840
            $this->logger->info('Se actualizaron los idiomas requeridos del empleo : ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 1841
 
1842
 
8367 efrain 1843
            $degrees_available = [];
1 www 1844
            $degreeMapper = DegreeMapper::getInstance($this->adapter);
11139 stevensc 1845
 
8367 efrain 1846
            $records = $degreeMapper->fetchAllActives();
11139 stevensc 1847
            foreach ($records as $record) {
8367 efrain 1848
                $degrees_available[$record->uuid] = $record->name;
1849
            }
11139 stevensc 1850
 
1 www 1851
            $jobDegreeMapper = JobDegreeMapper::getInstance($this->adapter);
1852
            $records  = $jobDegreeMapper->fetchAllByJobId($job->id);
11139 stevensc 1853
 
1 www 1854
            $items = [];
11139 stevensc 1855
            foreach ($records as $record) {
1 www 1856
                $degree = $degreeMapper->fetchOne($record->degree_id);
11139 stevensc 1857
 
1 www 1858
                array_push($items, $degree->uuid);
1859
            }
11139 stevensc 1860
 
1 www 1861
            $data = [
1862
                'success' => true,
8367 efrain 1863
                'data' => [
1864
                    'degrees_selected' => $items,
1865
                    'degrees_available' => $degrees_available
11139 stevensc 1866
                ]
1 www 1867
            ];
11139 stevensc 1868
 
1 www 1869
            return new JsonModel($data);
11139 stevensc 1870
        } else if ($request->isPost()) {
1871
 
1 www 1872
            $form = new CompanyJobDegreeForm($this->adapter);
1873
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1874
 
1 www 1875
            $form->setData($dataPost);
11139 stevensc 1876
 
1877
            if ($form->isValid()) {
1 www 1878
                $degreeMapper = DegreeMapper::getInstance($this->adapter);
11139 stevensc 1879
 
1 www 1880
                $jobDegreeMapper = JobDegreeMapper::getInstance($this->adapter);
1881
                $jobDegreeMapper->deleteByJobId($job->id);
11139 stevensc 1882
 
1 www 1883
                $dataPost = (array) $form->getData();
1884
                $degrees = $dataPost['degrees'];
11139 stevensc 1885
                foreach ($degrees as $degree_id) {
1 www 1886
                    $degree = $degreeMapper->fetchOneByUuid($degree_id);
11139 stevensc 1887
 
1 www 1888
                    $jobDegree = new JobDegree();
1889
                    $jobDegree->job_id = $job->id;
1890
                    $jobDegree->degree_id = $degree->id;
1891
                    $jobDegreeMapper->insert($jobDegree);
1892
                }
11139 stevensc 1893
 
1 www 1894
                $items = [];
1895
                $records = $jobDegreeMapper->fetchAllByJobId($job->id);
11139 stevensc 1896
                foreach ($records as $record) {
1 www 1897
                    $degree = $degreeMapper->fetchOne($record->degree_id);
1898
                    array_push($items,  ['value' => $degree->uuid, 'label' => $degree->name]);
1899
                }
11139 stevensc 1900
 
1 www 1901
                return new JsonModel([
1902
                    'success'   => true,
1903
                    'data'   => $items
1904
                ]);
1905
            } else {
1906
                $messages = [];
1907
                $form_messages = (array) $form->getMessages();
11139 stevensc 1908
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 1909
                    $messages[$fieldname] = array_values($field_messages);
1910
                }
11139 stevensc 1911
 
1 www 1912
                return new JsonModel([
1913
                    'success'   => false,
1914
                    'data'   => $messages
1915
                ]);
1916
            }
1917
        }
11139 stevensc 1918
 
1919
 
1 www 1920
        $data = [
1921
            'success' => false,
1922
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1923
        ];
11139 stevensc 1924
 
1925
 
1 www 1926
        return new JsonModel($data);
1927
    }
11139 stevensc 1928
 
1 www 1929
    public function lastDateOfApplicationAction()
1930
    {
11139 stevensc 1931
 
1 www 1932
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1933
        $currentUser = $currentUserPlugin->getUser();
1934
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 1935
 
1936
 
1 www 1937
        $request = $this->getRequest();
1938
        $id = $this->params()->fromRoute('id');
11139 stevensc 1939
 
1940
 
1941
        if (!$id) {
1 www 1942
            $response = [
1943
                'success' => false,
1944
                'data' => 'ERROR_INVALID_PARAMETER'
1945
            ];
11139 stevensc 1946
 
1 www 1947
            return new JsonModel($response);
1948
        }
11139 stevensc 1949
 
1 www 1950
        $jobMapper = JobMapper::getInstance($this->adapter);
1951
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 1952
 
1953
        if (!$job) {
1 www 1954
            $response = [
1955
                'success' => false,
1956
                'data' => 'ERROR_JOB_NOT_FOUND'
1957
            ];
11139 stevensc 1958
 
1 www 1959
            return new JsonModel($response);
1960
        }
11139 stevensc 1961
 
1962
        if ($job->company_id != $currentCompany->id) {
1 www 1963
            $response = [
1964
                'success' => false,
1965
                'data' => 'ERROR_UNAUTHORIZED'
1966
            ];
11139 stevensc 1967
 
1 www 1968
            return new JsonModel($response);
1969
        }
11139 stevensc 1970
 
1971
 
1 www 1972
        $companyMapper = CompanyMapper::getInstance($this->adapter);
1973
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 1974
        if (!$company) {
1 www 1975
            $response = [
1976
                'success' => false,
1977
                'data' => 'ERROR_COMPANY_NOT_FOUND'
1978
            ];
11139 stevensc 1979
 
1 www 1980
            return new JsonModel($response);
1981
        }
11139 stevensc 1982
 
1983
 
1984
 
1 www 1985
        $request = $this->getRequest();
11139 stevensc 1986
        if ($request->isGet()) {
1 www 1987
            $dt = \DateTime::createFromFormat('Y-m-d', $job->last_date_of_application);
11139 stevensc 1988
 
1 www 1989
            $data = [
1990
                'success' => true,
1991
                'data' => $dt->format('d/m/Y'),
1992
            ];
11139 stevensc 1993
 
1 www 1994
            return new JsonModel($data);
11139 stevensc 1995
        } else if ($request->isPost()) {
1996
 
1 www 1997
            $form = new CompanyJobLastDateOfApplicationForm();
1998
            $dataPost = $request->getPost()->toArray();
11139 stevensc 1999
 
1 www 2000
            $form->setData($dataPost);
11139 stevensc 2001
 
2002
            if ($form->isValid()) {
2003
                $this->logger->info('Se actualizo la última fecha de aplicación de la empresa: ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
2004
 
1 www 2005
                $dt = \DateTime::createFromFormat('d/m/Y', $form->get('last_date_of_application')->getValue());
2006
                $job->last_date_of_application = $dt->format('Y-m-d');
11139 stevensc 2007
 
2008
                if ($jobMapper->updateLastDateOfApplication($job)) {
1 www 2009
                    $months = [
2010
                        1 => 'LABEL_MONTH_JANUARY',
2011
                        2 => 'LABEL_MONTH_FEBRUARY',
2012
                        3 => 'LABEL_MONTH_MARCH',
2013
                        4 => 'LABEL_MONTH_APRIL',
2014
                        5 => 'LABEL_MONTH_MAY',
2015
                        6 => 'LABEL_MONTH_JUNE',
2016
                        7 => 'LABEL_MONTH_JULY',
2017
                        8 => 'LABEL_MONTH_AUGUST',
2018
                        9 => 'LABEL_MONTH_SEPTEMBER',
2019
                        10 => 'LABEL_MONTH_OCTOBER',
2020
                        11 => 'LABEL_MONTH_NOVEMBER',
2021
                        12 => 'LABEL_MONTH_DECEMBER',
2022
                    ];
11139 stevensc 2023
 
2024
                    $last_date_of_application = $dt->format('d') . ' de ' . $months[$dt->format('n')] . ' de ' . $dt->format('Y');
2025
 
2026
 
1 www 2027
                    return new JsonModel([
2028
                        'success'   => true,
2029
                        'data' => $last_date_of_application
2030
                    ]);
11139 stevensc 2031
                } else {
1 www 2032
                    return new JsonModel([
2033
                        'success'   => false,
2034
                        'data' => 'ERROR_THERE_WAS_AN_ERROR'
2035
                    ]);
2036
                }
2037
            } else {
2038
                $messages = [];
2039
                $form_messages = (array) $form->getMessages();
11139 stevensc 2040
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 2041
                    $messages[$fieldname] = array_values($field_messages);
2042
                }
11139 stevensc 2043
 
1 www 2044
                return new JsonModel([
2045
                    'success'   => false,
2046
                    'data'   => $messages
2047
                ]);
2048
            }
2049
        }
11139 stevensc 2050
 
2051
 
1 www 2052
        $data = [
2053
            'success' => false,
2054
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
2055
        ];
11139 stevensc 2056
 
2057
 
1 www 2058
        return new JsonModel($data);
2059
    }
11139 stevensc 2060
 
1 www 2061
    public function usersWhoAppliedAction()
2062
    {
2063
        $currentUserPlugin = $this->plugin('currentUserPlugin');
2064
        $currentUser = $currentUserPlugin->getUser();
2065
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 2066
 
2067
 
1 www 2068
        $request = $this->getRequest();
2069
        $id = $this->params()->fromRoute('id');
11139 stevensc 2070
 
2071
        if (!$id) {
1 www 2072
            $data = [
2073
                'success'   => false,
2074
                'data'   => 'ERROR_INVALID_PARAMETER'
2075
            ];
11139 stevensc 2076
 
1 www 2077
            return new JsonModel($data);
2078
        }
11139 stevensc 2079
 
1 www 2080
        $jobMapper = JobMapper::getInstance($this->adapter);
2081
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 2082
        if (!$job) {
1 www 2083
            $data = [
2084
                'success'   => false,
2085
                'data'   => 'ERROR_JOB_NOT_FOUND'
2086
            ];
11139 stevensc 2087
 
1 www 2088
            return new JsonModel($data);
2089
        }
11139 stevensc 2090
 
2091
        if ($job->company_id != $currentCompany->id) {
1 www 2092
            $data = [
2093
                'success'   => false,
2094
                'data'   => 'ERROR_UNAUTHORIZED'
2095
            ];
11139 stevensc 2096
 
1 www 2097
            return new JsonModel($data);
2098
        }
2099
 
11139 stevensc 2100
 
1 www 2101
        $request = $this->getRequest();
11139 stevensc 2102
        if ($request->isGet()) {
2103
 
1 www 2104
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
11139 stevensc 2105
            if ($sandbox) {
1 www 2106
                $user_profile_url = $this->config['leaderslinked.frontend.sandbox_user_profile'];
2107
            } else {
2108
                $user_profile_url = $this->config['leaderslinked.frontend.production_user_profile'];
2109
            }
2110
 
11139 stevensc 2111
 
1 www 2112
            $queryMapper = QueryMapper::getInstance($this->adapter);
2113
            $select = $queryMapper->getSql()->select();
11139 stevensc 2114
            $select->columns(['id',  'user_uuid' => 'uuid', 'first_name', 'last_name', 'email']);
1 www 2115
            $select->from(['u' => UserMapper::_TABLE]);
2116
            $select->join(['ja' => JobApplicationMapper::_TABLE], 'ja.user_id = u.id', ['user_profile_id']);
2117
            $select->join(['up' => UserProfileMapper::_TABLE], 'ja.user_profile_id = up.id', ['user_profile_uuid' => 'uuid']);
2118
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
11139 stevensc 2119
            $select->order(['first_name', 'last_name']);
2120
 
1 www 2121
            $items = [];
11139 stevensc 2122
            $records = $queryMapper->fetchAll($select);
2123
 
2124
            foreach ($records as $record) {
1 www 2125
                $item = [
2126
                    'first_name' => $record['first_name'],
2127
                    'last_name' => $record['last_name'],
2128
                    'email' => $record['email'],
2129
                    'link_view' => str_replace('[uuid]', $record['user_profile_uuid'], $user_profile_url),
2130
 
2131
                ];
11139 stevensc 2132
 
1 www 2133
                array_push($items, $item);
2134
            }
2135
 
11139 stevensc 2136
 
1 www 2137
            $response = [
2138
                'success' => true,
2139
                'data' => $items
2140
            ];
2141
 
2142
            return new JsonModel($response);
2143
        } else {
2144
            return new JsonModel([
2145
                'success' => false,
2146
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2147
            ]);
2148
        }
2149
    }
11139 stevensc 2150
 
2151
 
1 www 2152
    public function statusAction()
2153
    {
2154
        $currentUserPlugin = $this->plugin('currentUserPlugin');
2155
        $currentUser = $currentUserPlugin->getUser();
2156
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 2157
 
2158
 
1 www 2159
        $request = $this->getRequest();
2160
        $id = $this->params()->fromRoute('id');
11139 stevensc 2161
 
2162
 
2163
        if (!$id) {
1 www 2164
            $response = [
2165
                'success' => false,
2166
                'data' => 'ERROR_INVALID_PARAMETER'
2167
            ];
11139 stevensc 2168
 
1 www 2169
            return new JsonModel($response);
2170
        }
11139 stevensc 2171
 
1 www 2172
        $jobMapper = JobMapper::getInstance($this->adapter);
2173
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 2174
 
2175
        if (!$job) {
1 www 2176
            $response = [
2177
                'success' => false,
2178
                'data' => 'ERROR_JOB_NOT_FOUND'
2179
            ];
11139 stevensc 2180
 
1 www 2181
            return new JsonModel($response);
2182
        }
11139 stevensc 2183
 
2184
        if ($job->company_id != $currentCompany->id) {
1 www 2185
            $response = [
2186
                'success' => false,
2187
                'data' => 'ERROR_UNAUTHORIZED'
2188
            ];
11139 stevensc 2189
 
1 www 2190
            return new JsonModel($response);
2191
        }
11139 stevensc 2192
 
2193
 
1 www 2194
        $companyMapper = CompanyMapper::getInstance($this->adapter);
2195
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 2196
        if (!$company) {
1 www 2197
            $response = [
2198
                'success' => false,
2199
                'data' => 'ERROR_COMPANY_NOT_FOUND'
2200
            ];
11139 stevensc 2201
 
1 www 2202
            return new JsonModel($response);
2203
        }
11139 stevensc 2204
 
2205
 
2206
 
2207
 
1 www 2208
        $request = $this->getRequest();
11139 stevensc 2209
        if ($request->isGet()) {
1 www 2210
            $data = [
2211
                'success' => true,
2212
                'data' => [
2213
                    'status' => $job->status,
2214
                ]
2215
            ];
11139 stevensc 2216
 
1 www 2217
            return new JsonModel($data);
11139 stevensc 2218
        } else if ($request->isPost()) {
2219
 
2220
 
1 www 2221
            $form = new CompanyJobStatusForm();
2222
            $dataPost = $request->getPost()->toArray();
11139 stevensc 2223
 
1 www 2224
            $form->setData($dataPost);
11139 stevensc 2225
 
2226
            if ($form->isValid()) {
1 www 2227
                $dataPost = (array) $form->getData();
11139 stevensc 2228
 
1 www 2229
                $hydrator = new ObjectPropertyHydrator();
2230
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 2231
 
1 www 2232
                $jobMapper->updateStatus($job);
11139 stevensc 2233
 
1 www 2234
                $this->logger->info('Se actualizo el estatus del empleo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 2235
 
2236
                switch ($job->status) {
2237
                    case  Job::STATUS_ACTIVE:
1 www 2238
                        $status = 'LABEL_ACTIVE';
2239
                        break;
11139 stevensc 2240
 
2241
                    case  Job::STATUS_INACTIVE:
1 www 2242
                        $status = 'LABEL_INACTIVE';
2243
                        break;
11139 stevensc 2244
 
2245
 
2246
                    case  Job::STATUS_DELETED:
1 www 2247
                        $status = 'LABEL_DELETED';
2248
                        break;
11139 stevensc 2249
 
2250
                    default:
1 www 2251
                        $status = '';
2252
                        break;
2253
                }
11139 stevensc 2254
 
2255
 
1 www 2256
                return new JsonModel([
2257
                    'success'   => true,
2258
                    'data' => [
2259
                        'status' => $status,
2260
                    ]
2261
                ]);
2262
            } else {
2263
                $messages = [];
2264
                $form_messages = (array) $form->getMessages();
11139 stevensc 2265
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 2266
                    $messages[$fieldname] = array_values($field_messages);
2267
                }
11139 stevensc 2268
 
1 www 2269
                return new JsonModel([
2270
                    'success'   => false,
2271
                    'data'   => $messages
2272
                ]);
2273
            }
2274
        }
11139 stevensc 2275
 
2276
 
1 www 2277
        $data = [
2278
            'success' => false,
2279
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
2280
        ];
11139 stevensc 2281
 
2282
 
1 www 2283
        return new JsonModel($data);
2284
    }
11139 stevensc 2285
 
2286
 
1 www 2287
    public function titleAction()
2288
    {
2289
        $currentUserPlugin = $this->plugin('currentUserPlugin');
2290
        $currentUser = $currentUserPlugin->getUser();
2291
        $currentCompany = $currentUserPlugin->getCompany();
11139 stevensc 2292
 
2293
 
1 www 2294
        $request = $this->getRequest();
2295
        $id = $this->params()->fromRoute('id');
11139 stevensc 2296
 
2297
 
2298
        if (!$id) {
1 www 2299
            $response = [
2300
                'success' => false,
2301
                'data' => 'ERROR_INVALID_PARAMETER'
2302
            ];
11139 stevensc 2303
 
1 www 2304
            return new JsonModel($response);
2305
        }
11139 stevensc 2306
 
1 www 2307
        $jobMapper = JobMapper::getInstance($this->adapter);
2308
        $job = $jobMapper->fetchOneByUuid($id);
11139 stevensc 2309
 
2310
        if (!$job) {
1 www 2311
            $response = [
2312
                'success' => false,
2313
                'data' => 'ERROR_JOB_NOT_FOUND'
2314
            ];
11139 stevensc 2315
 
1 www 2316
            return new JsonModel($response);
2317
        }
11139 stevensc 2318
 
2319
        if ($job->company_id != $currentCompany->id) {
1 www 2320
            $response = [
2321
                'success' => false,
2322
                'data' => 'ERROR_UNAUTHORIZED'
2323
            ];
11139 stevensc 2324
 
1 www 2325
            return new JsonModel($response);
2326
        }
11139 stevensc 2327
 
2328
 
1 www 2329
        $companyMapper = CompanyMapper::getInstance($this->adapter);
2330
        $company = $companyMapper->fetchOne($currentCompany->id);
11139 stevensc 2331
        if (!$company) {
1 www 2332
            $response = [
2333
                'success' => false,
2334
                'data' => 'ERROR_COMPANY_NOT_FOUND'
2335
            ];
11139 stevensc 2336
 
1 www 2337
            return new JsonModel($response);
2338
        }
11139 stevensc 2339
 
2340
 
2341
 
2342
 
1 www 2343
        $request = $this->getRequest();
11139 stevensc 2344
        if ($request->isGet()) {
1 www 2345
            $data = [
2346
                'success' => true,
2347
                'data' => [
2348
                    'title' => $job->title,
2349
                ]
2350
            ];
11139 stevensc 2351
 
1 www 2352
            return new JsonModel($data);
11139 stevensc 2353
        } else if ($request->isPost()) {
2354
 
2355
 
1 www 2356
            $form = new CompanyJobTitleForm();
2357
            $dataPost = $request->getPost()->toArray();
11139 stevensc 2358
 
1 www 2359
            $form->setData($dataPost);
11139 stevensc 2360
 
2361
            if ($form->isValid()) {
1 www 2362
                $dataPost = (array) $form->getData();
11139 stevensc 2363
 
1 www 2364
                $hydrator = new ObjectPropertyHydrator();
2365
                $hydrator->hydrate($dataPost, $job);
11139 stevensc 2366
 
1 www 2367
                $jobMapper->updateTitle($job);
11139 stevensc 2368
 
1 www 2369
                $this->logger->info('Se actualizo el título del empleo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
11139 stevensc 2370
 
1 www 2371
                return new JsonModel([
2372
                    'success'   => true,
2373
                    'data' => [
2374
                        'title' => $job->title,
2375
                    ]
2376
                ]);
2377
            } else {
2378
                $messages = [];
2379
                $form_messages = (array) $form->getMessages();
11139 stevensc 2380
                foreach ($form_messages  as $fieldname => $field_messages) {
1 www 2381
                    $messages[$fieldname] = array_values($field_messages);
2382
                }
11139 stevensc 2383
 
1 www 2384
                return new JsonModel([
2385
                    'success'   => false,
2386
                    'data'   => $messages
2387
                ]);
2388
            }
2389
        }
11139 stevensc 2390
 
2391
 
1 www 2392
        $data = [
2393
            'success' => false,
2394
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
2395
        ];
11139 stevensc 2396
 
2397
 
1 www 2398
        return new JsonModel($data);
2399
    }
2400
}