request_doc_roles_with_localstorage_ok
This commit is contained in:
parent
36f37a8549
commit
391fe2e290
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user