Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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]);
    }
}