Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5223 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Mapper;
5
 
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\Paginator\Paginator;
11
 
12
 
13
use LeadersLinked\Model\EngagementReward;
14
use LeadersLinked\Mapper\Common\MapperCommon;
15
use Laminas\Db\Sql\Expression;
16
use Laminas\Db\ResultSet\HydratingResultSet;
17
use Laminas\Paginator\Adapter\DbSelect;
18
 
19
class EngagementRewardMapper extends MapperCommon
20
{
21
    const _TABLE = 'tbl_engagement_rewards';
22
 
23
    /**
24
     *
25
     * @var EngagementRewardMapper
26
     */
27
    private static $_instance;
28
 
29
    /**
30
     *
31
     * @param AdapterInterface $adapter
32
     */
33
    private function __construct($adapter)
34
    {
35
        parent::__construct($adapter);
36
    }
37
 
38
    /**
39
     *
40
     * @param AdapterInterface $adapter
41
     * @return EngagementRewardMapper
42
     */
43
    public static function getInstance($adapter)
44
    {
45
        if(self::$_instance == null) {
46
            self::$_instance = new EngagementRewardMapper($adapter);
47
        }
48
        return self::$_instance;
49
    }
50
 
51
    /**
52
     *
53
     * @param int $id
54
     * @return EngagementReward
55
     */
56
    public function fetchOne($id)
57
    {
58
        $select = $this->sql->select(self::_TABLE);
59
        $select->where->equalTo('id', $id);
60
        $select->limit(1);
61
 
62
        $prototype = new EngagementReward();
63
        return $this->executeFetchOneObject($select, $prototype);
64
    }
65
 
66
 
67
    /**
68
     *
69
     * @param string $uuid
70
     * @return EngagementReward
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 EngagementReward();
79
        return $this->executeFetchOneObject($select, $prototype);
80
    }
81
 
82
    /**
83
     *
84
     * @param string $company_id
85
     * @param string $search
86
     * @param int $page
87
     * @param int $records_per_page
88
     * @param string $order_field
89
     * @param string $order_direction
90
     * @return Paginator
91
     */
92
    public function fetchAllDataTable($company_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
93
    {
94
        $prototype = new EngagementReward();
95
        $select = $this->sql->select(self::_TABLE);
96
        $select->where->equalTo('company_id', $company_id);
97
 
98
        if($search) {
99
            $select->where->like('name', '%' . $search . '%');
100
        }
101
        $select->order($order_field . ' ' . $order_direction);
102
 
103
 
104
        //echo $select->getSqlString($this->adapter->platform); exit;
105
 
106
        $hydrator   = new ObjectPropertyHydrator();
107
        $resultset  = new HydratingResultSet($hydrator, $prototype);
108
 
109
        $adapter = new DbSelect($select, $this->sql, $resultset);
110
        $paginator = new Paginator($adapter);
111
        $paginator->setItemCountPerPage($records_per_page);
112
        $paginator->setCurrentPageNumber($page);
113
 
114
 
115
        return $paginator;
116
    }
117
 
118
 
119
    /**
120
     *
121
     * @param EngagementReward $record
122
     * @return boolean
123
     */
124
    public function insert($record)
125
    {
126
        $hydrator = new ObjectPropertyHydrator();
127
        $values = $hydrator->extract($record);
128
        $values = $this->removeEmpty($values);
129
 
130
        $insert = $this->sql->insert(self::_TABLE);
131
        $insert->values($values);
132
 
133
 
134
        $result = $this->executeInsert($insert);
135
        if($result) {
136
            $record->id = $this->lastInsertId;
137
        }
138
        return $result;
139
    }
140
 
141
    /**
142
     *
143
     * @param EngagementReward $record
144
     * @return boolean
145
     */
146
    public function update($record)
147
    {
148
        $hydrator = new ObjectPropertyHydrator();
149
        $values = $hydrator->extract($record);
150
        $values = $this->removeEmpty($values);
151
 
152
        $update = $this->sql->update(self::_TABLE);
153
        $update->set($values);
154
        $update->where->equalTo('id', $record->id);
155
 
156
 
157
        return $this->executeUpdate($update);
158
    }
159
 
160
 
161
    /**
162
     *
163
     * @param EngagementReward $record
164
     * @return boolean
165
     */
166
    public function delete($record)
167
    {
168
 
169
        $delete = $this->sql->delete(self::_TABLE);
170
        $delete->where->equalTo('id', $record->id);
171
 
172
 
173
        return $this->executeDelete($delete);
174
    }
175
 
176
}
177