Proyectos de Subversion LeadersLinked - Services

Rev

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

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