Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 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\CompanyMicrolearningSlide;
9
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
10
use Laminas\Db\Sql\Expression;
11
use Laminas\Paginator\Paginator;
12
use Laminas\Db\ResultSet\HydratingResultSet;
13
use Laminas\Paginator\Adapter\DbSelect;
14
 
15
 
16
class CompanyMicrolearningSlideMapper extends MapperCommon
17
{
18
    const _TABLE = 'tbl_company_microlearning_slides';
19
 
20
    /**
21
     *
22
     * @var CompanyMicrolearningSlideMapper
23
     */
24
    private static $_instance;
25
 
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 CompanyMicrolearningSlideMapper
39
     */
40
    public static function getInstance($adapter)
41
    {
42
        if(self::$_instance == null) {
43
            self::$_instance = new CompanyMicrolearningSlideMapper($adapter);
44
        }
45
        return self::$_instance;
46
    }
47
 
48
    /**
49
     *
50
     * @param int $company_id
51
     * @param int $topic_id
52
     * @param int $capsule_id
53
     * @return int
54
     */
55
    public function fetchTotalCountByCompanyIdAndTopicIdAndCapsuleId($company_id, $topic_id, $capsule_id)
56
    {
57
        $select = $this->sql->select();
58
        $select->columns(['total' => new Expression('COUNT(*)')]);
59
        $select->from(self::_TABLE);
60
        $select->where->equalTo('company_id', $company_id);
61
        $select->where->equalTo('topic_id', $topic_id);
62
        $select->where->equalTo('capsule_id', $capsule_id);
63
 
64
        $record = $this->executeFetchOneArray($select);
65
        return $record['total'];
66
    }
67
 
68
    /**
69
     *
70
     * @param int $company_id
71
     * @param int $topic_id
72
     * @return int
73
     */
74
    public function fetchTotalCountByCompanyIdAndTopicId($company_id, $topic_id)
75
    {
76
        $select = $this->sql->select();
77
        $select->columns(['total' => new Expression('COUNT(*)')]);
78
        $select->from(self::_TABLE);
79
        $select->where->equalTo('company_id', $company_id);
80
        $select->where->equalTo('topic_id', $topic_id);
81
 
82
 
83
        echo $select->getSqlString($this->adapter->platform) . PHP_EOL;
84
 
85
        $record = $this->executeFetchOneArray($select);
86
        return $record['total'];
87
    }
88
 
89
 
90
    /**
91
     *
92
     * @param int $company_id
93
     * @param int $quiz_id
94
     * @return int
95
     */
96
    public function fetchTotalCountByCompanyIdQuizId($company_id, $quiz_id)
97
    {
98
        $select = $this->sql->select();
99
        $select->columns(['total' => new Expression('COUNT(*)')]);
100
        $select->from(self::_TABLE);
101
        $select->where->equalTo('company_id', $company_id);
102
        $select->where->equalTo('quiz_id', $quiz_id);
103
 
104
        $record = $this->executeFetchOneArray($select);
105
        return $record['total'];
106
    }
107
 
108
 
109
    /**
110
     *
111
     * @param int $id
112
     * @return CompanyMicrolearningSlide
113
     */
114
    public function fetchOne($id)
115
    {
116
        $prototype = new CompanyMicrolearningSlide();
117
 
118
        $select = $this->sql->select(self::_TABLE);
119
        $select->where->equalTo('id', $id);
120
 
121
        return $this->executeFetchOneObject($select, $prototype);
122
    }
123
 
124
    /**
125
     *
126
     * @param int $uuid
127
     * @return CompanyMicrolearningSlide
128
     */
129
    public function fetchOneByUuid($uuid)
130
    {
131
        $prototype = new CompanyMicrolearningSlide;
132
        $select = $this->sql->select(self::_TABLE);
133
        $select->where->equalTo('uuid', $uuid);
134
 
135
        return $this->executeFetchOneObject($select, $prototype);
136
    }
137
 
138
    /**
139
     *
140
     * @param int $company_id
141
     * @param int $topic_id
142
     * @param int $capsule_id
143
     * @return CompanyMicrolearningSlide[]
144
     */
145
    public function fetchAllByCompanyIdAndTopicIdAndCapsuleId($company_id, $topic_id, $capsule_id)
146
    {
147
        $prototype = new CompanyMicrolearningSlide();
148
 
149
        $select = $this->sql->select(self::_TABLE);
150
        $select->where->equalTo('company_id', $company_id);
151
        $select->where->equalTo('topic_id', $topic_id);
152
        $select->where->equalTo('capsule_id', $capsule_id);
153
        $select->order(['order', 'name']);
154
 
155
        return $this->executeFetchAllObject($select, $prototype);
156
    }
157
 
158
    /**
159
     *
160
     * @param int $companyId
161
     * @param int $topicId
162
     * @param int $capsuleId
163
     * @param string $search
164
     * @param int $page
165
     * @param int $records_per_page
166
     * @param string $order_field
167
     * @param string $order_direction
168
     * @return Paginator
169
     *
170
     */
171
    public function fetchAllDataTableByCompanyIdAndTopicIdAndCapsuleId($companyId, $topicId, $capsuleId,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
172
    {
173
        $prototype = new CompanyMicrolearningSlide();
174
        $select = $this->sql->select(self::_TABLE);
175
        $select->where->equalTo('company_id', $companyId);
176
        $select->where->equalTo('topic_id', $topicId);
177
        $select->where->equalTo('capsule_id', $capsuleId);
178
 
179
        if($search) {
180
            $select->where->like('name', '%' . $search . '%');
181
        }
182
        $select->order($order_field . ' ' . $order_direction);
183
 
184
        //echo $select->getSqlString($this->adapter->platform); exit;
185
 
186
        $hydrator   = new ObjectPropertyHydrator();
187
        $resultset  = new HydratingResultSet($hydrator, $prototype);
188
 
189
        $adapter = new DbSelect($select, $this->sql, $resultset);
190
        $paginator = new Paginator($adapter);
191
        $paginator->setItemCountPerPage($records_per_page);
192
        $paginator->setCurrentPageNumber($page);
193
 
194
 
195
        return $paginator;
196
    }
197
 
198
 
199
    /**
200
     *
201
     * @param CompanyMicrolearningSlide $slide
202
     * @return boolean
203
     */
204
    public function insert($slide)
205
    {
206
        $hydrator = new ObjectPropertyHydrator();
207
        $values = $hydrator->extract($slide);
208
        $values = $this->removeEmpty($values);
209
 
210
        $insert = $this->sql->insert(self::_TABLE);
211
        $insert->values($values);
212
 
213
        $result = $this->executeInsert($insert);
214
        if($result) {
215
            $slide->id = $this->lastInsertId;
216
        }
217
        return $result;
218
    }
219
 
220
    /**
221
     *
222
     * @param CompanyMicrolearningSlide $slide
223
     * @return boolean
224
     */
225
    public function update($slide)
226
    {
227
 
228
        $hydrator = new ObjectPropertyHydrator();
229
        $values = $hydrator->extract($slide);
230
        $values = $this->removeEmpty($values);
231
 
232
        $update = $this->sql->update(self::_TABLE);
233
        $update->set($values);
234
        $update->where->equalTo('id', $slide->id);
235
 
236
 
237
        return $this->executeUpdate($update);
238
    }
239
 
240
    /**
241
     *
242
     * @param CompanyMicrolearningSlide $slide
243
     * @return boolean
244
     */
245
    public function delete($slide)
246
    {
247
        $delete = $this->sql->delete(self::_TABLE);
248
        $delete->where->equalTo('id', $slide->id);
249
 
250
        return $this->executeDelete($delete);
251
    }
252
 
253
 
254
 
255
}