Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1979 | Ir a la última revisión | | 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) {
7328 efrain 191
            $select->where->like('c.name', '%' . $search . '%');
1443 eleazar 192
        }
193
        $select->order($order_field . ' ' . $order_direction);
194
 
1532 eleazar 195
        //echo $select->getSqlString($this->adapter->platform); exit;
7328 efrain 196
 
1443 eleazar 197
 
7328 efrain 198
        $adapter = new DbSelect($select, $this->sql);
199
        $paginator = new Paginator($adapter);
200
        $paginator->setItemCountPerPage($records_per_page);
201
        $paginator->setCurrentPageNumber($page);
1443 eleazar 202
 
7328 efrain 203
 
204
        return $paginator;
205
    }
206
 
207
    /**
208
     *
209
     * @param int $user_id
210
     * @param string $search
211
     * @param int $page
212
     * @param int $records_per_page
213
     * @param string $order_field
214
     * @param string $order_direction
215
     * @return Paginator
216
     */
217
    public function fetchAllNormalDataTableByUserId($user_id, $search, $page = 1, $records_per_page = 10, $order_field= 'first_name', $order_direction = 'ASC')
218
    {
219
        $select = $this->sql->select();
220
        $select->columns(['uuid', 'status']);
221
        $select->from(['t' => self::_TABLE]);
222
        $select->join(['c' => SurveyCampaignMapper::_TABLE], 't.campaign_id = c.id', ['name', 'start_date', 'end_date']);
223
        $select->where->equalTo('c.type', SurveyCampaign::TYPE_NORMAL);
224
        $select->where->equalTo('t.user_id', $user_id);
225
 
226
        if($search) {
227
            $select->where->like('c.name', '%' . $search . '%');
228
        }
229
        $select->order($order_field . ' ' . $order_direction);
230
 
231
        //echo $select->getSqlString($this->adapter->platform); exit;
232
 
233
 
234
        $adapter = new DbSelect($select, $this->sql);
1443 eleazar 235
        $paginator = new Paginator($adapter);
236
        $paginator->setItemCountPerPage($records_per_page);
237
        $paginator->setCurrentPageNumber($page);
238
 
239
 
240
        return $paginator;
241
    }
1410 eleazar 242
 
243
 
1443 eleazar 244
 
1410 eleazar 245
 
246
}