/**
* Module Hub Intervenant
* Gestion des RDV du jour et marquage présence/absence
*/
import { apiFetch } from './agenda-api.js';
import toastr from 'toastr';
/**
* Charge les RDV du jour de l'intervenant connecté
*/
export async function loadRdvToday() {
const container = document.getElementById('rdv-today-container');
const emptyMessage = document.getElementById('rdv-today-empty');
if (!container) {
console.error('Container rdv-today-container non trouvé');
return;
}
try {
if (window.CRVI_OVERLAY) { window.CRVI_OVERLAY.show(container); }
container.innerHTML = `
Chargement...
Chargement des rendez-vous...
`;
const rdvs = await apiFetch('intervenant/rdv-today');
if (!rdvs || rdvs.length === 0) {
container.style.display = 'none';
if (emptyMessage) {
emptyMessage.style.display = 'block';
}
return;
}
container.style.display = 'block';
if (emptyMessage) {
emptyMessage.style.display = 'none';
}
// Récupérer le template
const template = document.getElementById('rdv-item-template');
if (!template) {
console.error('Template rdv-item-template non trouvé');
return;
}
container.innerHTML = '';
rdvs.forEach(rdv => {
const clone = template.content.cloneNode(true);
// Formatage de l'heure
const heureDebut = formatTime(rdv.heure_rdv);
const heureFin = formatTime(rdv.heure_fin || rdv.heure_rdv);
// Remplir les données
const timeStartEl = clone.querySelector('[data-time-start]');
const timeEndEl = clone.querySelector('[data-time-end]');
const localEl = clone.querySelector('[data-local]');
const beneficiaireEl = clone.querySelector('[data-beneficiaire]');
const typeInterventionEl = clone.querySelector('[data-type-intervention]');
const presentBtn = clone.querySelector('button.mark-presence[data-statut="present"]');
const absentBtn = clone.querySelector('button.mark-presence[data-statut="absent"]');
if (timeStartEl) timeStartEl.textContent = heureDebut;
if (timeEndEl) timeEndEl.textContent = heureFin;
if (localEl && rdv.local) {
localEl.textContent = rdv.local.nom || 'Non assigné';
}
if (beneficiaireEl && rdv.beneficiaire) {
const nom = rdv.beneficiaire.prenom && rdv.beneficiaire.nom
? `${rdv.beneficiaire.prenom} ${rdv.beneficiaire.nom}`
: (rdv.beneficiaire.nom || 'Non assigné');
beneficiaireEl.textContent = nom;
}
if (typeInterventionEl) {
typeInterventionEl.textContent = rdv.type_intervention || '';
}
// Configurer les boutons présence/absence
if (presentBtn) {
presentBtn.setAttribute('data-event-id', rdv.id);
presentBtn.addEventListener('click', () => markPresence(rdv.id, 'present'));
}
if (absentBtn) {
absentBtn.setAttribute('data-event-id', rdv.id);
absentBtn.addEventListener('click', () => markPresence(rdv.id, 'absent'));
}
// Désactiver les boutons si le statut n'est plus "prevu"
if (rdv.statut !== 'prevu') {
if (presentBtn) presentBtn.disabled = true;
if (absentBtn) absentBtn.disabled = true;
}
container.appendChild(clone);
});
} catch (error) {
console.error('Erreur lors du chargement des RDV du jour:', error);
container.innerHTML = `