Proyectos de Subversion LeadersLinked - Services

Rev

Rev 558 | 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
    }
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);
603 stevensc 122
        $select->order(['name']);
283 www 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
        $select->where->equalTo('status', MicrolearningCapsule::STATUS_ACTIVE);
603 stevensc 218
        $select->order(['name']);
283 www 219
 
220
        return $this->executeFetchAllObject($select, $prototype);
221
    }
222
 
223
 
224
    /**
225
     *
226
 
227
     * @return MicrolearningCapsule[]
228
     */
229
    public function fetchAll()
230
    {
231
        $prototype = new MicrolearningCapsule();
232
 
233
        $select = $this->sql->select(self::_TABLE);
603 stevensc 234
        $select->order(['name']);
283 www 235
 
236
        return $this->executeFetchAllObject($select, $prototype);
237
    }
238
 
239
 
240
    /**
241
     *
242
     * @param int $companyId
243
     * @param string $search
244
     * @param int $page
245
     * @param int $records_per_page
246
     * @param string $order_field
247
     * @param string $order_direction
248
     * @return Paginator
249
     */
250
    public function fetchAllDataTableByCompanyId($companyId,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
251
    {
252
        $prototype = new MicrolearningCapsule();
253
        $select = $this->sql->select(self::_TABLE);
254
        $select->where->equalTo('company_id', $companyId);
255
 
256
 
257
        if($search) {
258
            $select->where->like('name', '%' . $search . '%');
259
        }
260
        $select->order($order_field . ' ' . $order_direction);
261
 
262
        //echo $select->getSqlString($this->adapter->platform); exit;
263
 
264
        $hydrator   = new ObjectPropertyHydrator();
265
        $resultset  = new HydratingResultSet($hydrator, $prototype);
266
 
267
        $adapter = new DbSelect($select, $this->sql, $resultset);
268
        $paginator = new Paginator($adapter);
269
        $paginator->setItemCountPerPage($records_per_page);
270
        $paginator->setCurrentPageNumber($page);
271
 
272
 
273
        return $paginator;
274
    }
275
 
276
 
277
    /**
278
     *
279
     * @param MicrolearningCapsule $capsule
280
     * @return boolean
281
     */
282
    public function insert($capsule)
283
    {
284
        $hydrator = new ObjectPropertyHydrator();
285
        $values = $hydrator->extract($capsule);
286
        $values = $this->removeEmpty($values);
287
 
288
 
289
        $insert = $this->sql->insert(self::_TABLE);
290
        $insert->values($values);
291
 
292
        $result = $this->executeInsert($insert);
293
        if($result) {
294
            $capsule->id = $this->lastInsertId;
295
        }
296
        return $result;
297
    }
298
 
299
    /**
300
     *
301
     * @param MicrolearningCapsule $capsule
302
     * @return boolean
303
     */
304
    public function update($capsule)
305
    {
306
        $hydrator = new ObjectPropertyHydrator();
307
        $values = $hydrator->extract($capsule);
308
        $values = $this->removeEmpty($values);
309
 
310
        $update = $this->sql->update(self::_TABLE);
311
        $update->set($values);
312
        $update->where->equalTo('id', $capsule->id);
313
 
314
        return $this->executeUpdate($update);
315
    }
316
 
317
    /**
318
     *
319
     * @param MicrolearningCapsule $capsule
320
     * @return boolean
321
     */
322
    public function delete($capsule)
323
    {
324
        $delete = $this->sql->delete(self::_TABLE);
325
        $delete->where->equalTo('id', $capsule->id);
326
 
327
        return $this->executeDelete($delete);
328
    }
329
 
330
 
331
 
332
}