Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Helper;
6
 
7
use Laminas\View\Helper\AbstractHelper;
8
use Laminas\Db\Adapter\AdapterInterface;
9
use LeadersLinked\Mapper\UserMapper;
10
use LeadersLinked\Mapper\QueryMapper;
11
use LeadersLinked\Model\GroupMember;
12
use LeadersLinked\Mapper\GroupMemberMapper;
13
use LeadersLinked\Mapper\GroupMapper;
14
use Laminas\Db\Sql\Expression;
15
use LeadersLinked\Mapper\UserExperienceMapper;
16
use LeadersLinked\Model\UserExperience;
17
use LeadersLinked\Mapper\ConnectionMapper;
18
use LeadersLinked\Model\Group;
19
 
20
class GroupsSuggestionHelper extends AbstractHelper
21
{
22
 
23
    /**
24
     *
25
     * @var AdapterInterface
26
     */
27
    private $adapter;
28
 
29
 
30
    /**
31
     *
32
     * @param AdapterInterface $adapter
33
     */
34
    public function __construct($adapter)
35
    {
36
        $this->adapter      = $adapter;
37
    }
38
 
39
    public function __invoke($user_id)
40
    {
41
        $userExperienceMapper = UserExperienceMapper::getInstance($this->adapter);
42
        $userExperiences = $userExperienceMapper->fetchAllByUserId($user_id);
43
 
44
        $industry_ids = [];
45
        foreach($userExperiences as $userExperience)
46
        {
47
            if($userExperience->is_current == UserExperience::IS_CURRENT_YES) {
48
                if(!in_array($userExperience->industry_id, $industry_ids)) {
49
                    array_push($industry_ids, $userExperience->industry_id);
50
                }
51
            }
52
        }
53
 
54
        if($industry_ids) {
55
            $connectionMapper = ConnectionMapper::getInstance($this->adapter);
56
            $connections = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);
57
 
58
 
59
            $queryMapper = QueryMapper::getInstance($this->adapter);
60
 
61
 
62
            $select = $queryMapper->getSql()->select();
63
            $select->columns(['id', 'name','image','status','privacy']);
64
            $select->from(['g' => GroupMapper::_TABLE]);
65
            $select->join(['gm' => GroupMemberMapper::_TABLE], 'g.id = gm.group_id', ['user_id']);
66
            $select->where->equalTo('privacy', Group::PRIVACY_IS_PUBLIC);
67
            $select->where->equalTo('status', Group::STATUS_ACTIVE);
68
            $select->where->NEST->in('industry_id', $industry_ids)->or->in('user_id', $connections)->UNNEST;
69
            $select->order('name');
70
 
71
            $items = $queryMapper->fetchAll($select);
72
        }
73
 
74
        return $this->getView()->render('helpers/groups-suggestions.phtml', ['groups' => $items]);
75
 
76
    }
77
}
78