Spaces:
Running
Running
| // import axios from 'axios'; | |
| import Task from '../models/task.model.js'; | |
| // import dotenv from 'dotenv'; | |
| export const createTask = async(req, res)=>{ | |
| try{ | |
| const {title, description, date, isCompleted} = req.body; | |
| const userId = req.userId; | |
| console.log("Received Date: ", date); | |
| const task = new Task({title,description,date, isCompleted, user: userId}) | |
| await task.save(); | |
| res.status(201).json(task); | |
| }catch(err){ | |
| res.status(500).json({message: "Failed to create Task",err}); | |
| } | |
| } | |
| export const getTasks = async(req, res)=>{ | |
| try{ | |
| const userId = req.userId; | |
| const {date} = req.query; | |
| console.log(date); | |
| const query = date? {date, user: userId} : {user: userId};// if date is provided filter tasks by date | |
| const tasks = await Task.find(query);// fetch task with the query | |
| res.status(200).json(tasks); | |
| }catch(err){ | |
| res.status(500).json({message : "Failed to get tasks"}); | |
| } | |
| } | |
| export const getTask = async(req, res)=>{ | |
| try{ | |
| const {id} = req.params; | |
| const userId = req.userId; | |
| const task = await Task.findOne({_id: id, user: userId}); | |
| if(task){ | |
| res.status(201).json(task); | |
| }else{ | |
| res.status(404).json({message: 'Task not found'}); | |
| } | |
| }catch(err){ | |
| res.status(500).json({message: "Failed to fetch the task"}); | |
| } | |
| } | |
| export const getTaskByDate = async(req, res)=>{ | |
| try{ | |
| const userId = req.userId; | |
| const {date} = req.params; | |
| const tasks = await Task.find({date : new Date(date), user: userId}); | |
| res.status(200).json(tasks); | |
| }catch(err){ | |
| res.status(500).json({message: "Failed to get task by date"}, err); | |
| } | |
| } | |
| export const getMonthlyTaskStats = async (req, res) => { | |
| try { | |
| const { year, month } = req.query; | |
| const userId = req.userId; | |
| const startDate = new Date(year, month - 1, 1); | |
| const endDate = new Date(year, month, 0); | |
| const tasks = await Task.find({ date: { $gte: startDate, $lte: endDate }, user: userId }); | |
| const totalTasks = tasks.length; | |
| const completedTasks = tasks.filter(task => task.isCompleted).length; | |
| const remainingTasks = totalTasks - completedTasks; | |
| res.status(200).json({ totalTasks, completedTasks, remainingTasks }); | |
| } catch (error) { | |
| res.status(500).json({ message: 'Failed to get task statistics', error }); | |
| } | |
| }; | |
| export const updateTask = async(req, res)=>{ | |
| try{ | |
| const {id} = req.params; | |
| const userId = req.userId; | |
| const {title, description, date, isCompleted} = req.body; | |
| const updatedTask = await Task.findOneAndUpdate( | |
| { _id: id, user: userId }, // Ensure the task belongs to the user | |
| { title, description, date, isCompleted }, | |
| { new: true } | |
| ); | |
| if (updatedTask) { | |
| res.status(200).json(updatedTask); | |
| } else { | |
| res.status(404).json({ message: 'Task not found' }); | |
| } | |
| }catch(err){ | |
| res.status(500).json({message: "Failed to update the task", err}); | |
| } | |
| } | |
| export const deleteTask = async(req, res)=>{ | |
| try{ | |
| const userId = req.userId; | |
| const {id} = req.params; | |
| await Task.findOneAndDelete({_id: id, user: userId}); | |
| res.status(200).json({message : "Deleted successfully"}); | |
| }catch(err){ | |
| res.status(500).json({message: "Failed to delete the task"}); | |
| } | |
| } | |