1
1
<?php
2
2
namespace LangleyFoxall \ReactDynamicDataTableLaravelApi ;
3
3
4
+ use Illuminate \Contracts \Pagination \LengthAwarePaginator ;
4
5
use Illuminate \Database \Eloquent \Model ;
5
6
use Illuminate \Database \Eloquent \Builder ;
7
+ use Illuminate \Http \JsonResponse ;
6
8
use Illuminate \Http \Request ;
7
9
use Illuminate \Support \Collection ;
8
10
use Illuminate \Support \Str ;
11
+ use InvalidArgumentException ;
9
12
10
13
/**
11
14
* Class DataTableResponder
@@ -57,14 +60,14 @@ class DataTableResponder
57
60
public function __construct ($ className , Request $ request )
58
61
{
59
62
if (!class_exists ($ className )) {
60
- throw new \ InvalidArgumentException ('Provided class does not exist. ' );
63
+ throw new InvalidArgumentException ('Provided class does not exist. ' );
61
64
}
62
65
63
66
$ this ->model = new $ className ();
64
67
$ this ->request = $ request ;
65
68
66
69
if (!$ this ->model instanceof Model) {
67
- throw new \ InvalidArgumentException ('Provided class is not an Eloquent model. ' );
70
+ throw new InvalidArgumentException ('Provided class is not an Eloquent model. ' );
68
71
}
69
72
}
70
73
@@ -118,9 +121,9 @@ public function collectionManipulator(callable $collectionManipulator)
118
121
119
122
/**
120
123
* Sets the meta for the API response
121
- *
124
+ *
122
125
* @see DataTableResponder::makeMeta
123
- *
126
+ *
124
127
* @param callable $collectionManipulator
125
128
* @return DataTableResponder
126
129
*/
@@ -134,13 +137,17 @@ public function setResponseMeta(array $meta = [])
134
137
* Builds the Eloquent query based on the request.
135
138
*
136
139
* @param Request $request
137
- * @return \Illuminate\Database\Eloquent\ Builder
140
+ * @return Builder
138
141
*/
139
142
private function buildQuery (Request $ request )
140
143
{
141
144
$ orderByField = $ request ->get ('orderByField ' );
142
145
$ orderByDirection = $ request ->get ('orderByDirection ' );
143
146
147
+ if (!in_array (strtolower ($ orderByDirection ), ['asc ' , 'desc ' ])) {
148
+ throw new InvalidArgumentException ('Order by direction must be either asc or desc. ' );
149
+ }
150
+
144
151
$ query = $ this ->model ->query ();
145
152
146
153
if ($ orderByField && $ orderByDirection ) {
@@ -165,16 +172,16 @@ private function buildQuery(Request $request)
165
172
166
173
/**
167
174
* @param Builder $query
168
- * @return \Illuminate\Contracts\Pagination\ LengthAwarePaginator
175
+ * @return LengthAwarePaginator
169
176
*/
170
177
private function paginateQuery (Builder $ query )
171
178
{
172
179
return $ query ->paginate ($ this ->perPage );
173
180
}
174
181
175
182
/**
176
- * @param \Illuminate\Contracts\Pagination\ LengthAwarePaginator $results
177
- * @return \Illuminate\Contracts\Pagination\ LengthAwarePaginator
183
+ * @param LengthAwarePaginator $results
184
+ * @return LengthAwarePaginator
178
185
*/
179
186
private function manipulateCollection ($ results )
180
187
{
@@ -257,7 +264,7 @@ private function disallowOrderingBy()
257
264
}
258
265
259
266
/**
260
- * @return \Illuminate\Http\ JsonResponse
267
+ * @return JsonResponse
261
268
*/
262
269
public function respond ()
263
270
{
0 commit comments