initial
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
|
||||
class RsvTimetableCapacityController {
|
||||
use RsvPagedResponseTrait;
|
||||
private string $namespace = 'reservations/v1';
|
||||
private string $resource_name = 'timetable/(?P<id>\d+)/capacity';
|
||||
|
||||
public function register_routes(): void {
|
||||
register_rest_route($this->namespace, '/' . $this->resource_name, [
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => [$this, 'get_all'],
|
||||
'permission_callback' => [RsvRestPolicy::class, 'admin'],
|
||||
],
|
||||
[
|
||||
'methods' => 'POST',
|
||||
'callback' => [$this, 'create'],
|
||||
'permission_callback' => [RsvRestPolicy::class, 'admin'],
|
||||
// 'args' => self::input_args(RsvTimetableCapacity::schema()),
|
||||
],
|
||||
]);
|
||||
|
||||
register_rest_route($this->namespace, '/' . $this->resource_name . '/(?P<capacity_id>\d+)', [
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => [$this, 'get'],
|
||||
'permission_callback' => [RsvRestPolicy::class, 'admin'],
|
||||
],
|
||||
[
|
||||
'methods' => 'PUT',
|
||||
'callback' => [$this, 'update'],
|
||||
'permission_callback' => [RsvRestPolicy::class, 'admin'],
|
||||
'args' => self::input_args(RsvTimetableCapacity::schema()),
|
||||
],
|
||||
[
|
||||
'methods' => 'DELETE',
|
||||
'callback' => [$this, 'delete'],
|
||||
'permission_callback' => [RsvRestPolicy::class, 'admin'],
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function get_all(WP_REST_Request $request): WP_REST_Response {
|
||||
[$skip, $limit] = self::paging($request);
|
||||
$timetable_id = (int) $request->get_param('id');
|
||||
$service = new RsvTimetableCapacityRepository();
|
||||
return $this->paged_response(
|
||||
$service->get_all($timetable_id, $limit, $skip),
|
||||
$service->count_all($timetable_id)
|
||||
);
|
||||
}
|
||||
|
||||
public function get(WP_REST_Request $request): WP_REST_Response {
|
||||
return new WP_REST_Response(
|
||||
(new RsvTimetableCapacityRepository())->get((int) $request->get_param('capacity_id')),
|
||||
200
|
||||
);
|
||||
}
|
||||
|
||||
public function create(WP_REST_Request $request): WP_REST_Response {
|
||||
$items = $request->get_json_params();
|
||||
$timetable_id = (int) $request->get_param('id');
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach($items as $item) {
|
||||
$capacity = new RsvTimetableCapacity(
|
||||
null,
|
||||
$timetable_id,
|
||||
(int) $item['capacity'],
|
||||
(int) $item['min_lead_time_minutes'],
|
||||
new DateTime($item['date']),
|
||||
(int) $item['start_time'],
|
||||
(int) $item['end_time'],
|
||||
(int) $item['repeat_period_in_days'],
|
||||
(int) $item['repeat_times'],
|
||||
(bool) $item['requires_confirmation'],
|
||||
);
|
||||
|
||||
$ids[] = (new RsvTimetableCapacityRepository())->create($capacity);
|
||||
}
|
||||
|
||||
return new WP_REST_Response(
|
||||
['ids' => $ids],
|
||||
201
|
||||
);
|
||||
}
|
||||
|
||||
public function update(WP_REST_Request $request): WP_REST_Response {
|
||||
$capacity = new RsvTimetableCapacity(
|
||||
(int) $request->get_param('capacity_id'),
|
||||
(int) $request->get_param('id'),
|
||||
(int) $request->get_param('capacity'),
|
||||
(int) $request->get_param('min_lead_time_minutes'),
|
||||
new DateTime($request->get_param('date')),
|
||||
(int)$request->get_param('start_time'),
|
||||
(int)$request->get_param('end_time'),
|
||||
(int) $request->get_param('repeat_period_in_days'),
|
||||
(int) $request->get_param('repeat_times'),
|
||||
(bool) $request->get_param('requires_confirmation'),
|
||||
);
|
||||
|
||||
$capacity_id = (int) $request->get_param('capacity_id');
|
||||
(new RsvTimetableCapacityRepository())->update($capacity_id, $capacity);
|
||||
|
||||
return new WP_REST_Response(['id' => $capacity_id], 200);
|
||||
}
|
||||
|
||||
public function delete(WP_REST_Request $request): WP_REST_Response {
|
||||
(new RsvTimetableCapacityRepository())->delete((int) $request->get_param('capacity_id'));
|
||||
return new WP_REST_Response(null, 204);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user