'use client'; import React, { useState, useEffect } from 'react'; import ToggleSwitch from '@/components/Form/ToggleSwitch'; import SelectChoice from '@/components/Form/SelectChoice'; import { BASE_URL } from '@/utils/Url'; import { fetchSchoolFileTemplatesFromRegistrationFiles, fetchParentFileTemplatesFromRegistrationFiles, } from '@/app/actions/subscriptionAction'; import logger from '@/utils/logger'; import { School, CheckCircle, Hourglass, FileText } from 'lucide-react'; import SectionHeader from '@/components/SectionHeader'; import Button from '@/components/Form/Button'; export default function ValidateSubscription({ studentId, firstName, lastName, sepa_file, student_file, onAccept, classes, }) { const [schoolFileTemplates, setSchoolFileTemplates] = useState([]); const [parentFileTemplates, setParentFileTemplates] = useState([]); const [currentTemplateIndex, setCurrentTemplateIndex] = useState(0); const [mergeDocuments, setMergeDocuments] = useState(false); const [isPageValid, setIsPageValid] = useState(false); const [formData, setFormData] = useState({ associated_class: null, }); useEffect(() => { if (classes.length > 0) { // Si l'étudiant a déjà une classe associée, initialisez formData avec cette classe const initialClass = classes.find( (classe) => classe.id === formData.associated_class ); setFormData({ associated_class: initialClass ? initialClass.id : null, }); } }, [classes]); // Mettre à jour isPageValid en fonction de la sélection de la classe useEffect(() => { setIsPageValid(!!formData.associated_class); // true si une classe est sélectionnée, sinon false }, [formData.associated_class]); useEffect(() => { // Récupérer les fichiers schoolFileTemplates fetchSchoolFileTemplatesFromRegistrationFiles(studentId) .then((data) => { setSchoolFileTemplates(data); logger.debug('Fichiers schoolFileTemplates récupérés:', data); }) .catch((error) => logger.error( 'Erreur lors de la récupération des schoolFileTemplates:', error ) ); // Récupérer les fichiers parentFileTemplates fetchParentFileTemplatesFromRegistrationFiles(studentId) .then((data) => { setParentFileTemplates(data); logger.debug('Fichiers parentFileTemplates récupérés:', data); }) .catch((error) => logger.error( 'Erreur lors de la récupération des parentFileTemplates:', error ) ); }, [studentId]); const handleToggleMergeDocuments = () => { setMergeDocuments((prevState) => !prevState); }; const handleAssignClass = () => { if (formData.associated_class) { const data = { student: { associated_class: formData.associated_class, }, status: 5, fusionParam: mergeDocuments, }; onAccept(data); } else { logger.warn('Aucune classe sélectionnée.'); } }; const onChange = (field, value) => { setFormData((prev) => ({ ...prev, [field]: value, })); }; const allTemplates = [ { name: 'Fiche élève', file: student_file, type: 'main' }, ...schoolFileTemplates.map((template) => ({ name: template.name || 'Document scolaire', file: template.file, description: template.description, })), ...parentFileTemplates.map((template) => ({ name: template.master_name || 'Document parent', file: template.file, description: template.description, })), ...(sepa_file ? [ { name: 'Mandat SEPA', file: sepa_file, description: 'Mandat SEPA pour prélèvement automatique', }, ] : []), ]; logger.debug(allTemplates); return (