Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4124 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Helper;
5
 
6
use Laminas\View\Helper\AbstractHelper;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Mapper\ConnectionMapper;
9
use LeadersLinked\Mapper\UserMapper;
10
use LeadersLinked\Mapper\ChatGroupMapper;
11
use LeadersLinked\Mapper\UserBlockedMapper;
12
use LeadersLinked\Mapper\ChatGroupUserMapper;
13
use LeadersLinked\Model\ChatGroupUser;
14
 
15
class ChatHelper extends AbstractHelper
16
{
17
    /**
18
     *
19
     * @var AdapterInterface
20
     */
21
    private $adapter;
22
 
23
 
24
    /**
25
     *
26
     * @param AdapterInterface $adapter
27
     */
28
    public function __construct($adapter)
29
    {
30
        $this->adapter      = $adapter;
31
    }
32
 
33
    /**
34
     *
35
     * @param int $user_id
36
     * @return string
37
     */
38
    public function __invoke($user_id)
39
    {
4124 efrain 40
        $userMapper = UserMapper::getInstance($this->adapter);
41
        $user = $userMapper->fetchOne($user_id);
3639 efrain 42
 
43
 
4124 efrain 44
 
1 www 45
        $connectionMapper = ConnectionMapper:: getInstance($this->adapter);
4124 efrain 46
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user->id);
1 www 47
 
48
        $contacts = [];
49
        if($connectionIds) {
50
 
4124 efrain 51
 
1 www 52
 
53
 
4124 efrain 54
 
1 www 55
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
4124 efrain 56
            $user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user->id);
1 www 57
 
58
 
4124 efrain 59
            $usersConnectetion = $userMapper->fetchAllByIds($connectionIds);
60
            foreach($usersConnectetion as $userConnectetion)
1 www 61
            {
4124 efrain 62
                if(in_array($userConnectetion->id, $user_blocked_ids)) {
1 www 63
                    continue;
64
                }
65
 
4124 efrain 66
                $username = trim($userConnectetion->first_name . ' ' . $userConnectetion->last_name);
3086 efrain 67
                $status = $user->online ? 'LABEL_ONLINE' : 'LABEL_OFFLINE';
1 www 68
 
3086 efrain 69
 
4124 efrain 70
                array_push($contacts, ['id' => $userConnectetion->uuid, 'uuid' => $userConnectetion->uuid, 'status'=> $status,'name'=> $username, 'image' => $userConnectetion->image]);
1 www 71
 
72
            }
73
        }
74
 
75
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
76
 
77
        $groups = [];
78
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
4124 efrain 79
        $results= $chatGroupUserMapper->fetchAllByUserId($user->id);
1 www 80
 
81
 
82
 
83
 
84
 
85
 
86
 
87
 
88
 
89
        if(is_array($results)) {
90
            foreach ($results as $r) {
91
 
92
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
93
                if($chatGroup) {
94
                    array_push($groups, ['id' => $chatGroup->uuid,   'name' => $chatGroup->name,  'owner' => $r->owner == ChatGroupUser::OWNER_YES ]);
95
                }
96
 
97
            }
98
        }
99
 
100
 
4125 efrain 101
        return $this->getView()->render('helpers/chat.phtml', ['contacts' => $contacts, 'groups' => $groups, 'user_id' => $user->id, 'timezone' => $user->timezone]);
1 www 102
    }
103
 
104
    private function isInactiveConnection(string $timestamp)
105
    {
106
        if(empty($timestamp)) {
107
            return true;
108
        }
109
 
110
        $now = date('Y-m-d H:i:s');
111
        $datetime1=date_create($now);
112
        $datetime2=date_create($timestamp);
113
        $diff=date_diff($datetime1, $datetime2);
114
 
115
        if($diff->y > 0 || $diff->m > 0 || $diff->d > 0 || $diff->h > 0 || $diff->i > 0) {
116
            return true;
117
        }
118
 
119
 
120
        return ($diff->s) > 15 ? true : false;
121
 
122
    }
123
}