Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2220 | | 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;
2241 efrain 13
use LeadersLinked\Model\ChatGroupMessage;
1 www 14
 
15
class ChatGroupUserMessageMapper extends MapperCommon
16
{
17
    const _TABLE = 'tbl_chat_group_user_messages';
18
 
19
    /**
20
     *
21
     * @var ChatGroupUserMessageMapper
22
     */
23
    private static $_instance;
24
 
25
    /**
26
     *
27
     * @param AdapterInterface $adapter
28
     * @param int $user_id
29
     */
30
    private function __construct($adapter)
31
    {
32
        parent::__construct($adapter);
33
    }
34
 
35
    /**
36
     *
37
     * @param AdapterInterface $adapter
38
     * @return ChatGroupUserMessageMapper
39
     */
40
    public static function getInstance($adapter)
41
    {
42
        if(self::$_instance == null) {
43
            self::$_instance = new ChatGroupUserMessageMapper($adapter);
44
        }
45
        return self::$_instance;
46
    }
47
 
2219 efrain 48
 
2241 efrain 49
    /**
50
     *
51
     * @param int $group_id
52
     * @param int $user_id
53
     * @return ChatGroupUserMessage
54
     */
55
    public function fetchLastMessage($group_id, $user_id)
56
    {
57
 
58
        $prototype = new ChatGroupUserMessage();
59
 
60
        $select = $this->sql->select(self::_TABLE);
61
        $select->where->equalTo('group_id', $group_id);
62
        $select->where->equalTo('receiver_id', $user_id);
63
        $select->where->equalTo('seen', ChatGroupUserMessage::SEEN_YES);
64
        $select->order('added_on DESC');
65
        $select->limit(1);
66
 
67
        return $this->executeFetchOneObject($select, $prototype);
68
    }
1 www 69
 
2219 efrain 70
 
1 www 71
    /**
2219 efrain 72
     *
73
     * @param int $group_id
74
     * @param int $user_id
75
     * @return boolean
76
     */
2220 efrain 77
    public function countNotSeenMessages($group_id, $user_id)
2219 efrain 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('seen', ChatGroupUserMessage::SEEN_NO);
85
 
86
 
87
        $record = $this->executeFetchOneArray($select);
88
        return $record['total'];
89
 
90
    }
91
 
92
    /**
93
     *
94
     * @param int $group_id
95
     * @param int $user_id
96
     * @return boolean
97
     */
98
    public function countNotReceivedMessages($group_id, $user_id)
99
    {
100
 
101
        $select = $this->sql->select(self::_TABLE);
102
        $select->columns(['total' => new Expression('COUNT(*)')]);
103
        $select->where->equalTo('group_id', $group_id);
104
        $select->where->equalTo('receiver_id', $user_id);
105
        $select->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
106
 
107
 
108
        $record = $this->executeFetchOneArray($select);
109
        return $record['total'];
110
 
111
    }
112
 
113
 
114
 
115
    /**
1 www 116
     *
117
     * @param int $group_id
118
     * @param int $user_id
119
     * @return boolean
120
     */
121
    public function existNotSeenMessages($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('seen', ChatGroupUserMessage::SEEN_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 existNotReceivedMessages($group_id, $user_id)
143
    {
144
        $prototype = new ChatGroupUserMessage();
145
 
146
        $select = $this->sql->select(self::_TABLE);
147
        $select->where->equalTo('group_id', $group_id);
148
        $select->where->equalTo('receiver_id', $user_id);
149
        $select->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
150
        $select->limit(1);
151
 
152
        $record = $this->executeFetchOneObject($select, $prototype);
153
        return $record ? true : false;
154
 
155
    }
156
 
157
    /**
158
     *
159
     * @param int $group_id
160
     * @param int $user_id
161
     * @return boolean
162
     */
163
    public function markAsReceivedByGroupIdAndUserId($group_id, $user_id)
164
    {
165
        $update = $this->sql->update(self::_TABLE);
166
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES]);
167
        $update->where->equalTo('group_id', $group_id);
168
        $update->where->equalTo('receiver_id', $user_id);;
169
        $update->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
170
 
171
       // echo $update->getSqlString($this->adapter->platform);
172
 
173
        return $this->executeUpdate($update);
174
    }
175
 
176
    /**
177
     *
178
     * @param int $group_id
179
     * @param int $user_id
180
     * @return boolean
181
     */
182
    public function markAsSeenByGroupIdAndUserId($group_id, $user_id)
183
    {
184
        $update = $this->sql->update(self::_TABLE);
185
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES, 'seen' => ChatGroupUserMessage::SEEN_YES]);
186
        $update->where->equalTo('group_id', $group_id);
187
        $update->where->equalTo('receiver_id', $user_id);;
188
        $update->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
189
 
190
 
191
        return $this->executeUpdate($update);
192
    }
193
 
194
    /**
195
     *
196
     * @param ChatGroupUserMessage $chatGroupUserMessage
197
     * @return boolean
198
     */
199
    public function insert($chatGroupUserMessage)
200
    {
201
        $hydrator = new ObjectPropertyHydrator();
202
        $values = $hydrator->extract($chatGroupUserMessage);
203
        $values = $this->removeEmpty($values);
204
 
205
        $insert = $this->sql->insert(self::_TABLE);
206
        $insert->values($values);
207
 
208
        return $this->executeInsert($insert);
209
    }
210
 
211
    /*
212
    public function deleteAllByMessageIds($message_ids)
213
    {
214
        $delete = $this->sql->delete(self::_TABLE);
215
        $delete->where->in('message_id', $message_ids);
216
 
217
        return $this->executeDelete($delete);
218
    }
219
    */
220
 
221
    public function deleteAllByGroupId($group_id)
222
    {
223
        $delete = $this->sql->delete(self::_TABLE);
224
        $delete->where->equalTo('group_id', $group_id);
225
 
226
        //echo $delete->getSqlString($this->adapter->platform); exit;
227
 
228
        return $this->executeDelete($delete);
229
    }
230
 
231
}