From 722e0603bca5a322b98e167ff4b6e4afd4c5bdd7 Mon Sep 17 00:00:00 2001
From: javdiaort <javdiaort@alum.us.es>
Date: Tue, 18 Mar 2025 12:55:14 +0100
Subject: [PATCH] falta base de datos que las tareas se actualicen

---
 src/config.js    | 12 ++++++------
 src/index.js     | 46 ++++++++++++++++++++++++++++++++++------------
 src/taskModel.js | 22 ++++++++++++++++++++++
 views/home.ejs   | 13 +++++--------
 4 files changed, 67 insertions(+), 26 deletions(-)
 create mode 100644 src/taskModel.js

diff --git a/src/config.js b/src/config.js
index 8b630f9..903222d 100644
--- a/src/config.js
+++ b/src/config.js
@@ -4,13 +4,13 @@ const connect = mongoose.connect("mongodb://localhost:27017/Login")
 // check database connected or not
 
 //Create a schema
-const loginSchema=new mongoose.Schema({
-    name:{
-        type:String,
-        required:true
+const loginSchema = new mongoose.Schema({
+    name: {
+        type: String,
+        required: true
     },
-    password:{
-        type:String,
+    password: {
+        type: String,
         required: true
     }
 });
diff --git a/src/index.js b/src/index.js
index aa81c9a..8253509 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,7 +3,7 @@ const pasth = require('path');
 const bcrypt = require('bcrypt');
 const bcrypt2 = require('bcryptjs');
 const collection=require("./config");
-
+const Task = require('./taskModel'); // Asegúrate de requerir el modelo de Task
 const app = express();
 const session = require("express-session");
 const MongoStore = require("connect-mongo");
@@ -104,24 +104,46 @@ app.post("/login", async (req, res) => {
 
 // PARTE TODO LIST 
 
-app.get("/todo", async (req, res) => {
-    if (!req.session.userId) {
-        return res.redirect("/"); // Redirigir si no está logueado
-    }
+app.get("/home", async (req, res) => {
+    try {
+        // Obtener todas las tareas del usuario
+        const tasks = await Task.find({ userId: req.session.userId });
 
-    const user = await collection.findById(req.session.userId);
-    res.render("index", { tasks: user.tasks });
+        // Renderizar la vista "home.ejs" con las tareas del usuario
+        res.render("home", { tasks: tasks });
+    } catch (error) {
+        console.error("Error al obtener tareas:", error);
+        res.status(500).send("Error al obtener tareas");
+    }
 });
 
+
+
 //agregar tareas 
 app.post("/add", async (req, res) => {
-    if (!req.session.userId) return res.redirect("/");
+    try {
+        // Obtén el usuario de la base de datos usando el userId almacenado en la sesión
+        const user = await collection.findOne({ _id: req.session.userId });
 
-    const user = await collection.findById(req.session.userId);
-    user.tasks.push({ text: req.body.task });
-    await user.save();
+        if (!user) {
+            return res.status(404).send("Usuario no encontrado");
+        }
 
-    res.redirect("/todo");
+        // Crear una nueva tarea
+        const newTask = new Task({
+            text: req.body.task,
+            userId: req.session.userId // Asocia la tarea al usuario
+        });
+
+        // Guardar la nueva tarea en la base de datos
+        await newTask.save();
+
+        // Redirigir al usuario a la página de inicio con las tareas actualizadas
+        res.redirect("/home"); //CUIDADO
+    } catch (error) {
+        console.error("Error al agregar tarea:", error);
+        res.status(500).send("Error al agregar tarea");
+    }
 });
 
 //eliminar tareas
diff --git a/src/taskModel.js b/src/taskModel.js
new file mode 100644
index 0000000..c6764ba
--- /dev/null
+++ b/src/taskModel.js
@@ -0,0 +1,22 @@
+const mongoose = require("mongoose");
+
+const taskSchema = new mongoose.Schema({
+    text: {
+        type: String,
+        required: true
+    },
+    createdAt: {
+        type: Date,
+        default: Date.now
+    },
+    userId: {
+        type: mongoose.Schema.Types.ObjectId, // Referencia al usuario
+        required: true,
+        ref: "users" // Esto indica que "userId" es una referencia a la colección "users"
+    }
+});
+
+// Crear el modelo de la colección "tasks"
+const Task = mongoose.model("tasks", taskSchema);
+
+module.exports = Task;
\ No newline at end of file
diff --git a/views/home.ejs b/views/home.ejs
index 9902e34..50098a8 100644
--- a/views/home.ejs
+++ b/views/home.ejs
@@ -3,29 +3,26 @@
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Home Page</title>
+    <title>Tu Lista de Tareas</title>
 </head>
 <body>
-
     <h1>Tu Lista de Tareas</h1>
 
     <% if (tasks && tasks.length > 0) { %>
         <ul>
             <% tasks.forEach(task => { %>
-                <li><%= task.text %></li>
+                <li><%= task.text %> - <%= task.createdAt.toLocaleString() %></li>
             <% }); %>
         </ul>
     <% } else { %>
-        <p>No tienes tareas aún.</p>
+        <p>No tienes tareas.</p>
     <% } %>
-    
 
     <form action="/add" method="POST">
         <input type="text" name="task" placeholder="Nueva tarea" required>
-        <button type="submit">Agregar</button>
+        <button type="submit">Agregar tarea</button>
     </form>
 
-    <a href="/logout">Cerrar Sesión</a>
-
+    <a href="/logout">Cerrar sesión</a>
 </body>
 </html>
-- 
GitLab