Proyectos de Subversion LeadersLinked - Services

Rev

Rev 283 | Rev 603 | 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
    }
108
 
109
    /**
110
     *
111
     * @param int $company_id
112
     * @param int $company_id
113
     * @return MicrolearningCapsule[]
114
     */
115
    public function fetchAllActiveByCompanyId($company_id)
116
    {
117
        $prototype = new MicrolearningCapsule();
118
 
119
        $select = $this->sql->select(self::_TABLE);
120
        $select->where->equalTo('company_id', $company_id);
121
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
122
        $select->order(['order', 'name']);
123
 
124
        return $this->executeFetchAllObject($select, $prototype);
125
    }
126
 
127
    /**
128
     *
129
     * @param int $company_id
130
     * @return MicrolearningCapsule[]
131
     */
132
    public function fetchAllByCompanyId($company_id)
133
    {
134
        $prototype = new MicrolearningCapsule();
135
 
136
        $select = $this->sql->select(self::_TABLE);
137
        $select->where->equalTo('company_id', $company_id);
138
        $select->order(['order', 'name']);
139
 
140
        //echo $select->getSqlString($this->adapter->platform); exit;
141
 
142
        return $this->executeFetchAllObject($select, $prototype);
143
    }
144
 
145
    /**
146
     *
147
     * @param int[] $ids
148
     * @return MicrolearningCapsule[]
149
     */
150
    public function fetchAllByIds($ids)
151
    {
152
        $prototype = new MicrolearningCapsule();
153
 
154
 
155
        $select = $this->sql->select(self::_TABLE);
156
        $select->where->in('id', $ids);
157
        $select->order(['order', 'name']);
158
 
159
        //echo $select->getSqlString($this->adapter->platform); exit;
160
 
161
        return $this->executeFetchAllObject($select, $prototype);
162
    }
163
 
164
    /**
165
     *
166
     * @param int $company_id
167
     * @return int
168
     */
169
    public function fetchCountByCompanyId($company_id)
170
    {
171
 
172
 
173
        $select = $this->sql->select(self::_TABLE);
174
        $select->columns(['total' => new Expression('COUNT(*)')]);
175
        $select->where->equalTo('company_id', $company_id);
176
 
177
 
178
        $record = $this->executeFetchOneArray($select);
179
        return $record['total'];
180
 
181
    }
182
 
183
 
184
 
185
 
186
    /**
187
     *
188
 
189
     * @return MicrolearningCapsule[]
190
     */
191
    public function fetchAllActiveAndPublic()
192
    {
193
        $prototype = new MicrolearningCapsule();
194
 
195
        $select = $this->sql->select(self::_TABLE);
196
 
197
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
198
        $select->where->equalTo('privacy', MicrolearningCapsule::PRIVACY_PUBLIC);
199
        $select->where->equalTo('type', MicrolearningCapsule::TYPE_FREE);
200
 
201
        $select->order(['order', 'name']);
202
 
203
        return $this->executeFetchAllObject($select, $prototype);
204
    }
205
 
206
 
207
    /**
208
     *
209
 
210
     * @return MicrolearningCapsule[]
211
     */
212
    public function fetchAllActive()
213
    {
214
        $prototype = new MicrolearningCapsule();
215
 
216
        $select = $this->sql->select(self::_TABLE);
217
 
218
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
219
 
220
        $select->order(['order', 'name']);
221
 
222
        return $this->executeFetchAllObject($select, $prototype);
223
    }
224
 
225
 
226
    /**
227
     *
228
 
229
     * @return MicrolearningCapsule[]
230
     */
231
    public function fetchAll()
232
    {
233
        $prototype = new MicrolearningCapsule();
234
 
235
        $select = $this->sql->select(self::_TABLE);
236
        $select->order(['order', 'name']);
237
 
238
        return $this->executeFetchAllObject($select, $prototype);
239
    }
240
 
241
 
242
    /**
243
     *
244
     * @param int $companyId
245
     * @param string $search
246
     * @param int $page
247
     * @param int $records_per_page
248
     * @param string $order_field
249
     * @param string $order_direction
250
     * @return Paginator
251
     */
252
    public function fetchAllDataTableByCompanyId($companyId,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
253
    {
254
        $prototype = new MicrolearningCapsule();
255
        $select = $this->sql->select(self::_TABLE);
256
        $select->where->equalTo('company_id', $companyId);
257
 
258
 
259
        if($search) {
260
            $select->where->like('name', '%' . $search . '%');
261
        }
262
        $select->order($order_field . ' ' . $order_direction);
263
 
264
        //echo $select->getSqlString($this->adapter->platform); exit;
265
 
266
        $hydrator   = new ObjectPropertyHydrator();
267
        $resultset  = new HydratingResultSet($hydrator, $prototype);
268
 
269
        $adapter = new DbSelect($select, $this->sql, $resultset);
270
        $paginator = new Paginator($adapter);
271
        $paginator->setItemCountPerPage($records_per_page);
272
        $paginator->setCurrentPageNumber($page);
273
 
274
 
275
        return $paginator;
276
    }
277
 
278
 
279
    /**
280
     *
281
     * @param MicrolearningCapsule $capsule
282
     * @return boolean
283
     */
284
    public function insert($capsule)
285
    {
286
        $hydrator = new ObjectPropertyHydrator();
287
        $values = $hydrator->extract($capsule);
288
        $values = $this->removeEmpty($values);
289
 
290
 
291
        $insert = $this->sql->insert(self::_TABLE);
292
        $insert->values($values);
293
 
294
        $result = $this->executeInsert($insert);
295
        if($result) {
296
            $capsule->id = $this->lastInsertId;
297
        }
298
        return $result;
299
    }
300
 
301
    /**
302
     *
303
     * @param MicrolearningCapsule $capsule
304
     * @return boolean
305
     */
306
    public function update($capsule)
307
    {
308
        $hydrator = new ObjectPropertyHydrator();
309
        $values = $hydrator->extract($capsule);
310
        $values = $this->removeEmpty($values);
311
 
312
        $update = $this->sql->update(self::_TABLE);
313
        $update->set($values);
314
        $update->where->equalTo('id', $capsule->id);
315
 
316
        return $this->executeUpdate($update);
317
    }
318
 
319
    /**
320
     *
321
     * @param MicrolearningCapsule $capsule
322
     * @return boolean
323
     */
324
    public function delete($capsule)
325
    {
326
        $delete = $this->sql->delete(self::_TABLE);
327
        $delete->where->equalTo('id', $capsule->id);
328
 
329
        return $this->executeDelete($delete);
330
    }
331
 
332
 
333
 
334
}