Rev 1327 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
/**
*
* Controlador: Mis Perfiles
*
*/
declare(strict_types=1);
namespace LeadersLinked\Controller;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Library\Functions;
use LeadersLinked\Mapper\CompanyUserMapper;
use LeadersLinked\Model\Job;
use LeadersLinked\Mapper\LocationMapper;
use LeadersLinked\Mapper\JobMapper;
use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Mapper\JobCategoryMapper;
use LeadersLinked\Mapper\JobSkillMapper;
use LeadersLinked\Mapper\JobDegreeMapper;
use LeadersLinked\Mapper\JobLanguageMapper;
use LeadersLinked\Mapper\DegreeMapper;
use LeadersLinked\Mapper\LanguageMapper;
use LeadersLinked\Mapper\SkillMapper;
use LeadersLinked\Mapper\IndustryMapper;
use LeadersLinked\Mapper\CompanySizeMapper;
use LeadersLinked\Mapper\CompanyLocationMapper;
use LeadersLinked\Mapper\JobApplicationMapper;
use LeadersLinked\Form\Job\ApplyForm;
use LeadersLinked\Model\JobApplication;
use LeadersLinked\Mapper\JobSaveMapper;
use LeadersLinked\Model\JobSave;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\UserProfileMapper;
class JobController extends AbstractActionController
{
/**
*
* @var AdapterInterface
*/
private $adapter;
/**
*
* @var AbstractAdapter
*/
private $cache;
/**
*
* @var LoggerInterface
*/
private $logger;
/**
*
* @var array
*/
private $config;
/**
*
* @param AdapterInterface $adapter
* @param AbstractAdapter $cache
* @param LoggerInterface $logger
* @param array $config
*/
public function __construct($adapter, $cache , $logger, $config)
{
$this->adapter = $adapter;
$this->cache = $cache;
$this->logger = $logger;
$this->config = $config;
}
/**
*
* Generación del listado de perfiles
* {@inheritDoc}
* @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
*/
public function indexAction()
{
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function viewAction()
{
$flashMessenger = $this->plugin('FlashMessenger');
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
$flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');
return $this->redirect()->toRoute('dashboard');
}
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOneByUuid($id);
if(!$job) {
$flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');
return $this->redirect()->toRoute('dashboard');
}
if($job->status != Job::STATUS_ACTIVE) {
$flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
return $this->redirect()->toRoute('dashboard');
}
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($job->company_id);
if(!$company) {
$flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');
return $this->redirect()->toRoute('dashboard');
}
if($request->isGet()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);
$jobApplicationMapper = JobApplicationMapper::getInstance($this->adapter);
$total_applications = $jobApplicationMapper->fetchTotalApplicationsByJobId($job->id);
$job->visits++;
$jobMapper->updateVisits($job);
//if($companyUser) {
// $job_apply_operation = '';
//} else {
$jobApplication = $jobApplicationMapper->fetchOneByJobIdAndUserId($job->id, $currentUser->id);
if($jobApplication) {
$job_apply_operation = 'remove-apply';
} else {
$job_apply_operation = 'apply';
}
//}
$jobSaveMapper = JobSaveMapper::getInstance($this->adapter);
$jobSave = $jobSaveMapper->fetchOneByJobIdAndUserId($job->id, $currentUser->id);
if($jobSave) {
$job_save_operation = 'remove-job-saved';
} else {
$job_save_operation = 'job-save';
}
$months = [
1 => 'LABEL_MONTH_JANUARY',
2 => 'LABEL_MONTH_FEBRUARY',
3 => 'LABEL_MONTH_MARCH',
4 => 'LABEL_MONTH_APRIL',
5 => 'LABEL_MONTH_MAY',
6 => 'LABEL_MONTH_JUNE',
7 => 'LABEL_MONTH_JULY',
8 => 'LABEL_MONTH_AUGUST',
9 => 'LABEL_MONTH_SEPTEMBER',
10 => 'LABEL_MONTH_OCTOBER',
11 => 'LABEL_MONTH_NOVEMBER',
12 => 'LABEL_MONTH_DECEMBER',
];
$dt = \dateTime::createFromFormat('Y-m-d', $job->last_date_of_application);
$last_date_of_application = $dt->format('d') . ' de ' . $months[$dt->format('n')] . ' de ' . $dt->format('Y');
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($job->location_id);
$jobCategoryMapper = JobCategoryMapper::getInstance($this->adapter);
$jobCategory = $jobCategoryMapper->fetchOne($job->job_category_id);
switch($job->employment_type)
{
case Job::EMPLOYMENT_TYPE_FULL_TIME :
$employment_type = 'LABEL_EMPLOYMENT_TYPE_FULL_TIME';
break;
case Job::EMPLOYMENT_TYPE_PART_TIME :
$employment_type = 'LABEL_EMPLOYMENT_TYPE_PART_TIME';
break;
case Job::EMPLOYMENT_TYPE_CONTRACT :
$employment_type = 'LABEL_EMPLOYMENT_TYPE_CONTRACT';
break;
case Job::EMPLOYMENT_TYPE_TEMPORARY :
$employment_type = 'LABEL_EMPLOYMENT_TYPE_TEMPORARY';
break;
default :
$employment_type = '';
break;
}
$degrees = [];
$degreeMapper = DegreeMapper::getInstance($this->adapter);
$records = $degreeMapper->fetchAllActives();
foreach($records as $record)
{
$degrees[$record->uuid] = $record->name;
}
$jobDegreeMapper = JobDegreeMapper::getInstance($this->adapter);
$records = $jobDegreeMapper->fetchAllByJobId($job->id);
$job_degrees = [];
foreach($records as $record)
{
$degree = $degreeMapper->fetchOne($record->degree_id);
array_push($job_degrees, $degree->name);
}
$languages = [];
$languageMapper = LanguageMapper::getInstance($this->adapter);
$records = $languageMapper->fetchAllActives();
foreach($records as $record)
{
$languages[$record->id] = $record->name;
}
$jobLanguageMapper = JobLanguageMapper::getInstance($this->adapter);
$records = $jobLanguageMapper->fetchAllByJobId($job->id);
$job_languages = [];
foreach($records as $record)
{
$language = $languageMapper->fetchOne($record->language_id);
array_push($job_languages, $language->name);
}
$skills = [];
$skillMapper = SkillMapper::getInstance($this->adapter);
$records = $skillMapper->fetchAllActives();
foreach($records as $record)
{
$skills[$record->uuid] = $record->name;
}
$jobSkillMapper = JobSkillMapper::getInstance($this->adapter);
$records = $jobSkillMapper->fetchAllByJobId($job->id);
$job_skills = [];
foreach($records as $record)
{
$skill = $skillMapper->fetchOne($record->skill_id);
array_push($job_skills, $skill->name);
}
$industryMapper = IndustryMapper::getInstance($this->adapter);
$industry = $industryMapper->fetchOne($company->industry_id);
$companySizeMapper = CompanySizeMapper::getInstance($this->adapter);
$companySize = $companySizeMapper->fetchOne($company->company_size_id);
$companyLocationMapper = CompanyLocationMapper::getInstance($this->adapter);
$companyLocation = $companyLocationMapper->fetchOneMainLocationByCompanyId($company->id);
$company_address = '';
if($companyLocation) {
$mainLocation = $locationMapper->fetchOne($companyLocation->location_id);
if($mainLocation) {
$company_address = $mainLocation->formatted_address;
}
}
$user_profiles = [];
$userProfileMapper = UserProfileMapper::getInstance($this->adapter);
$records = $userProfileMapper->fetchAllByUserId($currentUser->id);
foreach($records as $record)
{
$user_profiles[$record->uuid] = $record->name;
}
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $job->updated_on);
$timeElapsed = Functions::timeElapsedString($dt->getTimestamp());
$formApply = new ApplyForm($this->adapter, $currentUser->id);
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/job/view.phtml');
$viewModel->setVariables([
'company_uuid' => $company->uuid,
'company_image' => $company->image,
'job_uuid' => $job->uuid,
'job_title' => $job->title,
'job_description' => $job->description,
'total_applications' => $total_applications,
'location' => $location->formatted_address,
'employment_type' => $employment_type,
'last_date_of_application' => $last_date_of_application,
'job_category' => $jobCategory->name,
'timeElapsed' => $timeElapsed,
'experience' => $job->experience_visible ? $job->experience_min . '-' . $job->experience_max : '',
'salary' => $job->salary_visible ? $job->salary_min . '-' . $job->salary_max . ' (' . $job->salary_currency . ')' : '',
'job_degrees' => $job_degrees,
'job_languages' => $job_languages,
'job_skills' => $job_skills,
'job_visits' => $job->visits,
'job_apply_operation' => $job_apply_operation,
'job_save_operation' => $job_save_operation,
'company_name' => $company->name,
'company_foundation_year' => $company->foundation_year,
'company_website' => $company->website,
'company_industry' => $industry->name,
'company_size' => $companySize->minimum_no_of_employee . '-' . $companySize->maximum_no_of_employee,
'company_address' => $company_address,
'formApply' => $formApply,
'user_profiles' => $user_profiles
]);
return $viewModel ;
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function applyJobAction()
{
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
$data = [
'success' => false,
'data' => 'ERROR_INVALID_PARAMETER'
];
return new JsonModel($data);
}
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOneByUuid($id);
if(!$job) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($job->status != Job::STATUS_ACTIVE) {
$data = [
'success' => false,
'data' => 'ERROR_UNAUTHORIZED'
];
return new JsonModel($data);
}
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($job->company_id);
if(!$company) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($request->isPost()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$form = new ApplyForm($this->adapter, $currentUser->id);
$dataPost = $request->getPost()->toArray();
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
$userProfileMapper = UserProfileMapper::getInstance($this->adapter);
$userProfile = $userProfileMapper->fetchOneByUuid($dataPost['user_profile_id']);
$jobApplicationMapper = JobApplicationMapper::getInstance($this->adapter);
$jobApplication = $jobApplicationMapper->fetchOneByJobIdAndUserId($job->id, $currentUser->id);
$result = true;
if(!$jobApplication) {
$jobApplication = new JobApplication();
$jobApplication->job_id = $job->id;
$jobApplication->user_id = $currentUser->id;
$jobApplication->user_profile_id = $userProfile->id;
$result = $jobApplicationMapper->insert($jobApplication);
if($result) {
$this->logger->info('El usuario ' . $currentUser->first_name . ' ' . $currentUser->last_name . ' aplico al trabajo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
}
}
if($result) {
$total = $jobApplicationMapper->fetchTotalApplicationsByJobId($job->id);
$data = [
'success' => true,
'data' => 'LABEL_SUCCESSFUL_APPLICATION',
'total' => $total
];
} else {
$data = [
'success' => false,
'data' => $jobApplicationMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
}
public function removeApplyJobAction()
{
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
$data = [
'success' => false,
'data' => 'ERROR_INVALID_PARAMETER'
];
return new JsonModel($data);
}
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOneByUuid($id);
if(!$job) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($job->status != Job::STATUS_ACTIVE) {
$data = [
'success' => false,
'data' => 'ERROR_UNAUTHORIZED'
];
return new JsonModel($data);
}
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($job->company_id);
if(!$company) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($request->isPost()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$jobApplicationMapper = JobApplicationMapper::getInstance($this->adapter);
$result = $jobApplicationMapper->deleteByJobIdAndUserId($job->id, $currentUser->id);
if($result) {
$this->logger->info('El usuario ' . $currentUser->first_name . ' ' . $currentUser->last_name . ' removio su aplicación al trabajo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$total = $jobApplicationMapper->fetchTotalApplicationsByJobId($job->id);
$data = [
'success' => true,
'data' => 'LABEL_APPLICATION_WAS_REMOVED',
'total' => $total
];
} else {
$data = [
'success' => false,
'data' => $jobApplicationMapper->getError()
];
}
return new JsonModel($data);
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
}
public function removeSaveJobAction()
{
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
$data = [
'success' => false,
'data' => 'ERROR_INVALID_PARAMETER'
];
return new JsonModel($data);
}
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOneByUuid($id);
if(!$job) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($job->status != Job::STATUS_ACTIVE) {
$data = [
'success' => false,
'data' => 'ERROR_UNAUTHORIZED'
];
return new JsonModel($data);
}
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($job->company_id);
if(!$company) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($request->isPost()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$jobSaveMapper = JobSaveMapper::getInstance($this->adapter);
$result = $jobSaveMapper->deleteByJobIdAndUserId($job->id, $currentUser->id);
if($result) {
$this->logger->info('El usuario ' . $currentUser->first_name . ' ' . $currentUser->last_name . ' removio este trabajo salvado ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
''
];
} else {
$data = [
'success' => false,
'data' => $jobSaveMapper->getError()
];
}
return new JsonModel($data);
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
}
public function saveJobAction()
{
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
$data = [
'success' => false,
'data' => 'ERROR_INVALID_PARAMETER'
];
return new JsonModel($data);
}
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOneByUuid($id);
if(!$job) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($job->status != Job::STATUS_ACTIVE) {
$data = [
'success' => false,
'data' => 'ERROR_UNAUTHORIZED'
];
return new JsonModel($data);
}
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($job->company_id);
if(!$company) {
$data = [
'success' => false,
'data' => 'ERROR_RECORD_NOT_FOUND'
];
return new JsonModel($data);
}
if($request->isPost()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$jobSaveMapper = JobSaveMapper::getInstance($this->adapter);
$jobSave = $jobSaveMapper->fetchOneByJobIdAndUserId($job->id, $currentUser->id);
if($jobSave) {
$result = true;
} else {
$jobSave = new JobSave();
$jobSave->job_id = $job->id;
$jobSave->user_id = $currentUser->id;
$result = $jobSaveMapper->insert($jobSave);
}
if($result) {
$this->logger->info('El usuario ' . $currentUser->first_name . ' ' . $currentUser->last_name . ' salvo este trabajo ' . $job->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
];
} else {
$data = [
'success' => false,
'data' => $jobSaveMapper->getError()
];
}
return new JsonModel($data);
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
}
public function appliedJobsAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$request = $this->getRequest();
if($request->isGet()) {
$headers = $request->getHeaders();
$isJson = false;
if($headers->has('Accept')) {
$accept = $headers->get('Accept');
$prioritized = $accept->getPrioritized();
foreach($prioritized as $key => $value) {
$raw = trim($value->getRaw());
if(!$isJson) {
$isJson = strpos($raw, 'json');
}
}
}
if($isJson) {
$employment_types = [
job::EMPLOYMENT_TYPE_FULL_TIME => 'LABEL_EMPLOYMENT_TYPE_FULL_TIME',
Job::EMPLOYMENT_TYPE_PART_TIME => 'LABEL_EMPLOYMENT_TYPE_PART_TIME',
Job::EMPLOYMENT_TYPE_TEMPORARY => 'LABEL_EMPLOYMENT_TYPE_TEMPORARY',
];
$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
$queryMapper = QueryMapper::getInstance($this->adapter);
$select = $queryMapper->getSql()->select();
$select->columns(['id', 'uuid', 'title', 'employment_type', 'last_date_of_application']);
$select->from(['j' => JobMapper::_TABLE]);
$select->join(['ja' => JobApplicationMapper::_TABLE], 'j.id = ja.job_id');
$select->where->equalTo('j.status', Job::STATUS_ACTIVE);
$select->where->equalTo('ja.user_id', $currentUser->id);
if($search) {
$select->where->like('title', '%' . $search . '%');
}
$select->order('last_date_of_application DESC');
$records = $queryMapper->fetchAll($select);
$items = [];
foreach($records as $record)
{
$item = [
'id' => $record['uuid'],
'title' => $record['title'],
'employment_type' => $employment_types[$record['employment_type']],
'last_date_of_application' => $record['last_date_of_application'],
'link_remove' => $this->url()->fromRoute('job/remove-apply-job', ['id' => $record['uuid'] ]),
'link_view' => $this->url()->fromRoute('job/view', ['id' => $record['uuid'] ]),
];
array_push($items, $item);
}
$response = [
'success' => true,
'data' => $items
];
return new JsonModel($response);
} else {
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/job/applied-jobs.phtml');
return $viewModel ;
}
} else {
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
}
public function savedJobsAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$request = $this->getRequest();
if($request->isGet()) {
$headers = $request->getHeaders();
$isJson = false;
if($headers->has('Accept')) {
$accept = $headers->get('Accept');
$prioritized = $accept->getPrioritized();
foreach($prioritized as $key => $value) {
$raw = trim($value->getRaw());
if(!$isJson) {
$isJson = strpos($raw, 'json');
}
}
}
if($isJson) {
$employment_types = [
job::EMPLOYMENT_TYPE_FULL_TIME => 'LABEL_EMPLOYMENT_TYPE_FULL_TIME',
Job::EMPLOYMENT_TYPE_PART_TIME => 'LABEL_EMPLOYMENT_TYPE_PART_TIME',
Job::EMPLOYMENT_TYPE_TEMPORARY => 'LABEL_EMPLOYMENT_TYPE_TEMPORARY',
];
$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
$queryMapper = QueryMapper::getInstance($this->adapter);
$select = $queryMapper->getSql()->select();
$select->columns(['id', 'uuid', 'title', 'employment_type', 'last_date_of_application']);
$select->from(['j' => JobMapper::_TABLE]);
$select->join(['js' => JobSaveMapper::_TABLE], 'j.id = js.job_id');
$select->where->equalTo('j.status', Job::STATUS_ACTIVE);
$select->where->equalTo('js.user_id', $currentUser->id);
if($search) {
$select->where->like('title', '%' . $search . '%');
}
$select->order('last_date_of_application DESC');
$records = $queryMapper->fetchAll($select);
$items = [];
foreach($records as $record)
{
$item = [
'id' => $record['uuid'],
'title' => $record['title'],
'employment_type' => $employment_types[$record['employment_type']],
'last_date_of_application' => $record['last_date_of_application'],
'link_remove' => $this->url()->fromRoute('job/remove-save-job', ['id' => $record['uuid'] ]),
'link_view' => $this->url()->fromRoute('job/view', ['id' => $record['uuid'] ]),
];
array_push($items, $item);
}
$response = [
'success' => true,
'data' => $items
];
return new JsonModel($response);
} else {
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/job/saved-jobs.phtml');
return $viewModel ;
}
} else {
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
}
}