Completed
Push — master ( b026d2...e5ac1d )
by WEBEWEB
01:39
created

DefaultDataTablesRepository   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 157
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 8
dl 0
loc 157
rs 10
c 0
b 0
f 0

10 Methods

Rating   Name   Duplication   Size   Complexity  
A buildDataTablesCountExported() 0 12 1
A buildDataTablesCountFiltered() 0 15 1
A buildDataTablesCountTotal() 0 12 1
A buildDataTablesExportAll() 0 8 1
A buildDataTablesFindAll() 0 17 1
A dataTablesCountExported() 0 8 1
A dataTablesCountFiltered() 0 8 1
A dataTablesCountTotal() 0 8 1
A dataTablesExportAll() 0 3 1
A dataTablesFindAll() 0 8 1
1
<?php
2
3
/**
4
 * This file is part of the jquery-datatables-bundle package.
5
 *
6
 * (c) 2018 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Bundle\JQuery\DataTablesBundle\Repository;
13
14
use Doctrine\ORM\EntityRepository;
15
use Doctrine\ORM\QueryBuilder;
16
use WBW\Bundle\JQuery\DataTablesBundle\API\DataTablesWrapper;
17
use WBW\Bundle\JQuery\DataTablesBundle\Helper\DataTablesRepositoryHelper;
18
use WBW\Bundle\JQuery\DataTablesBundle\Provider\DataTablesProviderInterface;
19
20
/**
21
 * Default DataTables repository.
22
 *
23
 * @author webeweb <https://github.com/webeweb/>
24
 * @package WBW\Bundle\JQuery\DataTablesBundle\Repository
25
 * @abstract
26
 */
27
abstract class DefaultDataTablesRepository extends EntityRepository implements DataTablesRepositoryInterface {
28
29
    /**
30
     * Build a DataTables query builder "Count exported".
31
     *
32
     * @param DataTablesProviderInterface $dtProvider The provider.
33
     * @return QueryBuilder Returns the DataTables query builder "Count exported".
34
     */
35
    protected function buildDataTablesCountExported(DataTablesProviderInterface $dtProvider) {
36
37
        // Get the prefix.
38
        $prefix = $dtProvider->getPrefix();
39
40
        // Create a query builder.
41
        $qb = $this->createQueryBuilder($prefix)
42
            ->select("COUNT(" . $prefix . ")");
43
44
        // Return the query builder.
45
        return $qb;
46
    }
47
48
    /**
49
     * Build a DataTables query builder "Count filtered".
50
     *
51
     * @param DataTablesWrapper $dtWrapper The wrapper.
52
     * @return QueryBuilder Returns the DataTables query builder "Count filtered".
53
     */
54
    protected function buildDataTablesCountFiltered(DataTablesWrapper $dtWrapper) {
55
56
        // Get the prefix.
57
        $prefix = $dtWrapper->getMapping()->getPrefix();
58
59
        // Create a query builder.
60
        $qb = $this->createQueryBuilder($prefix)
61
            ->select("COUNT(" . $prefix . ")");
62
63
        // Append the where clause.
64
        DataTablesRepositoryHelper::appendWhere($qb, $dtWrapper);
65
66
        // Return the query builder.
67
        return $qb;
68
    }
69
70
    /**
71
     * Build a DataTables query builder "Count total".
72
     *
73
     * @param DataTablesWrapper $dtWrapper The wrapper.
74
     * @return QueryBuilder Returns the DataTables query builder "Count total".
75
     */
76
    protected function buildDataTablesCountTotal(DataTablesWrapper $dtWrapper) {
77
78
        // Get the prefix.
79
        $prefix = $dtWrapper->getMapping()->getPrefix();
80
81
        // Create a query builder.
82
        $qb = $this->createQueryBuilder($prefix)
83
            ->select("COUNT(" . $prefix . ")");
84
85
        // Return the query builder.
86
        return $qb;
87
    }
88
89
    /**
90
     * Build a DataTables query builder "Export all".
91
     *
92
     * @param DataTablesProviderInterface $dtProvider The provider.
93
     * @return QueryBuilder Returns the DataTables query builder "Export all".
94
     */
95
    protected function buildDataTablesExportAll(DataTablesProviderInterface $dtProvider) {
96
97
        // Create a query builder.
98
        $qb = $this->createQueryBuilder($dtProvider->getPrefix());
99
100
        // Return the query builder.
101
        return $qb;
102
    }
103
104
    /**
105
     * Build a DataTables query builder "Find all".
106
     *
107
     * @param DataTablesWrapper $dtWrapper The wrapper.
108
     * @return QueryBuilder Returns the DataTables query builder "Find all".
109
     */
110
    protected function buildDataTablesFindAll(DataTablesWrapper $dtWrapper) {
111
112
        // Get the prefix.
113
        $prefix = $dtWrapper->getMapping()->getPrefix();
114
115
        // Create a query builder.
116
        $qb = $this->createQueryBuilder($prefix)
117
            ->setFirstResult($dtWrapper->getRequest()->getStart())
118
            ->setMaxResults($dtWrapper->getRequest()->getLength());
119
120
        // Build the where and order clauses.
121
        DataTablesRepositoryHelper::appendWhere($qb, $dtWrapper);
122
        DataTablesRepositoryHelper::appendOrder($qb, $dtWrapper);
123
124
        // Return the query builder.
125
        return $qb;
126
    }
127
128
    /**
129
     * {@inheritdoc}
130
     */
131
    public function dataTablesCountExported(DataTablesProviderInterface $dtProvider) {
132
133
        // Build a DataTables query builder.
134
        $qb = $this->buildDataTablesCountExported($dtProvider);
135
136
        // Return the single scalar result.
137
        return intval($qb->getQuery()->getSingleScalarResult());
138
    }
139
140
    /**
141
     * {@inheritdoc}
142
     */
143
    public function dataTablesCountFiltered(DataTablesWrapper $dtWrapper) {
144
145
        // Build a DataTables query builder.
146
        $qb = $this->buildDataTablesCountFiltered($dtWrapper);
147
148
        // Return the single scalar result.
149
        return intval($qb->getQuery()->getSingleScalarResult());
150
    }
151
152
    /**
153
     * {@inheritdoc}
154
     */
155
    public function dataTablesCountTotal(DataTablesWrapper $dtWrapper) {
156
157
        // Build a DataTables query builder.
158
        $qb = $this->buildDataTablesCountTotal($dtWrapper);
159
160
        // Return the single scalar result.
161
        return intval($qb->getQuery()->getSingleScalarResult());
162
    }
163
164
    /**
165
     * {@inheritdoc}
166
     */
167
    public function dataTablesExportAll(DataTablesProviderInterface $dtProvider) {
168
        return $this->buildDataTablesExportAll($dtProvider);
169
    }
170
171
    /**
172
     * {@inheritdoc}
173
     */
174
    public function dataTablesFindAll(DataTablesWrapper $dtWrapper) {
175
176
        // Build a DataTables query builder.
177
        $qb = $this->buildDataTablesFindAll($dtWrapper);
178
179
        // Return the result.
180
        return $qb->getQuery()->getResult();
181
    }
182
183
}
184