'GET', 'callback' => [self::class, 'get_disponibilites'], 'permission_callback' => '__return_true', ]); \register_rest_route('crvi/v1', '/events/(?P\\d+)/conflits', [ [ 'methods' => 'GET', 'callback' => [self::class, 'conflits_item'], 'permission_callback' => [self::class, 'can_edit'], ], ]); \register_rest_route('crvi/v1', '/events/export', [ [ 'methods' => 'GET', 'callback' => [self::class, 'export_items'], 'permission_callback' => [self::class, 'can_edit'], ], ]); } /** * Endpoint global pour récupérer les entités disponibles à une date/créneau donné. * @param \WP_REST_Request $request * @return \WP_REST_Response */ public static function get_disponibilites($request) { $date = $request->get_param('date'); $langue = $request->get_param('langue'); $departement = $request->get_param('departement'); $specialisation = $request->get_param('specialisation'); // Appel aux méthodes de chaque controller (à implémenter) $traducteurs = \ESI_CRVI_AGENDA\controllers\CRVI_Traducteur_Controller::filtrer_disponibles($date, $langue); $intervenants = \ESI_CRVI_AGENDA\controllers\CRVI_Intervenant_Controller::filtrer_disponibles($date, $departement, $specialisation); $locaux = \ESI_CRVI_AGENDA\controllers\CRVI_Local_Controller::filtrer_disponibles($date); return new \WP_REST_Response([ 'traducteurs' => $traducteurs, 'intervenants' => $intervenants, 'locaux' => $locaux, ]); } public static function conflits_item($request) { $id = (int) $request['id']; $model = new Event_Model(); $result = $model->get_conflits($id); return Api_Helper::json_success($result); } public static function export_items($request) { $model = new Event_Model(); $result = $model->export_events($request->get_params()); return Api_Helper::json_success($result); } }