correctifs presences

This commit is contained in:
Jean-Philippe Staelen 2026-01-21 11:24:44 +01:00
parent 7c426d892d
commit 75bff25eb0
2 changed files with 65 additions and 1 deletions

View File

@ -79,6 +79,15 @@ class CRVI_Beneficiaire_Controller {
],
]);
// Endpoint pour rechercher des bénéficiaires par nom/prénom
register_rest_route('crvi/v1', '/beneficiaires/search', [
[
'methods' => 'GET',
'callback' => [self::class, 'search_beneficiaires'],
'permission_callback' => '__return_true',
],
]);
register_rest_route('crvi/v1', '/beneficiaires/(?P<id>\\d+)', [
[
'methods' => 'GET',
@ -122,6 +131,61 @@ class CRVI_Beneficiaire_Controller {
return Api_Helper::json_success($items);
}
/**
* Recherche de bénéficiaires par nom ou prénom
* GET /wp-json/crvi/v1/beneficiaires/search?search=durand
*/
public static function search_beneficiaires($request) {
$search = $request->get_param('search');
if (empty($search) || strlen($search) < 3) {
return Api_Helper::json_success([]);
}
// Rechercher les bénéficiaires par nom ou prénom
$args = [
'post_type' => 'beneficiaire',
'posts_per_page' => 20,
'post_status' => 'publish',
'meta_query' => [
'relation' => 'OR',
[
'key' => 'nom',
'value' => $search,
'compare' => 'LIKE'
],
[
'key' => 'prenom',
'value' => $search,
'compare' => 'LIKE'
]
]
];
$query = new \WP_Query($args);
$results = [];
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$nom = get_post_meta($post_id, 'nom', true);
$prenom = get_post_meta($post_id, 'prenom', true);
$results[] = [
'id' => $post_id,
'nom' => $nom,
'prenom' => $prenom,
'nom_complet' => trim($prenom . ' ' . $nom)
];
}
wp_reset_postdata();
}
return Api_Helper::json_success($results);
}
public static function get_item($request) {
$id = (int) $request['id'];
$item = CRVI_Beneficiaire_Model::load($id);

View File

@ -558,7 +558,7 @@ export function openCheckPresenceModal(eventData) {
const row = document.createElement('tr');
row.innerHTML = `
<td>
<input type="checkbox" class="form-check-input" id="presence_${i}" name="presences[${i}][is_present]" checked>
<input type="checkbox" class="form-check-input" id="presence_${i}" name="presences[${i}][is_present]">
</td>
<td style="position: relative;">
<input type="text" class="form-control presence-nom-input" id="presence_nom_${i}" name="presences[${i}][nom]"