Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2219 | Ir a la última revisión | | 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;
12
 
13
class ChatGroupUserMessageMapper extends MapperCommon
14
{
15
    const _TABLE = 'tbl_chat_group_user_messages';
16
 
17
    /**
18
     *
19
     * @var ChatGroupUserMessageMapper
20
     */
21
    private static $_instance;
22
 
23
    /**
24
     *
25
     * @param AdapterInterface $adapter
26
     * @param int $user_id
27
     */
28
    private function __construct($adapter)
29
    {
30
        parent::__construct($adapter);
31
    }
32
 
33
    /**
34
     *
35
     * @param AdapterInterface $adapter
36
     * @return ChatGroupUserMessageMapper
37
     */
38
    public static function getInstance($adapter)
39
    {
40
        if(self::$_instance == null) {
41
            self::$_instance = new ChatGroupUserMessageMapper($adapter);
42
        }
43
        return self::$_instance;
44
    }
45
 
46
 
47
    /**
48
     *
49
     * @param int $group_id
50
     * @param int $user_id
51
     * @return boolean
52
     */
53
    public function existNotSeenMessages($group_id, $user_id)
54
    {
55
        $prototype = new ChatGroupUserMessage();
56
 
57
        $select = $this->sql->select(self::_TABLE);
58
        $select->where->equalTo('group_id', $group_id);
59
        $select->where->equalTo('receiver_id', $user_id);
60
        $select->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
61
        $select->limit(1);
62
 
63
        $record = $this->executeFetchOneObject($select, $prototype);
64
        return $record ? true : false;
65
 
66
    }
67
 
68
    /**
69
     *
70
     * @param int $group_id
71
     * @param int $user_id
72
     * @return boolean
73
     */
74
    public function existNotReceivedMessages($group_id, $user_id)
75
    {
76
        $prototype = new ChatGroupUserMessage();
77
 
78
        $select = $this->sql->select(self::_TABLE);
79
        $select->where->equalTo('group_id', $group_id);
80
        $select->where->equalTo('receiver_id', $user_id);
81
        $select->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
82
        $select->limit(1);
83
 
84
        $record = $this->executeFetchOneObject($select, $prototype);
85
        return $record ? true : false;
86
 
87
    }
88
 
89
    /**
90
     *
91
     * @param int $group_id
92
     * @param int $user_id
93
     * @return boolean
94
     */
95
    public function markAsReceivedByGroupIdAndUserId($group_id, $user_id)
96
    {
97
        $update = $this->sql->update(self::_TABLE);
98
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES]);
99
        $update->where->equalTo('group_id', $group_id);
100
        $update->where->equalTo('receiver_id', $user_id);;
101
        $update->where->equalTo('recd', ChatGroupUserMessage::RECD_NO);
102
 
103
       // echo $update->getSqlString($this->adapter->platform);
104
 
105
        return $this->executeUpdate($update);
106
    }
107
 
108
    /**
109
     *
110
     * @param int $group_id
111
     * @param int $user_id
112
     * @return boolean
113
     */
114
    public function markAsSeenByGroupIdAndUserId($group_id, $user_id)
115
    {
116
        $update = $this->sql->update(self::_TABLE);
117
        $update->set(['recd' => ChatGroupUserMessage::RECD_YES, 'seen' => ChatGroupUserMessage::SEEN_YES]);
118
        $update->where->equalTo('group_id', $group_id);
119
        $update->where->equalTo('receiver_id', $user_id);;
120
        $update->where->equalTo('seen', ChatGroupUserMessage::SEEN_NO);
121
 
122
 
123
        return $this->executeUpdate($update);
124
    }
125
 
126
    /**
127
     *
128
     * @param ChatGroupUserMessage $chatGroupUserMessage
129
     * @return boolean
130
     */
131
    public function insert($chatGroupUserMessage)
132
    {
133
        $hydrator = new ObjectPropertyHydrator();
134
        $values = $hydrator->extract($chatGroupUserMessage);
135
        $values = $this->removeEmpty($values);
136
 
137
        $insert = $this->sql->insert(self::_TABLE);
138
        $insert->values($values);
139
 
140
        return $this->executeInsert($insert);
141
    }
142
 
143
    /*
144
    public function deleteAllByMessageIds($message_ids)
145
    {
146
        $delete = $this->sql->delete(self::_TABLE);
147
        $delete->where->in('message_id', $message_ids);
148
 
149
        return $this->executeDelete($delete);
150
    }
151
    */
152
 
153
    public function deleteAllByGroupId($group_id)
154
    {
155
        $delete = $this->sql->delete(self::_TABLE);
156
        $delete->where->equalTo('group_id', $group_id);
157
 
158
        //echo $delete->getSqlString($this->adapter->platform); exit;
159
 
160
        return $this->executeDelete($delete);
161
    }
162
 
163
}