Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 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 LeadersLinked\Hydrator\ObjectPropertyHydrator;
11
use Laminas\Log\LoggerInterface;
12
use Laminas\Paginator\Paginator;
13
use Laminas\Paginator\Adapter\DbSelect;
14
 
15
use LeadersLinked\Model\Transaction;
16
use LeadersLinked\Mapper\Common\MapperCommon;
17
 
18
class TransactionMapper extends MapperCommon
19
{
20
    const _TABLE = 'tbl_transactions';
21
 
22
    /**
23
     *
24
     * @var TransactionMapper
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 TransactionMapper
41
     */
42
    public static function getInstance($adapter)
43
    {
44
        if(self::$_instance == null) {
45
            self::$_instance = new TransactionMapper($adapter);
46
        }
47
        return self::$_instance;
48
    }
49
 
50
    /**
51
     *
52
     * @param int $id
53
     * @return Transaction
54
     */
55
    public function fetchOne($id)
56
    {
57
        $select = $this->sql->select(self::_TABLE);
58
        $select->where->equalTo('id', $id);
59
        $select->limit(1);
60
 
61
        $prototype = new Transaction();
62
        return $this->executeFetchOneObject($select, $prototype);
63
    }
64
 
65
    /**
66
     *
67
     * @param int $user_id
68
     * @param string $search
69
     * @param int $page
70
     * @param int $records_per_page
71
     * @param string $order_field
72
     * @param string $order_direction
73
     * @return Paginator
74
     */
75
    public function fetchAllDataTable($user_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
76
    {
77
        $prototype = new Transaction();
78
        $select = $this->sql->select(self::_TABLE);
79
 
80
 
81
        $select->where->equalTo('user_id', $user_id);
82
        $select->order($order_field . ' ' . $order_direction);
83
 
84
        $hydrator   = new ObjectPropertyHydrator();
85
        $resultset  = new HydratingResultSet($hydrator, $prototype);
86
 
87
        $adapter = new DbSelect($select, $this->sql, $resultset);
88
        $paginator = new Paginator($adapter);
89
        $paginator->setItemCountPerPage($records_per_page);
90
        $paginator->setCurrentPageNumber($page);
91
 
92
 
93
        return $paginator;
94
    }
95
 
96
 
97
 
98
    /**
99
     *
100
     * @param Transaction $transaction
101
     * @return boolean
102
     */
103
    public function insert($transaction)
104
    {
105
        $hydrator = new ObjectPropertyHydrator();
106
        $values = $hydrator->extract($transaction);
107
        $values = $this->removeEmpty($values);
108
 
109
        $insert = $this->sql->insert(self::_TABLE);
110
        $insert->values($values);
111
 
112
 
113
        $result = $this->executeInsert($insert);
114
        if($result) {
115
            $transaction->id = $this->lastInsertId;
116
        }
117
 
118
        return $result;
119
 
120
    }
121
 
122
    /**
123
     *
124
     * @param Transaction $transaction
125
     * @return boolean
126
     */
127
    public function update($transaction)
128
    {
129
        $hydrator = new ObjectPropertyHydrator();
130
        $values = $hydrator->extract($transaction);
131
 
132
        $update = $this->sql->update(self::_TABLE);
133
        $update->set($values);
134
        $update->where->equalTo('id', $transaction->id);
135
 
136
        return $this->executeUpdate($update);
137
    }
138
 
139
    /**
140
     *
141
     * @param Transaction $transaction
142
     * @return boolean
143
     */
144
    public function delete($transaction)
145
    {
146
        $delete = $this->sql->delete(self::_TABLE);
147
        $delete->where->equalTo('id', $transaction->id);
148
 
149
        return $this->executeDelete($delete);
150
 
151
 
152
    }
153
 
154
}