Proyectos de Subversion LeadersLinked - Services

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
323 www 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Mapper;
6
 
7
 
8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Db\ResultSet\HydratingResultSet;
10
use Laminas\Paginator\Adapter\DbSelect;
11
use Laminas\Paginator\Paginator;
12
 
13
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
14
 
15
use LeadersLinked\Model\HabitSkillRegister;
16
use LeadersLinked\Mapper\Common\MapperCommon;
17
 
18
 
19
class HabitSkillRegisterMapper extends MapperCommon
20
{
21
    const _TABLE = 'tbl_habits_skills_registers';
22
 
23
 
24
    /**
25
     *
26
     * @var HabitSkillRegisterMapper
27
     */
28
    private static $_instance;
29
 
30
    /**
31
     *
32
     * @param AdapterInterface $adapter
33
     */
34
    private function __construct($adapter)
35
    {
36
        parent::__construct($adapter);
37
    }
38
 
39
 
40
    /**
41
     *
42
     * @param AdapterInterface $adapter
43
     * @return HabitSkillRegisterMapper
44
     */
45
    public static function getInstance($adapter)
46
    {
47
        if(self::$_instance == null) {
48
            self::$_instance = new HabitSkillRegisterMapper($adapter);
49
        }
50
        return self::$_instance;
51
    }
52
 
53
    /**
54
     *
55
     * @param int $id
56
     * @return HabitSkillRegister
57
     */
58
    public function fetchOne($id)
59
    {
60
        $select = $this->sql->select(self::_TABLE);
61
        $select->where->equalTo('id', $id);
62
        $select->limit(1);
63
 
64
        $prototype = new HabitSkillRegister();
65
        return $this->executeFetchOneObject($select, $prototype);
66
    }
67
 
68
    /**
69
     *
70
     * @param string $uuid
71
     * @return HabitSkillRegister
72
     */
73
    public function fetchOneByUuid($uuid)
74
    {
75
        $select = $this->sql->select(self::_TABLE);
76
        $select->where->equalTo('uuid', $uuid);
77
        $select->limit(1);
78
 
79
        $prototype = new HabitSkillRegister();
80
        return $this->executeFetchOneObject($select, $prototype);
81
    }
82
 
83
    /**
84
     *
85
     * @param string $uuid
86
     * @param string $network_id
87
     * @return HabitSkillRegister
88
     */
89
    public function fetchOneByUuidAndNetworkId($uuid, $network_id)
90
    {
91
        $select = $this->sql->select(self::_TABLE);
92
        $select->where->equalTo('uuid', $uuid);
93
        $select->where->equalTo('network_id', $network_id);
94
        $select->limit(1);
95
 
96
 
97
 
98
        $prototype = new HabitSkillRegister();
99
        return $this->executeFetchOneObject($select, $prototype);
100
    }
101
 
102
    /**
103
     *
104
     * @param int $user_id
105
     * @return HabitSkillRegister[]
106
     */
107
    public function fetchAllByUserId($user_id)
108
    {
109
 
110
        $prototype = new HabitSkillRegister();
111
 
112
 
113
        $select = $this->sql->select(self::_TABLE);
114
        $select->where->equalTo('user_id', $user_id);
115
        $select->order('date desc');
116
 
117
        return $this->executeFetchAllObject($select, $prototype);
118
    }
119
 
120
    /**
121
     *
122
     * @param int $user_id
123
     * @param int $skill_id
124
     * @return HabitSkillRegister[]
125
     */
126
    public function fetchAllByUserIdAndHabitId($user_id, $skill_id)
127
    {
128
 
129
        $prototype = new HabitSkillRegister();
130
 
131
 
132
        $select = $this->sql->select(self::_TABLE);
133
        $select->where->equalTo('user_id', $user_id);
134
        $select->where->equalTo('skill_id', $skill_id);
135
        $select->order('date desc');
136
 
137
        return $this->executeFetchAllObject($select, $prototype);
138
    }
139
 
140
 
141
 
142
 
143
 
144
    /**
145
     *
146
     * @param int $user_id
147
     * @param int $skill_id
148
     * @param string $search
149
     * @param int $page
150
     * @param int $records_per_page
151
     * @param string $order_field
152
     * @param string $order_direction
153
     * @return Paginator
154
     */
155
    public function fetchAllDataTable($user_id, $skill_id, $search, $page = 1, $records_per_page = 10, $order_field= 'date', $order_direction = 'DESC')
156
    {
157
        $prototype = new HabitSkillRegister();
158
        $select = $this->sql->select(self::_TABLE);
159
 
160
        if($search) {
161
            $select->where->like('qualitative_description', '%' . $search . '%');
162
        }
163
        $select->where->equalTo('user_id', $user_id);
164
        $select->where->equalTo('skill_id', $skill_id);
165
        $select->order($order_field . ' ' . $order_direction);
166
 
167
       // echo $select->getSqlString($this->adapter->platform); exit;
168
 
169
        $hydrator   = new ObjectPropertyHydrator();
170
        $resultset  = new HydratingResultSet($hydrator, $prototype);
171
 
172
        $adapter = new DbSelect($select, $this->sql, $resultset);
173
        $paginator = new Paginator($adapter);
174
        $paginator->setItemCountPerPage($records_per_page);
175
        $paginator->setCurrentPageNumber($page);
176
 
177
 
178
        return $paginator;
179
    }
180
 
181
    /**
182
     *
183
     * @param HabitSkillRegister $habitSkillRegister
184
     * @return boolean
185
     */
186
    public function insert($habitSkillRegister)
187
    {
188
        $hydrator = new ObjectPropertyHydrator();
189
        $values = $hydrator->extract($habitSkillRegister);
190
        $values = $this->removeEmpty($values);
191
 
192
        $values['qualitative_description']  = empty($values['qualitative_description']) ? '' : $values['qualitative_description'];
193
        $values['quantitative_value']       = empty($values['quantitative_value']) ? 0 : $values['quantitative_value'];
194
 
195
 
196
        $insert = $this->sql->insert(self::_TABLE);
197
        $insert->values($values);
198
 
199
 
200
        $result = $this->executeInsert($insert);
201
        if($result) {
202
            $habitSkillRegister->id = $this->lastInsertId;
203
        }
204
 
205
        return $result;
206
 
207
    }
208
 
209
    /**
210
     *
211
     * @param HabitSkillRegister $habitSkillRegister
212
     * @return boolean
213
     */
214
    public function update($habitSkillRegister)
215
    {
216
        $hydrator = new ObjectPropertyHydrator();
217
        $values = $hydrator->extract($habitSkillRegister);
218
        $values = $this->removeEmpty($values);
219
 
220
        $values['qualitative_description']  = empty($values['qualitative_description']) ? '' : $values['qualitative_description'];
221
        $values['quantitative_value']       = empty($values['quantitative_value']) ? 0 : $values['quantitative_value'];
222
 
223
 
224
        $update = $this->sql->update(self::_TABLE);
225
        $update->set($values);
226
        $update->where->equalTo('id', $habitSkillRegister->id);
227
 
228
        return $this->executeUpdate($update);
229
    }
230
 
231
    /**
232
     *
233
     * @param HabitSkillRegister $habitSkillRegister
234
     * @return boolean
235
     */
236
    public function delete($habitSkillRegister)
237
    {
238
        $delete = $this->sql->delete(self::_TABLE);
239
        $delete->where->equalTo('id', $habitSkillRegister->id);
240
 
241
        return $this->executeDelete($delete);
242
 
243
    }
244
 
245
 
246
}