|
13 | 13 | use Dedoc\Scramble\Attributes\Group; |
14 | 14 | use Dedoc\Scramble\Attributes\QueryParameter; |
15 | 15 | use Illuminate\Database\Eloquent\Builder; |
| 16 | +use Illuminate\Http\Request; |
16 | 17 | use Illuminate\Http\Resources\Json\AnonymousResourceCollection; |
17 | 18 | use Illuminate\Http\Response; |
18 | 19 | use Illuminate\Pagination\Paginator; |
@@ -41,22 +42,24 @@ class IncidentController extends Controller |
41 | 42 | */ |
42 | 43 | #[QueryParameter('per_page', 'How many items to show per page.', type: 'int', default: 15, example: 20)] |
43 | 44 | #[QueryParameter('page', 'Which page to show.', type: 'int', example: 2)] |
44 | | - public function index() |
| 45 | + public function index(Request $request) |
45 | 46 | { |
46 | | - $query = Incident::query() |
47 | | - ->when(! request('sort'), function (Builder $builder) { |
48 | | - $builder->orderByDesc('created_at'); |
49 | | - }); |
| 47 | +// $query = Incident::query() |
| 48 | +// ->when(!$request->has('sort'), function (Builder $builder) { |
| 49 | +// $builder->orderByDesc('created_at'); |
| 50 | +// }); |
50 | 51 |
|
51 | | - $incidents = QueryBuilder::for($query) |
| 52 | + $incidents = QueryBuilder::for(Incident::query()) |
52 | 53 | ->allowedIncludes(self::ALLOWED_INCLUDES) |
53 | 54 | ->allowedFilters([ |
54 | 55 | 'name', |
55 | 56 | AllowedFilter::exact('status'), |
56 | | - 'occurred_at', |
| 57 | + AllowedFilter::scope('occurs_after'), |
| 58 | + AllowedFilter::scope('occurs_before'), |
| 59 | + AllowedFilter::scope('occurs_on'), |
57 | 60 | ]) |
58 | 61 | ->allowedSorts(['name', 'status', 'id']) |
59 | | - ->simplePaginate(request('per_page', 15)); |
| 62 | + ->simplePaginate($request->input('per_page', 15)); |
60 | 63 |
|
61 | 64 | return IncidentResource::collection($incidents); |
62 | 65 | } |
|
0 commit comments