Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3454 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Mapper;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Db\ResultSet\HydratingResultSet;
9
use Laminas\Db\Sql\Expression;
10
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
11
use Laminas\Log\LoggerInterface;
12
use Laminas\Paginator\Paginator;
13
use Laminas\Paginator\Adapter\DbSelect;
14
use LeadersLinked\Model\CompetencyType;
15
use LeadersLinked\Mapper\Common\MapperCommon;
16
 
540 geraldo 17
class CompetencyTypeMapper extends MapperCommon {
1 www 18
 
19
    const _TABLE = 'tbl_competency_types';
20
 
21
    /**
22
     *
23
     * @var CompetencyTypeMapper
24
     */
25
    private static $_instance;
540 geraldo 26
 
1 www 27
    /**
28
     *
29
     * @param AdapterInterface $adapter
30
     */
540 geraldo 31
    private function __construct($adapter) {
1 www 32
        parent::__construct($adapter);
33
    }
540 geraldo 34
 
1 www 35
    /**
36
     *
37
     * @param AdapterInterface $adapter
38
     * @return CompetencyTypeMapper
39
     */
540 geraldo 40
    public static function getInstance($adapter) {
41
        if (self::$_instance == null) {
1 www 42
            self::$_instance = new CompetencyTypeMapper($adapter);
43
        }
44
        return self::$_instance;
45
    }
46
 
47
    /**
48
     *
49
     * @param int $id
50
     * @return CompetencyType
51
     */
540 geraldo 52
    public function fetchOne($id) {
1 www 53
        $select = $this->sql->select(self::_TABLE);
54
        $select->where->equalTo('id', $id);
55
        $select->limit(1);
540 geraldo 56
 
1 www 57
        $prototype = new CompetencyType();
58
        return $this->executeFetchOneObject($select, $prototype);
59
    }
540 geraldo 60
 
1 www 61
    /**
62
     *
169 efrain 63
     * @param int $company_id
64
     * @param int $competency_type_id_default
65
     * @return CompetencyType
66
     */
540 geraldo 67
    public function fetchOneByCompanyId($company_id, $competency_type_id_default) {
169 efrain 68
        $select = $this->sql->select(self::_TABLE);
69
        $select->where->equalTo('company_id', $company_id);
70
        $select->where->equalTo('competency_type_id_default', $competency_type_id_default);
71
        $select->limit(1);
540 geraldo 72
 
169 efrain 73
        $prototype = new CompetencyType();
74
        return $this->executeFetchOneObject($select, $prototype);
75
    }
540 geraldo 76
 
169 efrain 77
    /**
78
     *
79
     * @return CompetencyType[]
80
     */
540 geraldo 81
    public function fetchAllByDefault() {
169 efrain 82
        $select = $this->sql->select(self::_TABLE);
83
        $select->where->isNull('company_id');
540 geraldo 84
 
169 efrain 85
        $prototype = new CompetencyType();
86
        return $this->executeFetchAllObject($select, $prototype);
87
    }
540 geraldo 88
 
169 efrain 89
    /**
90
     *
1 www 91
     * @param string $uuid
92
     * @return CompetencyType
93
     */
540 geraldo 94
    public function fetchOneByUuid($uuid) {
1 www 95
        $select = $this->sql->select(self::_TABLE);
96
        $select->where->equalTo('uuid', $uuid);
97
        $select->limit(1);
540 geraldo 98
 
1 www 99
        $prototype = new CompetencyType();
100
        return $this->executeFetchOneObject($select, $prototype);
101
    }
540 geraldo 102
 
1 www 103
    /**
104
     *
105
     * @param string $search
106
     * @param int $page
107
     * @param int $records_per_page
108
     * @param string $order_field
109
     * @param string $order_direction
110
     * @return Paginator
111
     */
4632 efrain 112
    public function fetchAllDataTableDefault($search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC') {
1 www 113
        $prototype = new CompetencyType();
114
        $select = $this->sql->select(self::_TABLE);
192 efrain 115
        $select->where->isNull('company_id');
540 geraldo 116
 
117
        if ($search) {
1 www 118
            $select->where->like('name', '%' . $search . '%');
119
        }
120
        $select->order($order_field . ' ' . $order_direction);
540 geraldo 121
 
122
        $hydrator = new ObjectPropertyHydrator();
123
        $resultset = new HydratingResultSet($hydrator, $prototype);
124
 
1 www 125
        $adapter = new DbSelect($select, $this->sql, $resultset);
126
        $paginator = new Paginator($adapter);
127
        $paginator->setItemCountPerPage($records_per_page);
128
        $paginator->setCurrentPageNumber($page);
540 geraldo 129
 
130
 
1 www 131
        return $paginator;
132
    }
540 geraldo 133
 
1 www 134
    /**
135
     *
169 efrain 136
     * @param int $company_id
137
     * @param string $search
138
     * @param int $page
139
     * @param int $records_per_page
140
     * @param string $order_field
141
     * @param string $order_direction
142
     * @return Paginator
143
     */
540 geraldo 144
    public function fetchAllDataTableByCompanyId($company_id, $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC') {
169 efrain 145
        $prototype = new CompetencyType();
146
        $select = $this->sql->select(self::_TABLE);
147
        $select->where->equalTo('company_id', $company_id);
540 geraldo 148
 
149
 
150
        if ($search) {
169 efrain 151
            $select->where->NEST->like('name', '%' . $search . '%')->UNNEST;
152
        }
153
        $select->order($order_field . ' ' . $order_direction);
540 geraldo 154
 
155
        $hydrator = new ObjectPropertyHydrator();
156
        $resultset = new HydratingResultSet($hydrator, $prototype);
157
 
169 efrain 158
        $adapter = new DbSelect($select, $this->sql, $resultset);
159
        $paginator = new Paginator($adapter);
160
        $paginator->setItemCountPerPage($records_per_page);
161
        $paginator->setCurrentPageNumber($page);
540 geraldo 162
 
163
 
169 efrain 164
        return $paginator;
165
    }
540 geraldo 166
 
169 efrain 167
    /**
168
     *
1 www 169
     * @param CompetencyType $competencyType
170
     * @return boolean
171
     */
540 geraldo 172
    public function insert($competencyType) {
1 www 173
        $hydrator = new ObjectPropertyHydrator();
174
        $values = $hydrator->extract($competencyType);
540 geraldo 175
 
1 www 176
        $insert = $this->sql->insert(self::_TABLE);
177
        $insert->values($values);
540 geraldo 178
 
179
 
1 www 180
        $result = $this->executeInsert($insert);
540 geraldo 181
        if ($result) {
1 www 182
            $competencyType->id = $this->lastInsertId;
183
        }
540 geraldo 184
 
1 www 185
        return $result;
186
    }
540 geraldo 187
 
1 www 188
    /**
189
     *
190
     * @param CompetencyType $competencyType
191
     * @return boolean
192
     */
540 geraldo 193
    public function update($competencyType) {
1 www 194
        $hydrator = new ObjectPropertyHydrator();
195
        $values = $hydrator->extract($competencyType);
540 geraldo 196
 
1 www 197
        $update = $this->sql->update(self::_TABLE);
198
        $update->set($values);
199
        $update->where->equalTo('id', $competencyType->id);
540 geraldo 200
 
1 www 201
        return $this->executeUpdate($update);
202
    }
540 geraldo 203
 
1 www 204
    /**
205
     *
206
     * @param CompetencyType $competencyType
207
     * @return boolean
208
     */
540 geraldo 209
    public function delete($competencyType) {
1 www 210
        $delete = $this->sql->delete(self::_TABLE);
211
        $delete->where->equalTo('id', $competencyType->id);
540 geraldo 212
 
1 www 213
        return $this->executeDelete($delete);
214
    }
540 geraldo 215
 
1 www 216
    /**
217
     *
218
     * @return boolean
219
     */
540 geraldo 220
    public function truncate() {
1 www 221
        $sql = 'DELETE FROM ' . self::_TABLE;
540 geraldo 222
        if ($this->executeSentenceWithParameters($sql)) {
1 www 223
            $sql = 'ALTER TABLE ' . self::_TABLE . ' AUTO_INCREMENT = 1 ';
224
            return $this->executeSentenceWithParameters($sql);
225
        }
226
        return false;
227
    }
540 geraldo 228
 
1 www 229
    /**
230
     *
231
     * @return CompetencyType[]
232
     */
3454 efrain 233
    public function fetchAllActive() {
1 www 234
        $prototype = new CompetencyType();
235
        $select = $this->sql->select(self::_TABLE);
236
        $select->where->equalTo('status', CompetencyType::STATUS_ACTIVE);
237
        $select->order('name ASC');
540 geraldo 238
 
1 www 239
        return $this->executeFetchAllObject($select, $prototype);
240
    }
540 geraldo 241
 
192 efrain 242
    /**
243
     *
244
     * @return CompetencyType[]
245
     */
3454 efrain 246
    public function fetchAllActiveByDefault() {
192 efrain 247
        $prototype = new CompetencyType();
248
        $select = $this->sql->select(self::_TABLE);
249
        $select->where->equalTo('status', CompetencyType::STATUS_ACTIVE);
250
        $select->where->isNull('company_id');
251
        $select->order('name ASC');
540 geraldo 252
 
192 efrain 253
        return $this->executeFetchAllObject($select, $prototype);
254
    }
540 geraldo 255
 
192 efrain 256
    /**
257
     *
258
     * @return CompetencyType[]
259
     */
3454 efrain 260
    public function fetchAllActiveByCompanyId($company_id) {
192 efrain 261
        $prototype = new CompetencyType();
262
        $select = $this->sql->select(self::_TABLE);
263
        $select->where->equalTo('company_id', $company_id);
264
        $select->where->equalTo('status', CompetencyType::STATUS_ACTIVE);
265
        $select->order('name ASC');
540 geraldo 266
 
192 efrain 267
        return $this->executeFetchAllObject($select, $prototype);
268
    }
540 geraldo 269
 
192 efrain 270
    /**
271
     *
272
     * @return CompetencyType[]
273
     */
540 geraldo 274
    public function fetchAllByCompanyId($company_id) {
192 efrain 275
        $prototype = new CompetencyType();
276
        $select = $this->sql->select(self::_TABLE);
277
        $select->where->equalTo('company_id', $company_id);
278
        $select->order('name ASC');
540 geraldo 279
 
192 efrain 280
        return $this->executeFetchAllObject($select, $prototype);
281
    }
540 geraldo 282
 
283
}