Skip to content
Snippets Groups Projects
Commit 7c9f22bb authored by mhdaltaweel's avatar mhdaltaweel
Browse files

creation doc c fait

parent e56a38bc
No related branches found
No related tags found
1 merge request!2Doc
......@@ -84,6 +84,39 @@ app.get("/document", (req, res) => {
});
// route pour la sauvegarde de documents
app.post('/document/save', async (req, res) => {
try {
const documentData = req.body;
const savedDocumentId = await db.saveDocument(documentData);
res.status(200).json({ message: 'Document sauvegardé avec succès', documentId: savedDocumentId });
} catch (error) {
console.error('Erreur lors de la sauvegarde du document:', error);
res.status(500).json({ message: 'Erreur lors de la sauvegarde du document' });
}
});
// route pour affichier mes docs
app.get("/mes-documents", async (req, res) => {
if (!res.locals.user) {
return res.redirect("/login"); // Redirige vers la page de connexion si l'utilisateur n'est pas connecté
}
try {
// la fonction db.getDocumentsByUserId(userId) renvoie tous les documents pour cet utilisateur
const documents = await db.getDocumentsByUserId(res.locals.user._id);
res.render("index", { documents: documents }); // Passezles documents au template EJS
} catch (error) {
console.error('Erreur lors de la récupération des documents:', error);
res.status(500).send('Erreur lors de la récupération des documents');
}
});
app.all("*", (req, res) => res.status(404).send("<h1>Il semblerait que cette page n'existe pas.</h1>"));
......
......@@ -60,6 +60,33 @@ class Database{
};
}
// sauvgarde le fichier
async saveDocument(documentData) {
// Vérifie si le document a un ID pour déterminer si c'est une création ou une mise à jour
if (documentData._id) {
// Convertir _id en un objet ObjectId
const documentId = documentData._id;
delete documentData._id; // Retire _id des données car on ne peut pas le mettre à jour
const result = await this.#db.collection('documents').updateOne(
{ _id: new this.#client.ObjectId(documentId) },
{ $set: documentData }
);
return result.upsertedId || documentId; // Retourne l'ID mis à jour ou l'ID existant
} else {
// C'est un nouveau document, utilisez la méthode insert
const result = await this.insert('documents', documentData);
return result; // Retourne l'ID du nouveau document créé
}
}
// chercher les docs d'un utilisateur
async getDocumentsByUserId(userId) {
return await this.#db.collection('documents').find({ auteur: userId }).toArray();
}
// Gestion des Collections
async createPartage(userId, documentId) {
await this.insert('partage', { userId, documentId });
......
......@@ -10,6 +10,7 @@
<body>
<%- include('partials/header') %>
<div class="spreadsheet-container">
<button onclick="sauvegarderDocument()">Sauvegarder</button>
<table>
<% for(let row = 0; row < 18; row++) { %>
<tr>
......@@ -27,6 +28,43 @@
<script>
// JavaScript pour la gestion des événements peut être ajouté ici
function sauvegarderDocument() {
const tableau = [];
const lignes = document.querySelectorAll("table tr");
lignes.forEach((ligne, rowIndex) => {
if (rowIndex === 0) return; // Ignorer l'en-tête
const cellules = ligne.querySelectorAll("td");
const rowData = Array.from(cellules).map(cell => cell.innerText || "");
tableau.push(rowData);
});
// Créer un objet pour envoyer
const documentData = {
nom: "Nom du Document", // le rendre dynamique si nécessaire
contenu: tableau
};
// Appel AJAX pour envoyer les données
envoyerDonnees(documentData);
}
function envoyerDonnees(data) {
fetch('/document/save', { // Mette ici ton URL de sauvegarde
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log('Succès:', data);
// Traite ici le retour de la sauvegarde
})
.catch((error) => {
console.error('Erreur:', error);
});
}
</script>
</body>
<%- include('partials/footer') %>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment