api/resources/Task/TaskController.js
Sibunnayak b8e525e774 TASK
2024-08-20 15:21:27 +05:30

92 lines
2.2 KiB
JavaScript

import Task from "./TaskModel.js";
import SalesCoOrdinator from "../SalesCoOrdinators/SalesCoOrdinatorModel.js";
import crypto from "crypto";
export const assignTask = async (req, res) => {
try {
const {
task,
note,
taskPriority,
taskDueDate,
taskAssignedTo,
addedFor,
addedForId,
} = req.body;
// console.log(req.body);
const currentYear = new Date().getFullYear().toString().slice(-2);
const randomChars = crypto.randomBytes(4).toString("hex").toUpperCase();
const uniqueId = `${currentYear}-${randomChars}`;
// Create a new task
const newTask = await Task.create({
taskId: uniqueId,
task,
note,
taskStatus: "Pending",
taskPriority,
taskDueDate,
taskAssignedTo,
taskAssignedBy: req.user._id, // The Territory Manager's ID
addedFor,
addedForId,
});
res.status(201).json({
success: true,
message: "Task assigned successfully",
task: newTask,
});
} catch (error) {
res.status(400).json({
success: false,
message: error.message,
});
}
};
export const getTasksForSalesCoordinator = async (req, res) => {
try {
const tasks = await Task.find({ taskAssignedTo: req.user._id });
res.status(200).json({
success: true,
tasks,
});
} catch (error) {
res.status(400).json({
success: false,
message: error.message,
});
}
};
export const updateTaskStatus = async (req, res) => {
try {
const { taskId } = req.params;
// Find the task to ensure it belongs to the logged-in Sales Coordinator
const task = await Task.findOne({ _id: taskId, taskAssignedTo: req.user._id });
if (!task) {
return res.status(404).json({
success: false,
message: "Task not found or you're not authorized to update this task.",
});
}
// Update the task status to "Completed"
task.taskStatus = "Completed";
await task.save();
res.status(200).json({
success: true,
message: "Task status updated to Completed.",
task,
});
} catch (error) {
res.status(400).json({
success: false,
message: error.message,
});
}
};