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;
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;