Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1410 eleazar 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Mapper;
5
 
6
use LeadersLinked\Mapper\Common\MapperCommon;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Model\User;
9
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
10
use Laminas\Paginator\Paginator;
11
use Laminas\Db\ResultSet\HydratingResultSet;
12
use Laminas\Paginator\Adapter\DbSelect;
13
use LeadersLinked\Model\SurveyTest;
1979 efrain 14
use LeadersLinked\Model\SurveyForm;
7328 efrain 15
use LeadersLinked\Model\SurveyCampaign;
1410 eleazar 16
 
17
 
18
class SurveyTestMapper extends MapperCommon
19
{
7328 efrain 20
    const _TABLE = 'tbl_survey_tests';
1410 eleazar 21
 
22
    /**
23
     *
24
     * @var SurveyTestMapper
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 SurveyTestMapper
41
     */
42
    public static function getInstance($adapter)
43
    {
44
        if(self::$_instance == null) {
45
            self::$_instance = new SurveyTestMapper($adapter);
46
        }
47
        return self::$_instance;
48
    }
49
 
50
    /**
51
     *
52
     * @param int $id
1485 eleazar 53
     * @return SurveyTest
1410 eleazar 54
     */
55
    public function fetchOne($id)
56
    {
1485 eleazar 57
        $prototype = new SurveyTest();
1410 eleazar 58
 
59
        $select = $this->sql->select(self::_TABLE);
60
        $select->where->equalTo('id', $id);
61
 
62
        return $this->executeFetchOneObject($select, $prototype);
63
    }
64
 
65
 
66
    /**
67
     *
68
     * @param int $uuid
1485 eleazar 69
     * @return SurveyTest
1410 eleazar 70
     */
71
    public function fetchOneByUuid($uuid)
72
    {
1485 eleazar 73
        $prototype = new SurveyTest();
1410 eleazar 74
        $select = $this->sql->select(self::_TABLE);
75
        $select->where->equalTo('uuid', $uuid);
76
 
77
        return $this->executeFetchOneObject($select, $prototype);
78
    }
79
 
80
 
81
    /**
82
     *
83
     * @param int $user_id
84
     * @return User
85
     */
86
    public function fetchAllByUserId($user_id)
87
    {
88
        $prototype = new User();
89
 
90
        $select = $this->sql->select(self::_TABLE);
91
        $select->where->equalTo('user_id', $user_id);
92
        $select->order('id');
93
 
94
        return $this->executeFetchAllObject($select, $prototype);
95
    }
96
 
97
     /**
98
     *
99
     * @param int $survey_id
7328 efrain 100
     * @return SurveyTest[]
1410 eleazar 101
     */
7328 efrain 102
    public function fetchAllCompletedByCompanyIdAndCampaignId($company_id, $campaign_id)
1410 eleazar 103
    {
1489 eleazar 104
        $prototype = new SurveyTest();
1410 eleazar 105
 
106
        $select = $this->sql->select(self::_TABLE);
7328 efrain 107
        $select->where->equalTo('company_id', $company_id);
108
        $select->where->equalTo('campaign_id', $campaign_id);
109
        $select->where->equalTo('status', SurveyTest::STATUS_COMPLETED);
1410 eleazar 110
        $select->order('id');
111
 
112
        return $this->executeFetchAllObject($select, $prototype);
113
    }
7328 efrain 114
 
1410 eleazar 115
 
116
    /**
117
     *
118
     * @param $record
119
     * @return boolean
120
     */
121
    public function insert($record)
122
    {
123
        $hydrator = new ObjectPropertyHydrator();
124
        $values = $hydrator->extract($record);
125
        $values = $this->removeEmpty($values);
126
 
127
        $insert = $this->sql->insert(self::_TABLE);
128
        $insert->values($values);
129
 
1487 eleazar 130
       // echo $insert->getSqlString($this->adapter->platform); exit;
1410 eleazar 131
 
132
        $result = $this->executeInsert($insert);
133
        if($result) {
134
            $record->id = $this->lastInsertId;
135
        }
136
        return $result;
137
    }
138
 
139
    /**
140
     *
141
     * @param SurveyForm $form
142
     * @return boolean
143
     */
144
    public function update($form)
145
    {
146
        $hydrator = new ObjectPropertyHydrator();
147
        $values = $hydrator->extract($form);
148
        $values = $this->removeEmpty($values);
149
 
150
        $update = $this->sql->update(self::_TABLE);
151
        $update->set($values);
152
        $update->where->equalTo('id', $form->id);
153
 
154
        return $this->executeUpdate($update);
155
    }
156
 
157
    /**
158
     *
159
     * @param int $form_id
160
     * @return boolean
161
     */
162
    public function delete($form_id)
163
    {
164
        $delete = $this->sql->delete(self::_TABLE);
165
        $delete->where->equalTo('id', $form_id);
166
 
167
        return $this->executeDelete($delete);
168
    }
169
 
1443 eleazar 170
 
171
    /**
172
     *
7328 efrain 173
     * @param int $user_id
1443 eleazar 174
     * @param string $search
175
     * @param int $page
176
     * @param int $records_per_page
177
     * @param string $order_field
178
     * @param string $order_direction
179
     * @return Paginator
180
     */
7328 efrain 181
    public function fetchAllOrganizationalClimateDataTableByUserId($user_id, $search, $page = 1, $records_per_page = 10, $order_field= 'first_name', $order_direction = 'ASC')
1443 eleazar 182
    {
7328 efrain 183
        $select = $this->sql->select();
184
        $select->columns(['uuid', 'status']);
185
        $select->from(['t' => self::_TABLE]);
186
        $select->join(['c' => SurveyCampaignMapper::_TABLE], 't.campaign_id = c.id', ['name', 'start_date', 'end_date']);
187
        $select->where->equalTo('c.type', SurveyCampaign::TYPE_ORGANIZATIONAL_CLIMATE);
188
        $select->where->equalTo('t.user_id', $user_id);
1443 eleazar 189
 
190
        if($search) {
7340 efrain 191
            //$select->where->like('c.name', '%' . $search . '%');
192
 
193
            $select->where->nest()
194
            ->like('c.name', '%' . $search . '%')
195
            ->or->like('t.uuid', '%' . $search . '%')
196
            ->unnest();
1443 eleazar 197
        }
198
        $select->order($order_field . ' ' . $order_direction);
199
 
1532 eleazar 200
        //echo $select->getSqlString($this->adapter->platform); exit;
7328 efrain 201
 
1443 eleazar 202
 
7328 efrain 203
        $adapter = new DbSelect($select, $this->sql);
204
        $paginator = new Paginator($adapter);
205
        $paginator->setItemCountPerPage($records_per_page);
206
        $paginator->setCurrentPageNumber($page);
1443 eleazar 207
 
7328 efrain 208
 
209
        return $paginator;
210
    }
211
 
212
    /**
213
     *
214
     * @param int $user_id
215
     * @param string $search
216
     * @param int $page
217
     * @param int $records_per_page
218
     * @param string $order_field
219
     * @param string $order_direction
220
     * @return Paginator
221
     */
222
    public function fetchAllNormalDataTableByUserId($user_id, $search, $page = 1, $records_per_page = 10, $order_field= 'first_name', $order_direction = 'ASC')
223
    {
224
        $select = $this->sql->select();
225
        $select->columns(['uuid', 'status']);
226
        $select->from(['t' => self::_TABLE]);
227
        $select->join(['c' => SurveyCampaignMapper::_TABLE], 't.campaign_id = c.id', ['name', 'start_date', 'end_date']);
228
        $select->where->equalTo('c.type', SurveyCampaign::TYPE_NORMAL);
229
        $select->where->equalTo('t.user_id', $user_id);
230
 
231
        if($search) {
7340 efrain 232
            //$select->where->like('c.name', '%' . $search . '%');
233
 
234
            if($search) {
235
                //$select->where->like('c.name', '%' . $search . '%');
236
 
237
                $select->where->nest()
238
                ->like('c.name', '%' . $search . '%')
239
                ->or->like('t.uuid', '%' . $search . '%')
240
                ->unnest();
241
            }
7328 efrain 242
        }
243
        $select->order($order_field . ' ' . $order_direction);
244
 
245
        //echo $select->getSqlString($this->adapter->platform); exit;
246
 
247
 
248
        $adapter = new DbSelect($select, $this->sql);
1443 eleazar 249
        $paginator = new Paginator($adapter);
250
        $paginator->setItemCountPerPage($records_per_page);
251
        $paginator->setCurrentPageNumber($page);
252
 
253
 
254
        return $paginator;
255
    }
1410 eleazar 256
 
257
 
1443 eleazar 258
 
1410 eleazar 259
 
260
}