Passed
Push — devel-3.0 ( 4622e9...e92637 )
by Rubén
03:18
created

ClientGrid::getData()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 1
nop 0
dl 0
loc 13
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * sysPass
4
 *
5
 * @author    nuxsmin
6
 * @link      https://syspass.org
7
 * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
8
 *
9
 * This file is part of sysPass.
10
 *
11
 * sysPass is free software: you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation, either version 3 of the License, or
14
 * (at your option) any later version.
15
 *
16
 * sysPass is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU General Public License
22
 *  along with sysPass.  If not, see <http://www.gnu.org/licenses/>.
23
 */
24
25
namespace SP\Modules\Web\Controllers\Helpers\Grid;
26
27
use SP\Core\Acl\Acl;
28
use SP\Core\Acl\ActionsInterface;
29
use SP\Html\DataGrid\DataGridAction;
30
use SP\Html\DataGrid\DataGridActionSearch;
31
use SP\Html\DataGrid\DataGridActionType;
32
use SP\Html\DataGrid\DataGridData;
33
use SP\Html\DataGrid\DataGridHeader;
34
use SP\Html\DataGrid\DataGridInterface;
35
use SP\Html\DataGrid\DataGridTab;
36
use SP\Storage\Database\QueryResult;
37
38
/**
39
 * Class ClientGrid
40
 *
41
 * @package SP\Modules\Web\Controllers\Helpers\Grid
42
 */
43
final class ClientGrid extends GridBase
44
{
45
    /**
46
     * @var QueryResult
47
     */
48
    private $queryResult;
49
50
    /**
51
     * @param QueryResult $queryResult
52
     *
53
     * @return DataGridInterface
54
     */
55
    public function getGrid(QueryResult $queryResult): DataGridInterface
56
    {
57
        $this->queryResult = $queryResult;
58
59
        $grid = $this->getGridLayout();
60
61
        $searchAction = $this->getSearchAction();
62
63
        $grid->setDataActions($this->getSearchAction());
64
        $grid->setPager($this->getPager($searchAction));
65
        $grid->setDataActions($this->getCreateAction());
66
        $grid->setDataActions($this->getEditAction());
67
68
        $deleteAction = $this->getDeleteAction();
69
70
        $grid->setDataActions($deleteAction);
71
        $grid->setDataActions($deleteAction, true);
72
73
        $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
0 ignored issues
show
Bug introduced by
round(getElapsedTime($this->queryTimeStart), 5) of type double is incompatible with the type integer expected by parameter $time of SP\Html\DataGrid\DataGridBase::setTime(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

73
        $grid->setTime(/** @scrutinizer ignore-type */ round(getElapsedTime($this->queryTimeStart), 5));
Loading history...
74
75
        return $grid;
76
    }
77
78
    /**
79
     * @return DataGridInterface
80
     */
81
    protected function getGridLayout(): DataGridInterface
82
    {
83
        // Grid
84
        $gridTab = new DataGridTab($this->view->getTheme());
85
        $gridTab->setId('tblCustomers');
86
        $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
87
        $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
88
        $gridTab->setHeader($this->getHeader());
89
        $gridTab->setData($this->getData());
90
        $gridTab->setTitle(__('Clientes'));
91
92
        return $gridTab;
93
    }
94
95
    /**
96
     * @return DataGridHeader
97
     */
98
    protected function getHeader(): DataGridHeader
99
    {
100
        // Grid Header
101
        $gridHeader = new DataGridHeader();
102
        $gridHeader->addHeader(__('Nombre'));
103
        $gridHeader->addHeader(__('Descripción'));
104
        $gridHeader->addHeader(__('Global'));
105
106
        return $gridHeader;
107
    }
108
109
    /**
110
     * @return DataGridData
111
     */
112
    protected function getData(): DataGridData
113
    {
114
        // Grid Data
115
        $gridData = new DataGridData();
116
        $gridData->setDataRowSourceId('id');
117
        $gridData->addDataRowSource('name');
118
        $gridData->addDataRowSource('description');
119
        $gridData->addDataRowSource('isGlobal', false, function ($value) {
120
            return $value ? __('SI') : __('NO');
121
        });
122
        $gridData->setData($this->queryResult);
123
124
        return $gridData;
125
    }
126
127
    /**
128
     * @return DataGridActionSearch
129
     */
130
    private function getSearchAction()
131
    {
132
        // Grid Actions
133
        $gridActionSearch = new DataGridActionSearch();
134
        $gridActionSearch->setId(ActionsInterface::CLIENT_SEARCH);
135
        $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
136
        $gridActionSearch->setName('frmSearchCustomer');
137
        $gridActionSearch->setTitle(__('Buscar Cliente'));
138
        $gridActionSearch->setOnSubmitFunction('appMgmt/search');
139
        $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_SEARCH));
140
141
        return $gridActionSearch;
142
    }
143
144
    /**
145
     * @return DataGridAction
146
     */
147
    private function getCreateAction()
148
    {
149
        $gridAction = new DataGridAction();
150
        $gridAction->setId(ActionsInterface::CLIENT_CREATE);
151
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
152
        $gridAction->setName(__('Nuevo Cliente'));
153
        $gridAction->setTitle(__('Nuevo Cliente'));
154
        $gridAction->setIcon($this->icons->getIconAdd());
155
        $gridAction->setSkip(true);
156
        $gridAction->setOnClickFunction('appMgmt/show');
157
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_CREATE));
158
159
        return $gridAction;
160
    }
161
162
    /**
163
     * @return DataGridAction
164
     */
165
    private function getEditAction()
166
    {
167
        $gridAction = new DataGridAction();
168
        $gridAction->setId(ActionsInterface::CLIENT_EDIT);
169
        $gridAction->setType(DataGridActionType::EDIT_ITEM);
170
        $gridAction->setName(__('Editar Cliente'));
171
        $gridAction->setTitle(__('Editar Cliente'));
172
        $gridAction->setIcon($this->icons->getIconEdit());
173
        $gridAction->setOnClickFunction('appMgmt/show');
174
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_EDIT));
175
176
        return $gridAction;
177
    }
178
179
    /**
180
     * @return DataGridAction
181
     */
182
    private function getDeleteAction()
183
    {
184
        $gridAction = new DataGridAction();
185
        $gridAction->setId(ActionsInterface::CLIENT_DELETE);
186
        $gridAction->setType(DataGridActionType::DELETE_ITEM);
187
        $gridAction->setName(__('Eliminar Cliente'));
188
        $gridAction->setTitle(__('Eliminar Cliente'));
189
        $gridAction->setIcon($this->icons->getIconDelete());
190
        $gridAction->setOnClickFunction('appMgmt/delete');
191
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_DELETE));
192
193
        return $gridAction;
194
    }
195
}