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\CompanyMapper;
use LeadersLinked\Mapper\CompanyLocationMapper;
use LeadersLinked\Mapper\LocationMapper;
use LeadersLinked\Model\Company;
class CompanySuggestionHelper extends AbstractHelper
{
/**
*
* @var AdapterInterface
*/
private $adapter;
/**
*
* @param AdapterInterface $adapter
*/
public function __construct($adapter)
{
$this->adapter = $adapter;
}
public function __invoke($company_id)
{
$companyMapper = CompanyMapper::getInstance($this->adapter);
$company = $companyMapper->fetchOne($company_id);
$items = [];
if($company) {
$location = null;
$companyLocationMapper = CompanyLocationMapper::getInstance($this->adapter);
$companyLocation = $companyLocationMapper->fetchOneMainLocationByCompanyId($company->id);
if($companyLocation) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($companyLocation->location_id);
}
$mapper = QueryMapper::getInstance($this->adapter);
$select = $mapper->getSql()->select();
$select->columns(['id', 'name', 'image']);
$select->from(['c' => CompanyMapper::_TABLE]);
$select->join(['cl' => CompanyLocationMapper::_TABLE], 'cl.company_id = c.id', []);
$select->join(['l' => LocationMapper::_TABLE], 'l.id = cl.location_id', ['state','country']);
$select->where->equalTo('company_size_id', $company->company_size_id);
$select->where->equalTo('industry_id', $company->industry_id);
$select->where->equalTo('state', $location ? $location->state : '');
$select->where->equalTo('country', $location ? $location->country : '');
$select->where->equalTo('c.status', Company::STATUS_ACTIVE);
$select->where->notEqualTo('c.id', $company->id);
$select->limit(20);
$items = $mapper->fetchAll($select);
}
$items = $mapper->fetchAll($select);
return $this->getView()->render('helpers/company-suggestions.phtml', ['items' => $items]);
}
}