Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2219 | Ir a la última revisión | | Comparar con el anterior | 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\Mapper;
6
 
7
use LeadersLinked\Model\ChatGroupUserMessage;
8
use LeadersLinked\Mapper\Common\MapperCommon;
9
use Laminas\Db\Adapter\AdapterInterface;
10
use Laminas\Log\LoggerInterface;
11
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
2219 efrain 12
use Laminas\Db\Sql\Expression;
1 www 13
 
14
class ChatGroupUserMessageMapper extends MapperCommon
15
{
16
    const _TABLE = 'tbl_chat_group_user_messages';
17
 
18
    /**
19
     *
20
     * @var ChatGroupUserMessageMapper
21
     */
22
    private static $_instance;
23
 
24
    /**
25
     *
26
     * @param AdapterInterface $adapter
27
     * @param int $user_id
28
     */
29
    private function __construct($adapter)
30
    {
31
        parent::__construct($adapter);
32
    }
33
 
34
    /**
35
     *
36
     * @param AdapterInterface $adapter
37
     * @return ChatGroupUserMessageMapper
38
     */
39
    public static function getInstance($adapter)
40
    {
41
        if(self::$_instance == null) {
42
            self::$_instance = new ChatGroupUserMessageMapper($adapter);
43
        }
44
        return self::$_instance;
45
    }
46
 
2219 efrain 47
 
1 www 48
 
2219 efrain 49
 
1 www 50
    /**
2219 efrain 51
     *
52
     * @param int $group_id
53
     * @param int $user_id
54
     * @return boolean
55
     */
2220 efrain 56
    public function countNotSeenMessages($group_id, $user_id)
2219 efrain 57
    {
58
 
59
        $select = $this->sql->select(self::_TABLE);
60
        $select->columns(['total' => new Expression('COUNT(*)')]);
61
        $select->where->equalTo('group_id', $group_id);
62
        $select->where->equalTo('receiver_id', $user_id);
63
        $select->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
64
 
65
 
66
        $record = $this->executeFetchOneArray($select);
67
        return $record['total'];
68
 
69
    }
70
 
71
    /**
72
     *
73
     * @param int $group_id
74
     * @param int $user_id
75
     * @return boolean
76
     */
77
    public function countNotReceivedMessages($group_id, $user_id)
78
    {
79
 
80
        $select = $this->sql->select(self::_TABLE);
81
        $select->columns(['total' => new Expression('COUNT(*)')]);
82
        $select->where->equalTo('group_id', $group_id);
83
        $select->where->equalTo('receiver_id', $user_id);
84
        $select->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
85
 
86
 
87
        $record = $this->executeFetchOneArray($select);
88
        return $record['total'];
89
 
90
    }
91
 
92
 
93
 
94
    /**
1 www 95
     *
96
     * @param int $group_id
97
     * @param int $user_id
98
     * @return boolean
99
     */
100
    public function existNotSeenMessages($group_id, $user_id)
101
    {
102
        $prototype = new ChatGroupUserMessage();
103
 
104
        $select = $this->sql->select(self::_TABLE);
105
        $select->where->equalTo('group_id', $group_id);
106
        $select->where->equalTo('receiver_id', $user_id);
107
        $select->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
108
        $select->limit(1);
109
 
110
        $record = $this->executeFetchOneObject($select, $prototype);
111
        return $record ? true : false;
112
 
113
    }
114
 
115
    /**
116
     *
117
     * @param int $group_id
118
     * @param int $user_id
119
     * @return boolean
120
     */
121
    public function existNotReceivedMessages($group_id, $user_id)
122
    {
123
        $prototype = new ChatGroupUserMessage();
124
 
125
        $select = $this->sql->select(self::_TABLE);
126
        $select->where->equalTo('group_id', $group_id);
127
        $select->where->equalTo('receiver_id', $user_id);
128
        $select->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
129
        $select->limit(1);
130
 
131
        $record = $this->executeFetchOneObject($select, $prototype);
132
        return $record ? true : false;
133
 
134
    }
135
 
136
    /**
137
     *
138
     * @param int $group_id
139
     * @param int $user_id
140
     * @return boolean
141
     */
142
    public function markAsReceivedByGroupIdAndUserId($group_id, $user_id)
143
    {
144
        $update = $this->sql->update(self::_TABLE);
145
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES]);
146
        $update->where->equalTo('group_id', $group_id);
147
        $update->where->equalTo('receiver_id', $user_id);;
148
        $update->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
149
 
150
       // echo $update->getSqlString($this->adapter->platform);
151
 
152
        return $this->executeUpdate($update);
153
    }
154
 
155
    /**
156
     *
157
     * @param int $group_id
158
     * @param int $user_id
159
     * @return boolean
160
     */
161
    public function markAsSeenByGroupIdAndUserId($group_id, $user_id)
162
    {
163
        $update = $this->sql->update(self::_TABLE);
164
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES, 'seen' => ChatGroupUserMessage::SEEN_YES]);
165
        $update->where->equalTo('group_id', $group_id);
166
        $update->where->equalTo('receiver_id', $user_id);;
167
        $update->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
168
 
169
 
170
        return $this->executeUpdate($update);
171
    }
172
 
173
    /**
174
     *
175
     * @param ChatGroupUserMessage $chatGroupUserMessage
176
     * @return boolean
177
     */
178
    public function insert($chatGroupUserMessage)
179
    {
180
        $hydrator = new ObjectPropertyHydrator();
181
        $values = $hydrator->extract($chatGroupUserMessage);
182
        $values = $this->removeEmpty($values);
183
 
184
        $insert = $this->sql->insert(self::_TABLE);
185
        $insert->values($values);
186
 
187
        return $this->executeInsert($insert);
188
    }
189
 
190
    /*
191
    public function deleteAllByMessageIds($message_ids)
192
    {
193
        $delete = $this->sql->delete(self::_TABLE);
194
        $delete->where->in('message_id', $message_ids);
195
 
196
        return $this->executeDelete($delete);
197
    }
198
    */
199
 
200
    public function deleteAllByGroupId($group_id)
201
    {
202
        $delete = $this->sql->delete(self::_TABLE);
203
        $delete->where->equalTo('group_id', $group_id);
204
 
205
        //echo $delete->getSqlString($this->adapter->platform); exit;
206
 
207
        return $this->executeDelete($delete);
208
    }
209
 
210
}