Compare commits
No commits in common. "1d1330dfe315814616613317d5f88af7ca287363" and "2c6e38094ca78c0f414825f2375794237913162a" have entirely different histories.
1d1330dfe3
...
2c6e38094c
9
app.js
9
app.js
@ -202,9 +202,6 @@ import RDOrderRoute from "./resources/RD_Ordes/rdOrderRoutes.js"
|
|||||||
import TaskRoute from "./resources/Task/TaskRoute.js";
|
import TaskRoute from "./resources/Task/TaskRoute.js";
|
||||||
// visit RD and PD
|
// visit RD and PD
|
||||||
import VisitRDandPDRoute from "./resources/VisitRD&PD/VisitRD&PDRoute.js";
|
import VisitRDandPDRoute from "./resources/VisitRD&PD/VisitRD&PDRoute.js";
|
||||||
// announcement
|
|
||||||
import AnnouncementRoute from './resources/Announcement/announcementRouter.js'
|
|
||||||
|
|
||||||
//Stock
|
//Stock
|
||||||
import Stock from "./resources/Stock/StockRoute.js";
|
import Stock from "./resources/Stock/StockRoute.js";
|
||||||
app.use("/api/v1", user);
|
app.use("/api/v1", user);
|
||||||
@ -289,12 +286,6 @@ app.use("/api",RDRoute)
|
|||||||
app.use("/api",RDOrderRoute)
|
app.use("/api",RDOrderRoute)
|
||||||
// visit RD and PD
|
// visit RD and PD
|
||||||
app.use("/api", VisitRDandPDRoute);
|
app.use("/api", VisitRDandPDRoute);
|
||||||
|
|
||||||
// Announcemnt
|
|
||||||
|
|
||||||
app.use('/api',AnnouncementRoute)
|
|
||||||
|
|
||||||
|
|
||||||
//config specialty
|
//config specialty
|
||||||
// app.use("/api/config/specialty", SpecialtiesRouter);
|
// app.use("/api/config/specialty", SpecialtiesRouter);
|
||||||
//specialties
|
//specialties
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
import { AnnouncemntModal } from "./announcementModal.js";
|
|
||||||
|
|
||||||
export const createAnnouncemnet = async (req, res) => {
|
|
||||||
const { sentTo, message } = req.body;
|
|
||||||
|
|
||||||
if (!sentTo || !message) {
|
|
||||||
return res.status(400).send("Send to and message are required");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const newAnnouncement = new AnnouncemntModal({ sentTo, message });
|
|
||||||
await newAnnouncement.save();
|
|
||||||
res.status(201).json({ message: "Announcement created" });
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err);
|
|
||||||
res.status(500).json({ error: "Server error" });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAnnouncements = async (req, res) => {
|
|
||||||
const { page = 1, rowsPerPage = 5 } = req.query;
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Calculate pagination parameters
|
|
||||||
const skip = (page - 1) * rowsPerPage;
|
|
||||||
const limit = parseInt(rowsPerPage, 10);
|
|
||||||
|
|
||||||
// Get total count of announcements
|
|
||||||
const totalAnnouncements = await AnnouncemntModal.countDocuments();
|
|
||||||
|
|
||||||
// Fetch announcements with pagination
|
|
||||||
const announcements = await AnnouncemntModal.find()
|
|
||||||
.skip(skip)
|
|
||||||
.limit(limit)
|
|
||||||
.sort({ createdAt: -1 }); // Sort by timestamp (most recent first)
|
|
||||||
|
|
||||||
res.status(200).json({
|
|
||||||
announcements,
|
|
||||||
totalAnnouncements,
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
res.status(500).json({ message: "Error fetching announcements", error });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 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 announcements = await AnnouncemntModal.find({ sentTo: role });
|
|
||||||
res.status(200).json(announcements);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
res.status(500).json({ error: "Server error" });
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,35 +0,0 @@
|
|||||||
import mongoose from "mongoose";
|
|
||||||
import { nanoid } from "nanoid";
|
|
||||||
|
|
||||||
const announcementSchema = new mongoose.Schema(
|
|
||||||
{
|
|
||||||
uniqueId: {
|
|
||||||
type: String,
|
|
||||||
unique: true,
|
|
||||||
},
|
|
||||||
sentTo: {
|
|
||||||
type: [String],
|
|
||||||
enum: ["PDs", "RDs", "SCs", "TMs"],
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
message: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
maxlength: 250,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ timestamps: true }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Pre-save middleware to dynamically generate a uniqueId before saving
|
|
||||||
announcementSchema.pre("save", function (next) {
|
|
||||||
if (!this.uniqueId) {
|
|
||||||
this.uniqueId = nanoid(6); // Generate a 6-character unique ID
|
|
||||||
}
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
|
|
||||||
export const AnnouncemntModal = mongoose.model(
|
|
||||||
"Announcements",
|
|
||||||
announcementSchema
|
|
||||||
);
|
|
@ -1,33 +0,0 @@
|
|||||||
import express from "express";
|
|
||||||
import { authorizeRoles, isAuthenticatedUser } from "../../middlewares/auth.js";
|
|
||||||
import {
|
|
||||||
createAnnouncemnet,
|
|
||||||
getAnnouncements,
|
|
||||||
getAnnouncementsByRole,
|
|
||||||
} from "./announcementController.js";
|
|
||||||
import { isAuthenticatedRD } from "../../middlewares/rdAuth.js";
|
|
||||||
import { isAuthenticatedSalesCoOrdinator } from "../../middlewares/SalesCoOrdinatorAuth.js";
|
|
||||||
import { isAuthenticatedTerritoryManager } from "../../middlewares/TerritoryManagerAuth.js";
|
|
||||||
|
|
||||||
const router = express.Router();
|
|
||||||
|
|
||||||
router
|
|
||||||
.route("/announcement/create")
|
|
||||||
.post(isAuthenticatedUser, authorizeRoles("admin"), createAnnouncemnet);
|
|
||||||
router
|
|
||||||
.route("/announcement/get")
|
|
||||||
.get(isAuthenticatedUser, authorizeRoles("admin"), getAnnouncements);
|
|
||||||
router
|
|
||||||
.route("/announcement/RDs")
|
|
||||||
.get(isAuthenticatedRD, getAnnouncementsByRole);
|
|
||||||
router
|
|
||||||
.route("/announcement/PDs")
|
|
||||||
.get(isAuthenticatedUser, getAnnouncementsByRole);
|
|
||||||
router
|
|
||||||
.route("/announcement/SCs")
|
|
||||||
.get(isAuthenticatedSalesCoOrdinator, getAnnouncementsByRole);
|
|
||||||
router
|
|
||||||
.route("/announcement/TMs")
|
|
||||||
.get(isAuthenticatedTerritoryManager, getAnnouncementsByRole);
|
|
||||||
|
|
||||||
export default router;
|
|
Loading…
Reference in New Issue
Block a user