Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4113 | Ir a la última revisión | | Ultima modificación | Ver Log |

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