This commit is contained in:
Sibunnayak 2024-10-17 14:02:28 +05:30
commit 9a4e7912b8
4 changed files with 81 additions and 16 deletions

View File

@ -46,13 +46,31 @@ export const getAnnouncements = async (req, res) => {
// Get announcements for a specific role (RDs, PDs, SCs, or TMs)
// Controller to get announcements for a specific role
export const getAnnouncementsByRole = async (req, res) => {
try {
// Extract role from the URL path, e.g., 'RDs', 'PDs', etc.
const role = req.path.split("/").pop();
console.log("role");
const { page = 1, rowsPerPage = 5 } = req.query; // Extract pagination params
const announcements = await AnnouncemntModal.find({ sentTo: role });
res.status(200).json(announcements);
try {
// Extract role from the URL path
const role = req.path.split("/").pop();
// Calculate pagination parameters
const skip = (page - 1) * rowsPerPage;
const limit = parseInt(rowsPerPage, 10);
// Get total count of announcements for the given role
const totalAnnouncements = await AnnouncemntModal.countDocuments({
sentTo: role,
});
// Fetch announcements with pagination for the given role
const announcements = await AnnouncemntModal.find({ sentTo: role })
.skip(skip)
.limit(limit)
.sort({ createdAt: -1 });
res.status(200).json({
announcements,
totalAnnouncements,
});
} catch (err) {
console.error(err);
res.status(500).json({ error: "Server error" });

View File

@ -1,3 +1,4 @@
import { getStartAndEndOfDay } from "../Task/TaskController.js";
import { Notification } from "./notificationModal.js";
export const getNotification = async (req, res) => {
@ -54,3 +55,39 @@ export const getSingleNotification = async (req, res) => {
.json({ return_message: "Something went wrong", error });
}
};
export const getNotificationByDates = async (req, res) => {
try {
const filter = { added_for: req.user._id }; // Default filter by user ID
// Get the date from the query and parse it
const { Date: queryDate } = req.query;
let notificationDate = queryDate
? new Date(queryDate.split("/").reverse().join("-")) // Convert DD/MM/YYYY to YYYY-MM-DD
: new Date(); // Default to today's date
// Get the start and end of the day
const { startOfDay, endOfDay } = getStartAndEndOfDay(notificationDate);
// Find notifications filtered by user and date range
const notifications = await Notification.find({
...filter,
createdAt: { $gte: startOfDay, $lte: endOfDay },
}).sort({ createdAt: -1 });
if (notifications.length > 0) {
return res.status(200).json({
success: true,
notifications,
});
}
return res
.status(404)
.json({ success: false, message: "No notifications found" });
} catch (error) {
res.status(500).json({
success: false,
message: error.message,
});
}
};

View File

@ -1,6 +1,9 @@
import express from "express";
import { isAuthenticatedSalesCoOrdinator } from "../../middlewares/SalesCoOrdinatorAuth.js";
import { getNotification } from "./notificationController.js";
import {
getNotification,
getNotificationByDates,
} from "./notificationController.js";
import { isAuthenticatedTerritoryManager } from "../../middlewares/TerritoryManagerAuth.js";
import { isAuthenticatedUser } from "../../middlewares/auth.js";
import { isAuthenticatedRD } from "../../middlewares/rdAuth.js";
@ -9,7 +12,7 @@ const router = express.Router();
router
.route("/get-notification-sc")
.get(isAuthenticatedSalesCoOrdinator, getNotification);
.get(isAuthenticatedSalesCoOrdinator, getNotificationByDates);
router
.route("/get-notification-sc/:id")
@ -17,13 +20,17 @@ router
router
.route("/get-notification-tm")
.get(isAuthenticatedTerritoryManager, getNotification);
.get(isAuthenticatedTerritoryManager, getNotificationByDates);
router
.route("/get-notification-tm/:id")
.get(isAuthenticatedTerritoryManager, getNotification);
router.route("/get-notification-pd").get(isAuthenticatedUser, getNotification);
router.route("/get-notification-rd").get(isAuthenticatedRD, getNotification);
router
.route("/get-notification-pd")
.get(isAuthenticatedUser, getNotificationByDates);
router
.route("/get-notification-rd")
.get(isAuthenticatedRD, getNotificationByDates);
export default router;

View File

@ -168,7 +168,7 @@ export const getTasksByStatus = async (req, res) => {
});
}
};
const getStartAndEndOfDay = (date) => {
export const getStartAndEndOfDay = (date) => {
const startOfDay = new Date(date);
startOfDay.setUTCHours(0, 0, 0, 0); // Start of the day UTC
@ -187,7 +187,7 @@ export const getTasksByDates = async (req, res) => {
console.log(req.userType);
// Determine the filter based on user type
if (req.userType === "SalesCoOrdinator") {
filter.taskAssignedTo = req.user._id; // Use `=` to assign values, and `===` for comparison
filter.taskAssignedTo = req.user._id; // Use `=` to assign values, and `===` for comparison
} else {
filter.taskAssignedBy = req.user._id;
}
@ -209,11 +209,14 @@ export const getTasksByDates = async (req, res) => {
// Find tasks for the user, filtered by createdAt within the start and end of the day
const tasks = await Task.find({
...filter, // Use the filter object for querying
...filter, // Use the filter object for querying
createdAt: { $gte: startOfDay, $lte: endOfDay },
})
.populate({
path: req.userType === "SalesCoOrdinator" ? "taskAssignedBy" : "taskAssignedTo", // Change path based on user type
path:
req.userType === "SalesCoOrdinator"
? "taskAssignedBy"
: "taskAssignedTo", // Change path based on user type
select: "name mobileNumber email",
})
.sort({ createdAt: -1 });