Crvi/app/controllers/Agenda_Controller.ofd.php
2026-01-20 07:54:37 +01:00

71 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace ESI_CRVI_AGENDA\controllers;
use ESI_CRVI_AGENDA\models\Event_Model;
use ESI_CRVI_AGENDA\helpers\Api_Helper;
use ESI_CRVI_AGENDA\models\CRVI_Event_Model;
class CRVI_Agenda_Controller {
public static function register_routes() {
\register_rest_route('crvi/v1', '/agenda/disponibilites', [
'methods' => 'GET',
'callback' => [self::class, 'get_disponibilites'],
'permission_callback' => '__return_true',
]);
\register_rest_route('crvi/v1', '/events/(?P<id>\\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);
}
}