88use Cachet \Concerns \GuardsApiAbilities ;
99use Cachet \Data \Requests \Schedule \CreateScheduleRequestData ;
1010use Cachet \Data \Requests \Schedule \UpdateScheduleRequestData ;
11+ use Cachet \Enums \ScheduleStatusEnum ;
12+ use Cachet \Filters \ScheduleStatusFilter ;
1113use Cachet \Http \Resources \Schedule as ScheduleResource ;
1214use Cachet \Models \Schedule ;
1315use Dedoc \Scramble \Attributes \Group ;
1416use Dedoc \Scramble \Attributes \QueryParameter ;
15- use Illuminate \Http \Resources \Json \AnonymousResourceCollection ;
1617use Illuminate \Http \Response ;
17- use Illuminate \Pagination \Paginator ;
1818use Illuminate \Routing \Controller ;
1919use Spatie \QueryBuilder \AllowedFilter ;
2020use Spatie \QueryBuilder \QueryBuilder ;
@@ -30,14 +30,14 @@ class ScheduleController extends Controller
3030 * @response AnonymousResourceCollection<Paginator<ScheduleResource>>
3131 */
3232 #[QueryParameter('filter[name] ' , 'Filter the resources by name. ' , example: 'api ' )]
33- #[QueryParameter('filter[status] ' , 'Filter the resources by status. ' , example: 1 )]
33+ #[QueryParameter('filter[status] ' , 'Filter the resources by status. ' , type: ScheduleStatusEnum::class )]
3434 #[QueryParameter('per_page ' , 'How many items to show per page. ' , type: 'int ' , default: 15 , example: 20 )]
3535 #[QueryParameter('page ' , 'Which page to show. ' , type: 'int ' , example: 2 )]
3636 public function index ()
3737 {
3838 $ schedules = QueryBuilder::for (Schedule::class)
3939 ->allowedIncludes (['components ' , 'updates ' , 'user ' ])
40- ->allowedFilters (['name ' , AllowedFilter::exact ('status ' )])
40+ ->allowedFilters (['name ' , AllowedFilter::custom ('status ' , new ScheduleStatusFilter )])
4141 ->allowedSorts (['name ' , 'id ' , 'scheduled_at ' , 'completed_at ' ])
4242 ->simplePaginate (request ('per_page ' , 15 ));
4343
0 commit comments