AutorÃa | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Helper;
use Laminas\View\Helper\AbstractHelper;
use Laminas\Db\Adapter\AdapterInterface;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\JobMapper;
use LeadersLinked\Mapper\LocationMapper;
class JobSuggestionHelper extends AbstractHelper
{
/**
*
* @var AdapterInterface
*/
private $adapter;
/**
*
* @param AdapterInterface $adapter
*/
public function __construct($adapter)
{
$this->adapter = $adapter;
}
public function invoke($job_id)
{
$items = [];
$jobMapper = JobMapper::getInstance($this->adapter);
$job = $jobMapper->fetchOne($job_id);
if($job) {
$location = null;
if($job->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($job->location_id);
}
$queryMapper = QueryMapper::getInstance($this->adapter);
$select = $queryMapper->getSql()->select();
$select->columns(['id', 'title', 'job_category_id', 'employment_type', 'last_date_of_application']);
$select->from(['t' => JobMapper::_TABLE]);
$select->join(['l' => LocationMapper::_TABLE], 'j.location_id = l.id', ['state', 'country']);
$select->where->lessThan('last_date_of_application', date('Y-m-d'));
$select->where->equalTo('job_category_id', $job->job_category_id);
$select->where->equalTo('employment_type', $job->employment_type);
$select->where->equalTo('state', $location ? $location->state : '');
$select->where->equalTo('country', $location ? $location->country : '');
$select->limit(20);
$select->order(['last_date_of_application', 'title']);
$items = $queryMapper->fetchAll($select);
}
return $this->getView()->render('helpers/job-suggestions.phtml', ['items' => $items]);
}
}