Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
11351 nelberth 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
    {
40
        $connectionMapper = ConnectionMapper:: getInstance($this->adapter);
41
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);
42
 
43
        $contacts = [];
44
        if($connectionIds) {
45
 
46
            $userMapper = UserMapper::getInstance($this->adapter);
47
            $users = $userMapper->fetchAllByIds($connectionIds);
48
 
49
 
50
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
51
            $user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user_id);
52
 
53
 
54
 
55
            foreach($users as $user)
56
            {
57
                if(in_array($user->id, $user_blocked_ids)) {
58
                    continue;
59
                }
60
 
61
                $username = trim($user->first_name . ' ' . $user->last_name);
14591 efrain 62
                $status = $user->online ? 'Online' : 'Offline';
11351 nelberth 63
 
11393 nelberth 64
                array_push($contacts, ['id' => $user->uuid, 'id_encrypted' => $user->uuid, 'status'=> $status,'name'=> $username, 'image' => $user->image]);
11351 nelberth 65
 
66
            }
67
        }
68
 
69
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
70
 
71
        $groups = [];
72
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
73
        $results= $chatGroupUserMapper->fetchAllByUserId($user_id);
74
 
75
 
76
 
77
 
78
 
79
 
80
 
81
 
82
 
83
        if(is_array($results)) {
84
            foreach ($results as $r) {
85
 
86
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
87
                if($chatGroup) {
88
                    array_push($groups, ['id' => $chatGroup->uuid,   'name' => $chatGroup->name,  'owner' => $r->owner == ChatGroupUser::OWNER_YES ]);
89
                }
90
 
91
            }
92
        }
93
 
94
 
11532 nelberth 95
        return $this->getView()->render('helpers/chat.phtml', ['contacts' => $contacts, 'groups' => $groups, 'user_id' => $user_id]);
11351 nelberth 96
    }
97
 
98
    private function isInactiveConnection(string $timestamp)
99
    {
100
        if(empty($timestamp)) {
101
            return true;
102
        }
103
 
104
        $now = date('Y-m-d H:i:s');
105
        $datetime1=date_create($now);
106
        $datetime2=date_create($timestamp);
107
        $diff=date_diff($datetime1, $datetime2);
108
 
109
        if($diff->y > 0 || $diff->m > 0 || $diff->d > 0 || $diff->h > 0 || $diff->i > 0) {
110
            return true;
111
        }
112
 
113
 
114
        return ($diff->s) > 15 ? true : false;
115
 
116
    }
11523 nelberth 117
}