diff --git a/src/pages/signature/signature.ts b/src/pages/signature/signature.ts index eee287c..be740b6 100755 --- a/src/pages/signature/signature.ts +++ b/src/pages/signature/signature.ts @@ -994,11 +994,11 @@ function submitNewDocument(event: Event) { const form = document.getElementById('newDocumentForm') as HTMLFormElement; if (!form) { - showAlert('Form not found'); + showAlert('Formulaire non trouvé'); return; } - // Get form values + // Récupération des valeurs du formulaire const processId = Number((form.querySelector('#processId') as HTMLInputElement)?.value); const documentId = Number((form.querySelector('#documentId') as HTMLInputElement)?.value); const documentName = (form.querySelector('#documentName') as HTMLInputElement)?.value?.trim(); @@ -1008,64 +1008,83 @@ function submitNewDocument(event: Event) { // Validation if (!documentName || !description || !deadline) { - showAlert('Please fill in all required fields'); + showAlert('Veuillez remplir tous les champs obligatoires'); return; } - // Mettre à jour à la fois le mock local et le localStorage - let groups = JSON.parse(localStorage.getItem('groups') || JSON.stringify(groupsMock)); - const group = groups.find((g: Group) => g.id === processId); - - if (!group) { - showAlert('Process not found'); - return; + try { + // Récupérer les données actuelles + const groups = JSON.parse(localStorage.getItem('groups') || JSON.stringify(groupsMock)); + const group = groups.find((g: Group) => g.id === processId); + + if (!group) { + showAlert('Processus non trouvé'); + return; + } + + const role = group.roles.find((r: any) => { + return r.documents?.some((d: any) => d.id === documentId); + }); + + if (!role) { + showAlert('Rôle non trouvé'); + return; + } + + // Créer le nouveau document avec les signatures des membres du rôle + const updatedDocument = { + id: documentId, + name: documentName, + description: description, + createdAt: new Date().toISOString(), + deadline: deadline, + visibility: visibility, + status: "pending", + // Ajouter les signatures pour tous les membres du rôle + signatures: role.members.map((member: { id: string | number; name: string }) => ({ + member: member, + signed: false, + signedAt: null + })) + }; + + // Mettre à jour le document dans le rôle + const documentIndex = role.documents.findIndex((d: any) => d.id === documentId); + if (documentIndex !== -1) { + role.documents[documentIndex] = updatedDocument; + } + + // Sauvegarder dans le localStorage + localStorage.setItem('groups', JSON.stringify(groups)); + + // Mettre à jour également groupsMock pour la cohérence + const mockGroup = groupsMock.find(g => g.id === processId); + if (mockGroup) { + const mockRole = mockGroup.roles.find(r => r.name === role.name); + if (mockRole && mockRole.documents) { + const mockDocIndex = mockRole.documents.findIndex(d => d.id === documentId); + if (mockDocIndex !== -1) { + mockRole.documents[mockDocIndex] = { + ...updatedDocument, + status: undefined + }; + } + } + } + + // Fermer le modal + if (event.target instanceof HTMLElement) { + closeModal(event.target); + } + + // Recharger la vue des documents avec les données mises à jour + showRoleDocuments(role, group); + showAlert('Document mis à jour avec succès!'); + + } catch (error) { + console.error('Erreur lors de la sauvegarde:', error); + showAlert('Une erreur est survenue lors de la sauvegarde'); } - - // Trouver le rôle qui contient le document - const role = group.roles.find((r: any) => { - return r.documents?.some((d: any) => d.id === documentId); - }); - - if (!role) { - showAlert('Role not found'); - return; - } - - const documentIndex = role.documents.findIndex((d: any) => d.id === documentId); - - const updatedDocument = { - id: documentId, - name: documentName, - description: description, - createdAt: new Date().toISOString(), - deadline: deadline, - visibility: visibility, - status: "pending", - signatures: role.members.map((member: { id: string | number; name: string }) => ({ - member: member, - signed: false, - signedAt: null - })) - }; - - // Mettre à jour le document dans le rôle - if (documentIndex !== -1) { - role.documents[documentIndex] = updatedDocument; - } - - // Mettre à jour le localStorage et le mock global - localStorage.setItem('groups', JSON.stringify(groups)); - Object.assign(groupsMock, groups); - - // Fermer le modal - if (event.target instanceof HTMLElement) { - closeModal(event.target); - } - - // Recharger la vue des documents - showRoleDocuments(role, group); - - showAlert('Document updated successfully!'); } window.submitNewDocument = submitNewDocument;