Proyectos de Subversion LeadersLinked - Services

Rev

Rev 619 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
283 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Mapper;
5
 
6
use LeadersLinked\Mapper\Common\MapperCommon;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Model\MicrolearningCapsule;
9
use Laminas\Db\Sql\Expression;
10
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
11
use Laminas\Db\ResultSet\HydratingResultSet;
12
use Laminas\Paginator\Paginator;
13
use Laminas\Paginator\Adapter\DbSelect;
14
 
15
 
16
class MicrolearningCapsuleMapper extends MapperCommon
17
{
18
    const _TABLE = 'tbl_microlearning_capsules';
19
 
20
    /**
21
     *
22
     * @var MicrolearningCapsuleMapper
23
     */
24
    private static $_instance;
25
    /**
26
     *
27
     * @param AdapterInterface $adapter
28
     */
29
    private function __construct($adapter)
30
    {
31
        parent::__construct($adapter);
32
    }
33
 
34
    /**
35
     *
36
     * @param AdapterInterface $adapter
37
     * @return MicrolearningCapsuleMapper
38
     */
39
    public static function getInstance($adapter)
40
    {
41
        if(self::$_instance == null) {
42
            self::$_instance = new MicrolearningCapsuleMapper($adapter);
43
        }
44
        return self::$_instance;
45
    }
46
 
47
    /**
48
     *
49
     * @param int $company_id
50
     * @return int
51
     */
52
    public function fetchTotalCountByCompanyId($company_id)
53
    {
54
        $select = $this->sql->select();
55
        $select->columns(['total' => new Expression('COUNT(*)')]);
56
        $select->from(self::_TABLE);
57
        $select->where->equalTo('company_id', $company_id);
58
 
59
        $record = $this->executeFetchOneArray($select);
60
        return $record['total'];
61
    }
62
 
63
    /**
64
     *
65
     * @param int $company_id
66
     * @return int
67
     */
68
    public function fetchTotalCountAllActiveByCompanyId($company_id)
69
    {
70
        $select = $this->sql->select();
71
        $select->columns(['total' => new Expression('COUNT(*)')]);
72
        $select->from(self::_TABLE);
73
        $select->where->equalTo('company_id', $company_id);
74
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
75
 
76
        $record = $this->executeFetchOneArray($select);
77
        return $record['total'];
78
    }
79
 
80
    /**
81
     *
82
     * @param int $id
83
     * @return MicrolearningCapsule
84
     */
85
    public function fetchOne($id)
86
    {
87
        $prototype = new MicrolearningCapsule();
88
 
89
        $select = $this->sql->select(self::_TABLE);
90
        $select->where->equalTo('id', $id);
91
 
92
        return $this->executeFetchOneObject($select, $prototype);
93
    }
94
 
95
    /**
96
     *
97
     * @param int $uuid
98
     * @return MicrolearningCapsule
99
     */
100
    public function fetchOneByUuid($uuid)
101
    {
102
        $prototype = new MicrolearningCapsule;
103
        $select = $this->sql->select(self::_TABLE);
104
        $select->where->equalTo('uuid', $uuid);
105
 
106
        return $this->executeFetchOneObject($select, $prototype);
107
    }
621 stevensc 108
 
109
    /**
110
     *
111
     * @param int $id
112
     * @return MicrolearningCapsule
113
     */
114
    public function fetchOneById($id)
115
    {
116
        $prototype = new MicrolearningCapsule();
117
        $select = $this->sql->select(self::_TABLE);
118
        $select->where->equalTo('id', $id);
119
 
120
        return $this->executeFetchOneObject($select, $prototype);
121
    }
283 www 122
 
621 stevensc 123
 
283 www 124
    /**
125
     *
126
     * @param int $company_id
127
     * @param int $company_id
128
     * @return MicrolearningCapsule[]
129
     */
130
    public function fetchAllActiveByCompanyId($company_id)
131
    {
132
        $prototype = new MicrolearningCapsule();
133
 
134
        $select = $this->sql->select(self::_TABLE);
135
        $select->where->equalTo('company_id', $company_id);
136
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
603 stevensc 137
        $select->order(['name']);
283 www 138
 
139
        return $this->executeFetchAllObject($select, $prototype);
140
    }
141
 
142
    /**
143
     *
144
     * @param int $company_id
145
     * @return MicrolearningCapsule[]
146
     */
147
    public function fetchAllByCompanyId($company_id)
148
    {
149
        $prototype = new MicrolearningCapsule();
150
 
151
        $select = $this->sql->select(self::_TABLE);
152
        $select->where->equalTo('company_id', $company_id);
619 stevensc 153
        $select->order(['name']);
283 www 154
 
155
        //echo $select->getSqlString($this->adapter->platform); exit;
156
 
157
        return $this->executeFetchAllObject($select, $prototype);
158
    }
159
 
160
    /**
161
     *
162
     * @param int[] $ids
163
     * @return MicrolearningCapsule[]
164
     */
165
    public function fetchAllByIds($ids)
166
    {
167
        $prototype = new MicrolearningCapsule();
168
 
169
 
170
        $select = $this->sql->select(self::_TABLE);
171
        $select->where->in('id', $ids);
172
        $select->order(['order', 'name']);
173
 
174
        //echo $select->getSqlString($this->adapter->platform); exit;
175
 
176
        return $this->executeFetchAllObject($select, $prototype);
177
    }
178
 
179
    /**
180
     *
181
     * @param int $company_id
182
     * @return int
183
     */
184
    public function fetchCountByCompanyId($company_id)
185
    {
186
 
187
 
188
        $select = $this->sql->select(self::_TABLE);
189
        $select->columns(['total' => new Expression('COUNT(*)')]);
190
        $select->where->equalTo('company_id', $company_id);
191
 
192
 
193
        $record = $this->executeFetchOneArray($select);
194
        return $record['total'];
195
 
196
    }
197
 
198
 
199
 
200
 
201
    /**
202
     *
203
 
204
     * @return MicrolearningCapsule[]
205
     */
206
    public function fetchAllActiveAndPublic()
207
    {
208
        $prototype = new MicrolearningCapsule();
209
 
210
        $select = $this->sql->select(self::_TABLE);
211
 
212
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
213
        $select->where->equalTo('privacy', MicrolearningCapsule::PRIVACY_PUBLIC);
214
        $select->where->equalTo('type', MicrolearningCapsule::TYPE_FREE);
215
 
216
        $select->order(['order', 'name']);
217
 
218
        return $this->executeFetchAllObject($select, $prototype);
219
    }
220
 
221
 
222
    /**
223
     *
224
 
225
     * @return MicrolearningCapsule[]
226
     */
227
    public function fetchAllActive()
228
    {
229
        $prototype = new MicrolearningCapsule();
230
 
231
        $select = $this->sql->select(self::_TABLE);
232
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
603 stevensc 233
        $select->order(['name']);
283 www 234
 
235
        return $this->executeFetchAllObject($select, $prototype);
236
    }
237
 
238
 
239
    /**
240
     *
241
 
242
     * @return MicrolearningCapsule[]
243
     */
244
    public function fetchAll()
245
    {
246
        $prototype = new MicrolearningCapsule();
247
 
248
        $select = $this->sql->select(self::_TABLE);
603 stevensc 249
        $select->order(['name']);
283 www 250
 
251
        return $this->executeFetchAllObject($select, $prototype);
252
    }
253
 
254
 
255
    /**
256
     *
257
     * @param int $companyId
258
     * @param string $search
259
     * @param int $page
260
     * @param int $records_per_page
261
     * @param string $order_field
262
     * @param string $order_direction
263
     * @return Paginator
264
     */
265
    public function fetchAllDataTableByCompanyId($companyId,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
266
    {
267
        $prototype = new MicrolearningCapsule();
268
        $select = $this->sql->select(self::_TABLE);
269
        $select->where->equalTo('company_id', $companyId);
270
 
271
 
272
        if($search) {
273
            $select->where->like('name', '%' . $search . '%');
274
        }
275
        $select->order($order_field . ' ' . $order_direction);
276
 
277
        //echo $select->getSqlString($this->adapter->platform); exit;
278
 
279
        $hydrator   = new ObjectPropertyHydrator();
280
        $resultset  = new HydratingResultSet($hydrator, $prototype);
281
 
282
        $adapter = new DbSelect($select, $this->sql, $resultset);
283
        $paginator = new Paginator($adapter);
284
        $paginator->setItemCountPerPage($records_per_page);
285
        $paginator->setCurrentPageNumber($page);
286
 
287
 
288
        return $paginator;
289
    }
290
 
291
 
292
    /**
293
     *
294
     * @param MicrolearningCapsule $capsule
295
     * @return boolean
296
     */
297
    public function insert($capsule)
298
    {
299
        $hydrator = new ObjectPropertyHydrator();
300
        $values = $hydrator->extract($capsule);
301
        $values = $this->removeEmpty($values);
302
 
303
 
304
        $insert = $this->sql->insert(self::_TABLE);
305
        $insert->values($values);
306
 
307
        $result = $this->executeInsert($insert);
308
        if($result) {
309
            $capsule->id = $this->lastInsertId;
310
        }
311
        return $result;
312
    }
313
 
314
    /**
315
     *
316
     * @param MicrolearningCapsule $capsule
317
     * @return boolean
318
     */
319
    public function update($capsule)
320
    {
321
        $hydrator = new ObjectPropertyHydrator();
322
        $values = $hydrator->extract($capsule);
323
        $values = $this->removeEmpty($values);
324
 
325
        $update = $this->sql->update(self::_TABLE);
326
        $update->set($values);
327
        $update->where->equalTo('id', $capsule->id);
328
 
329
        return $this->executeUpdate($update);
330
    }
331
 
332
    /**
333
     *
334
     * @param MicrolearningCapsule $capsule
335
     * @return boolean
336
     */
337
    public function delete($capsule)
338
    {
339
        $delete = $this->sql->delete(self::_TABLE);
340
        $delete->where->equalTo('id', $capsule->id);
341
 
342
        return $this->executeDelete($delete);
343
    }
344
 
345
 
346
 
347
}