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\ConnectionMapper;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Model\User;
use Laminas\Db\Sql\Expression;

class PeopleYouMayKnowHelper extends AbstractHelper
{
    
    /**
     *
     * @var AdapterInterface
     */
    private $adapter;
    
    
    /**
     *
     * @param AdapterInterface $adapter
     */
    public function __construct($adapter)
    {
        $this->adapter      = $adapter;
    }

    public function __invoke($user_id)
    {
        $connectionMapper = ConnectionMapper::getInstance($this->adapter);
        $first_degree_connections_ids = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);
        $first_degree_connections_ids = $first_degree_connections_ids ? $first_degree_connections_ids : [0];
        
        $second_degree_connections_ids = $connectionMapper->fetchAllSecondDegreeConnectionsForUserIdReturnIds($user_id);
        $second_degree_connections_ids = $second_degree_connections_ids ? $second_degree_connections_ids : [0];
        
        
        $items = [];
        if($first_degree_connections_ids && $second_degree_connections_ids) {
            $queryMapper = QueryMapper::getInstance($this->adapter);
            $select = $queryMapper->getSql()->select();
            $select->columns(['id', 'uuid', 'first_name','last_name', 'image']);
            $select->from(['u' => UserMapper::_TABLE]);
            $select->where->in('u.id', $second_degree_connections_ids);
            $select->where->notIn('u.id', $first_degree_connections_ids);
            $select->where->notEqualTo('u.id', $user_id);
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
            $select->group('u.id');
           
            $select->order(['last_name','first_name']);

            $items = $queryMapper->fetchAll($select);
        }

        return $this->getView()->render('helpers/people-you-may-know.phtml', ['items' => $items]);
    }
}