Proyectos de Subversion LeadersLinked - Services

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
307 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\HabitGoal;
16
use LeadersLinked\Mapper\Common\MapperCommon;
17
 
18
 
19
class HabitGoalMapper extends MapperCommon
20
{
21
    const _TABLE = 'tbl_habits_goals';
22
 
23
 
24
    /**
25
     *
26
     * @var HabitGoalMapper
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
     * @param AdapterInterface $adapter
42
     * @return HabitGoalMapper
43
     */
44
    public static function getInstance($adapter)
45
    {
46
        if(self::$_instance == null) {
47
            self::$_instance = new HabitGoalMapper($adapter);
48
        }
49
        return self::$_instance;
50
    }
51
 
52
    /**
53
     *
54
     * @param int $id
55
     * @return HabitGoal
56
     */
57
    public function fetchOne($id)
58
    {
59
        $select = $this->sql->select(self::_TABLE);
60
        $select->where->equalTo('id', $id);
61
        $select->limit(1);
62
 
63
        $prototype = new HabitGoal();
64
        return $this->executeFetchOneObject($select, $prototype);
65
    }
66
 
67
    /**
68
     *
69
     * @param string $uuid
70
     * @return HabitGoal
71
     */
72
    public function fetchOneByUuid($uuid)
73
    {
74
        $select = $this->sql->select(self::_TABLE);
75
        $select->where->equalTo('uuid', $uuid);
76
        $select->limit(1);
77
 
78
        $prototype = new HabitGoal();
79
        return $this->executeFetchOneObject($select, $prototype);
80
    }
81
 
82
    /**
83
     *
84
     * @param string $uuid
85
     * @param string $network_id
86
     * @return HabitGoal
87
     */
88
    public function fetchOneByUuidAndNetworkId($uuid, $network_id)
89
    {
90
        $select = $this->sql->select(self::_TABLE);
91
        $select->where->equalTo('uuid', $uuid);
92
        $select->where->equalTo('network_id', $network_id);
93
        $select->limit(1);
94
 
95
        $prototype = new HabitGoal();
96
        return $this->executeFetchOneObject($select, $prototype);
97
    }
98
 
99
 
100
 
101
 
102
    /**
103
     *
104
     * @param int $user_id
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
     */
112
    public function fetchAllDataTable($user_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
113
    {
114
        $prototype = new HabitGoal();
115
        $select = $this->sql->select(self::_TABLE);
116
 
117
        if($search) {
118
            $select->where->like('name', '%' . $search . '%');
119
        }
120
        $select->order($order_field . ' ' . $order_direction);
121
 
122
       // echo $select->getSqlString($this->adapter->platform); exit;
123
 
124
        $hydrator   = new ObjectPropertyHydrator();
125
        $resultset  = new HydratingResultSet($hydrator, $prototype);
126
 
127
        $adapter = new DbSelect($select, $this->sql, $resultset);
128
        $paginator = new Paginator($adapter);
129
        $paginator->setItemCountPerPage($records_per_page);
130
        $paginator->setCurrentPageNumber($page);
131
 
132
 
133
        return $paginator;
134
    }
135
 
136
    /**
137
     *
138
     * @param HabitGoal $habitGoal
139
     * @return boolean
140
     */
141
    public function insert($habitGoal)
142
    {
143
        $hydrator = new ObjectPropertyHydrator();
144
        $values = $hydrator->extract($habitGoal);
145
        $values = $this->removeEmpty($values);
146
 
147
        $insert = $this->sql->insert(self::_TABLE);
148
        $insert->values($values);
149
 
150
 
151
        $result = $this->executeInsert($insert);
152
        if($result) {
153
            $habitGoal->id = $this->lastInsertId;
154
        }
155
 
156
        return $result;
157
 
158
    }
159
 
160
    /**
161
     *
162
     * @param HabitGoal $habitGoal
163
     * @return boolean
164
     */
165
    public function update($habitGoal)
166
    {
167
        $hydrator = new ObjectPropertyHydrator();
168
        $values = $hydrator->extract($habitGoal);
169
        $values = $this->removeEmpty($values);
170
 
171
        $update = $this->sql->update(self::_TABLE);
172
        $update->set($values);
173
        $update->where->equalTo('id', $habitGoal->id);
174
 
175
        return $this->executeUpdate($update);
176
    }
177
 
178
    /**
179
     *
180
     * @param HabitGoal $habitGoal
181
     * @return boolean
182
     */
183
    public function delete($habitGoal)
184
    {
185
        $delete = $this->sql->delete(self::_TABLE);
186
        $delete->where->equalTo('id', $habitGoal->id);
187
 
188
        return $this->executeDelete($delete);
189
 
190
    }
191
 
192
 
193
}