Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2581 | | 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 Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Db\ResultSet\HydratingResultSet;
9
use Laminas\Db\Sql\Expression;
10
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
11
use Laminas\Log\LoggerInterface;
12
use Laminas\Paginator\Paginator;
13
use Laminas\Paginator\Adapter\DbSelect;
14
 
15
use LeadersLinked\Model\Device;
16
use LeadersLinked\Mapper\Common\MapperCommon;
17
use Laminas\Hydrator\ArraySerializableHydrator;
18
 
19
 
20
 
21
class DeviceMapper extends MapperCommon
22
{
23
    const _TABLE = 'tbl_devices';
24
 
25
 
26
    /**
27
     *
28
     * @var DeviceMapper
29
     */
30
    private static $_instance;
31
 
32
    /**
33
     *
34
     * @param AdapterInterface $adapter
35
     */
36
    private function __construct($adapter)
37
    {
38
        parent::__construct($adapter);
39
    }
40
 
41
    /**
42
     *
43
     * @param AdapterInterface $adapter
44
     * @return DeviceMapper
45
     */
46
    public static function getInstance($adapter)
47
    {
48
        if(self::$_instance == null) {
49
            self::$_instance = new DeviceMapper($adapter);
50
        }
51
        return self::$_instance;
52
    }
3838 efrain 53
 
54
    /**
55
     *
56
     * @param int $user_idid
57
     * @return Device
58
     */
59
    public function fetchOneByUserId($user_id)
60
    {
61
        $select = $this->sql->select(self::_TABLE);
62
        $select->where->equalTo('user_id', $user_id);
63
        $select->limit(1);
64
 
65
        $prototype = new Device();
66
        return $this->executeFetchOneObject($select, $prototype);
67
    }
1 www 68
 
69
 
70
    /**
71
     *
72
     * @param string $id
73
     * @return Device
74
     */
75
    public function fetchOne($id)
76
    {
77
        $select = $this->sql->select(self::_TABLE);
78
        $select->where->equalTo('id', $id);
79
        $select->limit(1);
80
 
81
        $prototype = new Device();
82
        return $this->executeFetchOneObject($select, $prototype);
83
    }
84
 
85
    /**
86
     *
87
     * @param string $search
88
     * @param int $page
89
     * @param int $records_per_page
90
     * @param string $order_field
91
     * @param string $order_direction
92
     * @return Paginator
93
     */
94
    public function fetchAllDataTable($search, $page = 1, $records_per_page = 10, $order_field= 'user', $order_direction = 'ASC')
95
    {
96
        $prototype = new Device();
97
        $select = $this->sql->select();
98
        $select->from(['d' => self::_TABLE]);
99
        $select->columns(['device_id' => 'id', 'device', 'model','product', 'osversion', 'token', 'updated_on']);
100
 
101
        if($search) {
102
            //$select->where->like('user', '%' . $search . '%')->or->like('email', '%' . $search . '%');
103
        }
104
        $select->order($order_field . ' ' . $order_direction);
105
 
106
      // echo $select->getSqlString($this->adapter->platform); exit;
107
 
108
        $hydrator   = new ObjectPropertyHydrator();
109
        $resultset  = new HydratingResultSet($hydrator, $prototype);
110
 
111
        $adapter = new DbSelect($select, $this->sql, $resultset);
112
        $paginator = new Paginator($adapter);
113
        $paginator->setItemCountPerPage($records_per_page);
114
        $paginator->setCurrentPageNumber($page);
115
 
116
 
117
        return $paginator;
118
    }
119
 
120
 
121
    /**
122
     *
123
     * @param int $company_id
124
     * @param string $search
125
     * @param int $page
126
     * @param int $records_per_page
127
     * @param string $order_field
128
     * @param string $order_direction
129
     * @return Paginator
130
     */
131
    public function fetchAllDataTableMicrolearningByCompanyId($company_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
132
    {
133
 
134
        $select = $this->sql->select();
135
        $select->columns(['manufacturer', 'brand', 'version', 'model', 'added_on', 'updated_on']);
136
        $select->from(['d' => DeviceMapper::_TABLE]);
137
        $select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.user_id = d.user_id', []);
138
        $select->join(['u' => UserMapper::_TABLE], 'u.id = cu.user_id', ['first_name', 'last_name', 'email']);
139
        $select->where->equalTo('company_id', $company_id);
140
 
141
        if($search) {
142
            $select->where->like('u.first_name', '%' . $search . '%')->or->like('u.last_name', '%' . $search . '%')->or->like('u.email', '%' . $search . '%');
143
        }
144
 
145
        $select->order($order_field . ' ' . $order_direction);
146
 
147
        //echo $select->getSqlString($this->adapter->platform); exit;
148
 
149
        $hydrator   = new ArraySerializableHydrator();
150
        $resultset  = new HydratingResultSet($hydrator);
151
 
152
        $adapter = new DbSelect($select, $this->sql, $resultset);
153
        $paginator = new Paginator($adapter);
154
        $paginator->setItemCountPerPage($records_per_page);
155
        $paginator->setCurrentPageNumber($page);
156
 
157
 
158
        return $paginator;
159
    }
160
 
161
    /**
162
     *
163
     * @param int $user_id
164
     * @return Device[]
165
     */
166
    public function fetchAllByUserId($user_id)
167
    {
168
        $prototype = new Device();
169
        $select = $this->sql->select(self::_TABLE);
170
        $select->where->equalTo('user_id', $user_id);
171
 
172
        return $this->executeFetchAllObject($select, $prototype);
173
    }
174
 
3838 efrain 175
 
176
 
1 www 177
    /**
3838 efrain 178
     *
179
     * @param [] $user_id
180
     * @return Device[]
181
     */
182
    public function fetchAllByUserIds($user_ids)
183
    {
184
        $prototype = new Device();
185
        $select = $this->sql->select(self::_TABLE);
186
        $select->where->ein('user_id', $user_ids);
187
 
188
        return $this->executeFetchAllObject($select, $prototype);
189
    }
190
 
191
    /**
2503 efrain 192
     *
193
     * @param Device $device
194
     * @return boolean
195
     */
196
    public function releaseUserFormDevice($device)
197
    {
198
 
199
 
200
        $update = $this->sql->update(self::_TABLE);
201
        $update->set([
2581 efrain 202
            'user_id' => new Expression('null'),
2503 efrain 203
        ]);
204
        $update->where->equalTo('id', $device->id);
205
 
206
        return $this->executeUpdate($update);
207
    }
208
 
209
    /**
1 www 210
     *
2503 efrain 211
     * @param int $user_id
212
     * @return Device[]
213
     */
214
    public function fetchAllByUserIdAndApplicationId($user_id, $application_id)
215
    {
216
        $prototype = new Device();
217
        $select = $this->sql->select(self::_TABLE);
218
        $select->where->equalTo('user_id', $user_id);
219
        $select->where->equalTo('application_id', $application_id);
220
 
221
        return $this->executeFetchAllObject($select, $prototype);
222
    }
223
 
224
    /**
225
     *
1 www 226
     * @param Device $device
227
     * @return boolean
228
     */
229
    public function insert($device)
230
    {
231
        $hydrator = new ObjectPropertyHydrator();
232
        $values = $hydrator->extract($device);
233
        $values = $this->removeEmpty($values);
234
 
235
        $insert = $this->sql->insert(self::_TABLE);
236
        $insert->values($values);
237
 
238
        //echo $insert->getSqlString($this->adapter->platform); exit;
239
 
240
 
241
        return $this->executeInsert($insert);
242
 
243
    }
244
 
245
    /**
246
     *
247
     * @param Device $device
248
     * @return boolean
249
     */
250
    public function update($device)
251
    {
252
        $hydrator = new ObjectPropertyHydrator();
253
        $values = $hydrator->extract($device);
254
        $values = $this->removeEmpty($values);
255
 
256
        $update = $this->sql->update(self::_TABLE);
257
        $update->set($values);
258
        $update->where->equalTo('id', $device->id);
259
 
260
        return $this->executeUpdate($update);
261
    }
262
 
263
    /**
264
     *
265
     * @param Device $device
266
     * @return boolean
267
     */
268
    public function delete($device)
269
    {
270
        $delete = $this->sql->delete(self::_TABLE);
271
        $delete->where->equalTo('id', $device->id);
272
 
273
        return $this->executeDelete($delete);
274
 
275
    }
276
 
277
    /**
278
     *
279
     * @param Device $device
280
     * @return boolean
281
     */
282
    public function signout($device)
283
    {
284
        $values = [
1323 efrain 285
            'user_id'   => null,
1 www 286
            'password'  => '',
287
        ];
288
 
289
        $update = $this->sql->update(self::_TABLE);
290
        $update->set($values);
291
        $update->where->equalTo('id', $device->id);
292
 
293
        return $this->executeUpdate($update);
294
    }
295
 
296
 
297
    /**
298
     *
299
     * @return boolean
300
     */
301
    public function truncate()
302
    {
303
        $sql = 'DELETE FROM ' . self::_TABLE;
304
        if($this->executeSentenceWithParameters($sql)) {
305
            $sql = 'ALTER TABLE ' . self::_TABLE . ' AUTO_INCREMENT = 1 ';
306
            return $this->executeSentenceWithParameters($sql);
307
        }
308
        return false;
309
    }
310
 
311
 
312
 
313
 
314
}