request_doc_roles_with_localstorage_ok

This commit is contained in:
Pascal 2024-11-25 10:59:36 +01:00
parent 36f37a8549
commit 391fe2e290

View File

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