71 lines
2.5 KiB
PHP
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);
|
|
}
|
|
} |