Proyectos de Subversion LeadersLinked - Services

Rev

Rev 352 | Rev 358 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
352 ariadna 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\HabitSkill;
16
use LeadersLinked\Mapper\Common\MapperCommon;
17
 
18
 
19
class HabitReportMapper extends MapperCommon
20
{
21
    const _TABLE_A = 'tbl_habits_skills';
22
    const _TABLE_B = 'tbl_habits_user_logs_categories';
23
    const _TABLE_C = 'tbl_habits_user_logs_content';
24
 
25
 
26
    /**
27
     *
28
     * @var HabitReportMapper
29
     */
30
    private static $_instance;
31
 
32
    /**
33
     *
34
     * @param AdapterInterface $adapter
35
     */
36
    private function __construct($adapter)
37
    {
38
        parent::__construct($adapter);
39
    }
40
 
41
    /**
42
     *
43
     * @param AdapterInterface $adapter
44
     * @return HabitReportMapper
45
     */
46
    public static function getInstance($adapter)
47
    {
48
        if (self::$_instance == null) {
49
            self::$_instance = new HabitReportMapper($adapter);
50
        }
51
        return self::$_instance;
52
    }
53
 
54
    /**
55
     *
56
     * @param int $id
57
     */
58
    public function fetchFiveteen($id)
59
    {
60
        $select = $this->sql->select(self::_TABLE_C);
357 ariadna 61
        $select->where->equalTo('user_id', $id);
352 ariadna 62
        $select->order('created_at DESC');
63
        $select->limit(15);
64
 
65
        return $select;
66
    }
67
 
68
    /**
69
     *
70
     * @param string $uuid
71
     */
72
    public function fetchFiveteenByUuid($uuid)
73
    {
74
        $select = $this->sql->select(self::_TABLE_C);
75
        $select->where->equalTo('uuid', $uuid);
76
        $select->order('created_at DESC');
77
        $select->limit(1);
78
 
79
        return $select;
80
    }
81
 
82
    /**
83
     *
84
     * @param string $uuid
85
     * @param string $network_id
86
     * @return HabitSkill
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
 
96
 
97
        $prototype = new HabitSkill();
98
        return $this->executeFetchOneObject($select, $prototype);
99
    }
100
 
101
    /**
102
     *
103
     * @param int $user_id
104
     * @return HabitSkill[]
105
     */
106
    public function fetchAllByUserId($user_id)
107
    {
108
 
109
        $prototype = new HabitSkill();
110
 
111
 
112
        $select = $this->sql->select(self::_TABLE);
113
        $select->where->equalTo('user_id', $user_id);
114
        $select->order('name');
115
 
116
        return $this->executeFetchAllObject($select, $prototype);
117
    }
118
 
119
    /**
120
     *
121
     * @param int[] $company_ids
122
     * @param string $search
123
     * @return HabitSkill[]
124
     */
125
    public function searchAllTemplateByCompayIds($company_ids, $search)
126
    {
127
        $prototype = new HabitSkill();
128
 
129
 
130
        $select = $this->sql->select(self::_TABLE);
131
        $select->where->in('company_id', $company_ids);
132
        $select->where->like('name', '%' . $search . '%');
133
        $select->where->equalTo('template', HabitSkill::TEMPLATE_YES);
134
 
135
        return $this->executeFetchAllObject($select, $prototype);
136
    }
137
 
138
 
139
 
140
    /**
141
     *
142
     * @param int[] $company_ids
143
     * @return HabitSkill[]
144
     */
145
    public function fetchAllTemplateByCompayIds($company_ids)
146
    {
147
        $prototype = new HabitSkill();
148
 
149
 
150
        $select = $this->sql->select(self::_TABLE);
151
        $select->where->in('company_id', $company_ids);
152
        $select->where->equalTo('template', HabitSkill::TEMPLATE_YES);
153
 
154
        return $this->executeFetchAllObject($select, $prototype);
155
    }
156
 
157
    /**
158
     *
159
     * @param int $company_id
160
     * @param string $search
161
     * @param int $page
162
     * @param int $records_per_page
163
     * @param string $order_field
164
     * @param string $order_direction
165
     * @return Paginator
166
     */
167
    public function fetchAllDataTableTemplates($company_id, $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
168
    {
169
        $prototype = new HabitSkill();
170
        $select = $this->sql->select(self::_TABLE);
171
 
172
        if ($search) {
173
            $select->where->like('name', '%' . $search . '%');
174
        }
175
        $select->where->equalTo('company_id', $company_id);
176
        $select->order($order_field . ' ' . $order_direction);
177
 
178
 
179
 
180
        // echo $select->getSqlString($this->adapter->platform); exit;
181
 
182
        $hydrator   = new ObjectPropertyHydrator();
183
        $resultset  = new HydratingResultSet($hydrator, $prototype);
184
 
185
        $adapter = new DbSelect($select, $this->sql, $resultset);
186
        $paginator = new Paginator($adapter);
187
        $paginator->setItemCountPerPage($records_per_page);
188
        $paginator->setCurrentPageNumber($page);
189
 
190
 
191
        return $paginator;
192
    }
193
 
194
 
195
 
196
    /**
197
     *
198
     * @param int $user_id
199
     * @param string $search
200
     * @param int $page
201
     * @param int $records_per_page
202
     * @param string $order_field
203
     * @param string $order_direction
204
     * @return Paginator
205
     */
206
    public function fetchAllDataTable($user_id, $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
207
    {
208
        $prototype = new HabitSkill();
209
        $select = $this->sql->select(self::_TABLE);
210
 
211
        if ($search) {
212
            $select->where->like('name', '%' . $search . '%');
213
        }
214
        $select->where->equalTo('user_id', $user_id);
215
        $select->order($order_field . ' ' . $order_direction);
216
 
217
        // echo $select->getSqlString($this->adapter->platform); exit;
218
 
219
        $hydrator   = new ObjectPropertyHydrator();
220
        $resultset  = new HydratingResultSet($hydrator, $prototype);
221
 
222
        $adapter = new DbSelect($select, $this->sql, $resultset);
223
        $paginator = new Paginator($adapter);
224
        $paginator->setItemCountPerPage($records_per_page);
225
        $paginator->setCurrentPageNumber($page);
226
 
227
 
228
        return $paginator;
229
    }
230
}