-
-
-
-
{doc.name}
- {doc.hasCertificate && doc.certificateId && (
-
ID: {doc.certificateId}
- )}
+ )}
+
+
+ ) : (
+
+ {/* Folder list */}
+
+ {sortedFolders.map((folder) => (
+
+
+
+
+
+
+
{folder.name}
+
{folder.description}
+
+ #{folder.folderNumber}
+
+
+ {new Date(folder.updated_at).toLocaleDateString()}
+
-
- {doc.hasCertificate ? (
- <>
- Certifié
- {
- showNotification("info", `Téléchargement du certificat pour ${doc.name}...`)
- setTimeout(() => {
- showNotification("success", `Certificat de ${doc.name} téléchargé`)
- sendFolderChatNotification(
- actionModal.folder!.id.toString(),
- `📜 Certificat du document "${doc.name}" téléchargé`,
- "document_certificate_download",
- )
- }, 1500)
- }}
- >
-
- Télécharger
-
- >
- ) : (
-
- Non certifié
-
- )}
-
+
+
+
+ {folder.notes.length > 0 && (
+ {folder.notes.length} notes
+ )}
- ))}
-
-
-
-
Actions groupées
-
-
{
- const certifiedDocs = actionModal.folder!.documents?.filter((doc) => doc.hasCertificate) || []
- showNotification("info", `Téléchargement de ${certifiedDocs.length} certificat(s)...`)
- setTimeout(() => {
- showNotification("success", `${certifiedDocs.length} certificat(s) téléchargé(s)`)
- sendFolderChatNotification(
- actionModal.folder!.id.toString(),
- `📦 Archive des certificats téléchargée (${certifiedDocs.length} documents)`,
- "bulk_certificates_download",
- )
- }, 2000)
- }}
- >
-
- Télécharger tous les certificats (.zip)
-
-
{
- showNotification("info", "Vérification en ligne des certificats...")
- setTimeout(() => {
- showNotification("success", "Tous les certificats sont valides")
- }, 3000)
- }}
- >
-
- Vérifier tous en ligne
-
-
-
-
- >
- )}
-
- {/* Storage Config Modal */}
- {actionModal.type === "storage_config" && actionModal.folder && (
- <>
-
-
- Configuration du stockage temporaire
-
- setActionModal({ type: null, folder: null, folders: [] })}
- >
-
-
-
-
-
-
-
-
-
- Configuration du stockage temporaire
-
-
-
- Configurez la durée de conservation et les informations d'usage pour le dossier{" "}
- {actionModal.folder.name} en stockage temporaire.
-
-
-
-
-
Durée de conservation (en jours)
-
-
-
-
-
- 7 jours
- 15 jours
- 30 jours
- 60 jours
- 90 jours
- 180 jours
- 1 an
-
-
-
- Durée pendant laquelle les données seront conservées en stockage temporaire avant archivage automatique
-
-
-
-
-
-
-
Tiers pouvant avoir accès
-
-
-
-
-
- Information RGPD
-
-
- Ces informations sont utilisées pour assurer la conformité RGPD et la traçabilité des données.
- Elles seront incluses dans le registre des traitements.
-
-
-
-
- setActionModal({ type: null, folder: null, folders: [] })}
- >
- Annuler
-
-
-
- Enregistrer la configuration
-
-
-
- >
- )}
-
- {/* Certificate Modal */}
- {actionModal.type === "certificate" && actionModal.folder && (
- <>
-
-
- Certificat de validation du dossier
-
- setActionModal({ type: null, folder: null, folders: [] })}
- >
-
-
-
-
-
-
-
-
-
-
Dossier certifié
-
- Ce dossier et tous ses documents ont été validés et certifiés numériquement
-
-
-
-
-
-
-
-
Informations du dossier
-
-
- Nom :
- {actionModal.folder.name}
-
-
- Documents :
- {actionModal.folder.documentsCount}
-
-
- Taille totale :
- {actionModal.folder.size}
-
-
- Type :
- {actionModal.folder.type}
-
-
- Hash du dossier :
-
- {Math.random().toString(36).substring(2, 15) +
- Math.random().toString(36).substring(2, 15)}
-
-
-
-
-
-
-
Certificat numérique
-
-
- Émis le :
- {actionModal.folder.modified.toLocaleDateString("fr-FR")}
-
-
- Validé par :
- {actionModal.folder.owner}
-
-
- Autorité :
- DocV Folder Certification
-
-
- ID Certificat :
-
- FOLDER-CERT-{actionModal.folder.id}-{new Date().getFullYear()}
-
-
-
- Validité :
-
- {new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toLocaleDateString("fr-FR")}
-
-
-
-
-
-
-
-
Validation du dossier complet
-
-
-
-
- Intégrité de tous les documents vérifiée
-
-
-
- Structure du dossier validée
-
-
-
- Permissions et accès contrôlés
-
-
-
-
-
- Horodatage certifié pour tous les fichiers
-
-
-
- Conformité RGPD du dossier
-
-
-
- Traçabilité complète des modifications
-
-
-
-
-
-
-
Chaîne de confiance distribuée
-
-
-
-
-
Block #{Math.floor(Math.random() * 1000000)} - Dossier principal
-
-
-
-
{actionModal.folder.documentsCount} documents liés dans la blockchain
-
-
-
-
Réplication sur {Math.floor(Math.random() * 5) + 3} nœuds souverains
-
-
-
-
-
-
Stockage {actionModal.folder.storageType === "permanent" ? "permanent" : "temporaire"} certifié
-
-
-
-
{Math.floor(Math.random() * 100) + 50} confirmations réseau
-
-
-
-
Audit de sécurité: {new Date().toLocaleDateString("fr-FR")}
-
-
-
-
-
- {actionModal.folder.expectedDocuments.length > 0 && (
-
-
Documents attendus - Statut de validation
-
- {actionModal.folder.expectedDocuments.map((doc, index) => (
-
-
-
- {doc.name}
- {doc.required && * }
-
-
-
- {doc.status === "received"
- ? "✓ Validé"
- : doc.status === "pending"
- ? "⏳ En attente"
- : "❌ Manquant"}
-
-
-
- ))}
-
-
- )}
-
-
-
{
- showNotification("success", `Certificat du dossier ${actionModal.folder!.name} téléchargé`);
- sendFolderChatNotification(
- actionModal.folder!.id.toString(),
- `📜 Certificat de validation du dossier téléchargé`,
- "folder_certificate_download",
- );
- }}
- >
-
- Télécharger le certificat (.pdf)
-
-
{
- showNotification("info", "Vérification en ligne du certificat du dossier...");
- setTimeout(() => {
- showNotification("success", "Certificat du dossier vérifié avec succès");
- }, 3000);
- }}
- >
-
- Vérifier en ligne
-
-
{
- showNotification("info", "Préparation de l'archive certifiée...");
- setTimeout(() => {
- showNotification(
- "success",
- `Archive certifiée du dossier ${actionModal.folder!.name} téléchargée`,
- );
- sendFolderChatNotification(
- actionModal.folder!.id.toString(),
- `📦 Archive certifiée complète téléchargée (${actionModal.folder!.documentsCount} documents)`,
- "certified_archive_download",
- );
- }, 4000);
- }}
- >
-
- Archive certifiée (.zip)
-
-
-
- >
- )}
-
- {/* Request Document Modal */}
- {actionModal.type === "request_document" && actionModal.folder && (
- <>
-
-
Demander un document
- setActionModal({ type: null, folder: null, folders: [] })}
- >
-
-
-
-
-
-
-
- Sélectionnez un document attendu pour le dossier {actionModal.folder.name} et
- envoyez une demande à la personne responsable.
-
-
-
-
-
Document à demander
-
-
-
-
-
- {actionModal.folder.expectedDocuments.map((doc) => (
-
-
-
-
- {doc.name}
- {doc.required && * }
-
-
-
- {doc.status === "received"
- ? "Reçu"
- : doc.status === "pending"
- ? "En attente"
- : "Manquant"}
-
- ({doc.assignedRole})
-
-
-
- ))}
-
-
-
-
-
- Message de demande
-
-
-
- setActionModal({ type: null, folder: null, folders: [] })}
- >
- Annuler
-
-
-
- Envoyer la demande
-
-
-
- >
- )}
-