import React, { useState } from 'react'; import Table from '@/components/Table'; import FileUpload from '@/components/Form/FileUpload'; import { Upload, Eye, Trash2, FileText } from 'lucide-react'; import { BASE_URL } from '@/utils/Url'; import Popup from '@/components/Popup'; import logger from '@/utils/logger'; export default function FilesToUpload({ parentFileTemplates, uploadedFiles, onFileUpload, onFileDelete, enable = true, }) { const [selectedFile, setSelectedFile] = useState(null); // État pour le fichier sélectionné const [actionType, setActionType] = useState(null); const [popupVisible, setPopupVisible] = useState(false); const [popupMessage, setPopupMessage] = useState(''); const [removePopupVisible, setRemovePopupVisible] = useState(false); const [removePopupMessage, setRemovePopupMessage] = useState(''); const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {}); // Vérification si un fichier est déjà uploadé const isFileUploaded = (file) => { return file && file.fileName; // Si `fileName` est défini, le fichier est considéré comme téléversé }; // Récupération d'un fichier uploadé const getUploadedFile = (templateId) => { return uploadedFiles.find( (file) => parseInt(file.id) === templateId && file.fileName ); }; const handleUpload = (file, selectedFile) => { if (!file || !selectedFile) { logger.error('Données manquantes pour le téléversement.'); return; } // Appeler la fonction de téléversement passée en prop onFileUpload(file, selectedFile) .then((response) => { // Mettre à jour uploadedFiles avec les nouvelles données const updatedFiles = uploadedFiles.map((f) => f.id === selectedFile.id ? { ...f, fileName: response.data.fileName, file: response.data.file_url, } : f ); // Si le fichier n'existe pas encore, l'ajouter if (!updatedFiles.find((f) => f.id === selectedFile.id)) { updatedFiles.push({ id: selectedFile.id, fileName: response.data.fileName, file: response.data.file_url, }); } }) .catch((error) => { logger.error('Erreur lors du téléversement du fichier :', error); }); // Mettre à jour l'état local setSelectedFile(null); setActionType(null); // Réinitialiser l'action après l'upload }; // Définition des colonnes const columns = [ { name: 'Nom du fichier', transform: (row) => row.master_name }, { name: 'Description du fichier', transform: (row) => row.master_description, }, { name: 'Priorité', transform: (row) => row.is_required ? ( Requis ) : ( Optionnel ), }, { name: 'Statut', transform: (row) => { const uploadedFile = getUploadedFile(row.id); return ( {isFileUploaded(uploadedFile) ? 'Chargé' : 'A ajouter'} ); }, }, { name: 'Actions', transform: (row) => { const uploadedFile = getUploadedFile(row.id); return (
{uploadedFile && ( <> {enable && ( )} )} {!uploadedFile && ( )}
); }, }, ]; return (

Pièces à fournir

Ajoutez les documents pour compléter votre inscription

{selectedFile && (
{actionType === 'view' && selectedFile.fileName ? (