import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
// Écoute tous les clics sur .open-modal -> détournement vers #lastStep + MAJ des options du formulaire
document.querySelectorAll('.participant-box').forEach(element => {
element.addEventListener('click', this.handleClick.bind(this))
})
}
handleClick(event) {
event.preventDefault()
const participantId = event.currentTarget.dataset.id
const box = event.currentTarget;
const icon = box.querySelector('.icon');
if (!participantId) return
// Etape 1
fetch(`/checkin/participant/${participantId}`, {
method: 'POST',
headers: {
'Accept': 'application/json'
}
})
.then(response => {
if (!response.ok) {
throw new Error(`Erreur API: ${response.status}`);
}
return response.json();
})
.then(data => {
// Etape 2
console.log('ID du particpant cliqué :', participantId);
console.log('ÉTAT DU SLOT :', data.status);
if (data.status === "CHECKED") {
box.classList.add('has-background-primary');
box.classList.remove('has-background-danger');
icon.innerHTML = '';
} else if (data.status === "UNCHECKED") {
box.classList.remove('has-background-primary');
box.classList.add('has-background-danger');
icon.innerHTML = '';
} else {
console.warn("Statut de réponse sans action :", data.status);
}
})
.catch(error => {
console.error('Erreur lors de la récupération des slots :', error);
});
}
disconnect() {
this.element.querySelectorAll('.planning-cell-free').forEach(element => {
element.removeEventListener('click', this.handleClick)
})
}
}