Proyectos de Subversion LeadersLinked - Services

Rev

Rev 621 | | 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';
626 stevensc 19
 
283 www 20
    /**
21
     *
22
     * @var MicrolearningCapsuleMapper
23
     */
24
    private static $_instance;
626 stevensc 25
 
283 www 26
    /**
27
     *
28
     * @param AdapterInterface $adapter
29
     */
30
    private function __construct($adapter)
31
    {
32
        parent::__construct($adapter);
33
    }
34
 
35
    /**
36
     *
37
     * @param AdapterInterface $adapter
38
     * @return MicrolearningCapsuleMapper
39
     */
40
    public static function getInstance($adapter)
41
    {
42
        if(self::$_instance == null) {
43
            self::$_instance = new MicrolearningCapsuleMapper($adapter);
44
        }
45
        return self::$_instance;
46
    }
47
 
48
    /**
49
     *
50
     * @param int $company_id
51
     * @return int
52
     */
53
    public function fetchTotalCountByCompanyId($company_id)
54
    {
55
        $select = $this->sql->select();
56
        $select->columns(['total' => new Expression('COUNT(*)')]);
57
        $select->from(self::_TABLE);
58
        $select->where->equalTo('company_id', $company_id);
59
 
60
        $record = $this->executeFetchOneArray($select);
61
        return $record['total'];
62
    }
63
 
64
    /**
65
     *
66
     * @param int $company_id
67
     * @return int
68
     */
626 stevensc 69
    public function fetchTotalCountAllByCompanyId($company_id)
283 www 70
    {
71
        $select = $this->sql->select();
72
        $select->columns(['total' => new Expression('COUNT(*)')]);
73
        $select->from(self::_TABLE);
74
        $select->where->equalTo('company_id', $company_id);
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
 
123
    /**
124
     *
125
     * @param int $company_id
126
     * @return MicrolearningCapsule[]
127
     */
128
    public function fetchAllByCompanyId($company_id)
129
    {
130
        $prototype = new MicrolearningCapsule();
131
 
132
        $select = $this->sql->select(self::_TABLE);
133
        $select->where->equalTo('company_id', $company_id);
619 stevensc 134
        $select->order(['name']);
283 www 135
 
136
        return $this->executeFetchAllObject($select, $prototype);
137
    }
138
 
139
    /**
140
     *
141
     * @param int[] $ids
142
     * @return MicrolearningCapsule[]
143
     */
144
    public function fetchAllByIds($ids)
145
    {
146
        $prototype = new MicrolearningCapsule();
147
 
148
 
149
        $select = $this->sql->select(self::_TABLE);
150
        $select->where->in('id', $ids);
151
        $select->order(['order', 'name']);
152
 
153
        //echo $select->getSqlString($this->adapter->platform); exit;
154
 
155
        return $this->executeFetchAllObject($select, $prototype);
156
    }
157
 
158
    /**
159
     *
160
     * @param int $company_id
161
     * @return int
162
     */
163
    public function fetchCountByCompanyId($company_id)
164
    {
165
 
166
 
167
        $select = $this->sql->select(self::_TABLE);
168
        $select->columns(['total' => new Expression('COUNT(*)')]);
169
        $select->where->equalTo('company_id', $company_id);
170
 
171
 
172
        $record = $this->executeFetchOneArray($select);
173
        return $record['total'];
174
 
175
    }
176
 
177
    /**
178
     *
179
 
180
     * @return MicrolearningCapsule[]
181
     */
182
    public function fetchAll()
183
    {
184
        $prototype = new MicrolearningCapsule();
185
 
186
        $select = $this->sql->select(self::_TABLE);
603 stevensc 187
        $select->order(['name']);
283 www 188
 
189
        return $this->executeFetchAllObject($select, $prototype);
190
    }
191
 
192
    /**
193
     *
194
     * @param int $companyId
195
     * @param string $search
196
     * @param int $page
197
     * @param int $records_per_page
198
     * @param string $order_field
199
     * @param string $order_direction
200
     * @return Paginator
201
     */
202
    public function fetchAllDataTableByCompanyId($companyId,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
203
    {
204
        $prototype = new MicrolearningCapsule();
205
        $select = $this->sql->select(self::_TABLE);
206
        $select->where->equalTo('company_id', $companyId);
207
 
208
 
209
        if($search) {
210
            $select->where->like('name', '%' . $search . '%');
211
        }
212
        $select->order($order_field . ' ' . $order_direction);
213
 
214
        //echo $select->getSqlString($this->adapter->platform); exit;
215
 
216
        $hydrator   = new ObjectPropertyHydrator();
217
        $resultset  = new HydratingResultSet($hydrator, $prototype);
218
 
219
        $adapter = new DbSelect($select, $this->sql, $resultset);
220
        $paginator = new Paginator($adapter);
221
        $paginator->setItemCountPerPage($records_per_page);
222
        $paginator->setCurrentPageNumber($page);
223
 
224
 
225
        return $paginator;
226
    }
626 stevensc 227
 
283 www 228
    /**
229
     *
230
     * @param MicrolearningCapsule $capsule
231
     * @return boolean
232
     */
233
    public function insert($capsule)
234
    {
235
        $hydrator = new ObjectPropertyHydrator();
236
        $values = $hydrator->extract($capsule);
237
        $values = $this->removeEmpty($values);
238
 
239
 
240
        $insert = $this->sql->insert(self::_TABLE);
241
        $insert->values($values);
242
 
243
        $result = $this->executeInsert($insert);
244
        if($result) {
245
            $capsule->id = $this->lastInsertId;
246
        }
247
        return $result;
248
    }
249
 
250
    /**
251
     *
252
     * @param MicrolearningCapsule $capsule
253
     * @return boolean
254
     */
255
    public function update($capsule)
256
    {
257
        $hydrator = new ObjectPropertyHydrator();
258
        $values = $hydrator->extract($capsule);
259
        $values = $this->removeEmpty($values);
260
 
261
        $update = $this->sql->update(self::_TABLE);
262
        $update->set($values);
263
        $update->where->equalTo('id', $capsule->id);
264
 
265
        return $this->executeUpdate($update);
266
    }
267
 
268
    /**
269
     *
270
     * @param MicrolearningCapsule $capsule
271
     * @return boolean
272
     */
273
    public function delete($capsule)
274
    {
275
        $delete = $this->sql->delete(self::_TABLE);
276
        $delete->where->equalTo('id', $capsule->id);
277
 
278
        return $this->executeDelete($delete);
279
    }
280
}