diff --git a/resources/Orders/CheckoutController.js b/resources/Orders/CheckoutController.js index b7eb5b4..b4790ae 100644 --- a/resources/Orders/CheckoutController.js +++ b/resources/Orders/CheckoutController.js @@ -110,9 +110,8 @@ export const createOrderCheckout = async (req, res) => { })); let addss = await ShippingAddress.findById(address); let shipping = { - first_Name: addss.first_Name, - last_Name: addss.last_Name, - phone_Number: addss.phone_Number, + Name: addss.Name, + phoneNumber: addss.phoneNumber, street: addss.street, city: addss.city, state: addss.state, diff --git a/resources/Orders/PosCheckoutController.js b/resources/Orders/PosCheckoutController.js index fd1ee6b..c9cd38b 100644 --- a/resources/Orders/PosCheckoutController.js +++ b/resources/Orders/PosCheckoutController.js @@ -43,9 +43,8 @@ export const poscreateOrderCheckout = async (req, res) => { let addss = await ShippingAddress.findById(address); let shipping = { - first_Name: addss.first_Name, - last_Name: addss?.last_Name, - phone_Number: addss?.phone_Number, + Name: addss.Name, + phoneNumber: addss?.phoneNumber, street: addss?.street, city: addss?.city, state: addss?.state, diff --git a/resources/Orders/RazerPayCheckoutController.js b/resources/Orders/RazerPayCheckoutController.js index 883dd06..2ea55ca 100644 --- a/resources/Orders/RazerPayCheckoutController.js +++ b/resources/Orders/RazerPayCheckoutController.js @@ -180,9 +180,8 @@ export const checkout = async (req, res) => { let addss = await ShippingAddress.findById(address); let shipping = { - first_Name: addss.first_Name, - last_Name: addss?.last_Name, - phone_Number: addss?.phone_Number, + Name: addss.Name, + phoneNumber: addss?.phoneNumber, street: addss?.street, city: addss?.city, state: addss?.state, @@ -662,9 +661,8 @@ export const handlePayment = async (req, res) => { let addss = await ShippingAddress.findById(address); // console.log(addss?.postalCode); let shipping = { - first_Name: addss.first_Name, - last_Name: addss.last_Name, - phone_Number: addss.phone_Number, + Name: addss.Name, + phoneNumber: addss.phoneNumber, street: addss.street, city: addss.city, state: addss.state, diff --git a/resources/Orders/StripeCheckOutController.js b/resources/Orders/StripeCheckOutController.js index f08784b..c992303 100644 --- a/resources/Orders/StripeCheckOutController.js +++ b/resources/Orders/StripeCheckOutController.js @@ -51,9 +51,8 @@ export const handlePayment = async (req, res) => { let addss = await ShippingAddress.findById(address); let shipping = { - first_Name: addss.first_Name, - last_Name: addss.last_Name, - phone_Number: addss.phone_Number, + Name: addss.Name, + phoneNumber: addss.phoneNumber, street: addss.street, city: addss.city, state: addss.state, diff --git a/resources/ShippingAddresses/ShippingAddressController.js b/resources/ShippingAddresses/ShippingAddressController.js index 7a83833..5e12e47 100644 --- a/resources/ShippingAddresses/ShippingAddressController.js +++ b/resources/ShippingAddresses/ShippingAddressController.js @@ -2,28 +2,17 @@ import ShippingAddress from "./ShippingAddressModel.js"; export const AddshippingAddress = async (req, res) => { // console.log("request came here"); try { - const { - first_Name, - last_Name, - phone_Number, - street, - city, - state, - postalCode, - country, - } = req.body; + const { Name, phoneNumber, street, city, state, postalCode, country } = + req.body; // console.log(req.body); switch (true) { //validation - case !first_Name: { - return res.status(404).json({ msg: "please provide first_Name" }); + case !Name: { + return res.status(404).json({ msg: "please provide Name" }); } - case !last_Name: { - return res.status(404).json({ msg: "please provide last_Name" }); - } - case !phone_Number: { - return res.status(404).json({ msg: "please provide phone_Number" }); + case !phoneNumber: { + return res.status(404).json({ msg: "please provide phoneNumber" }); } case !street: { return res.status(404).json({ msg: "please provide street" }); @@ -60,6 +49,8 @@ export const AddshippingAddress = async (req, res) => { export const AddshippingAddressByAdmin = async (req, res) => { try { const { + Name, + phoneNumber, street, city, state, @@ -69,14 +60,18 @@ export const AddshippingAddressByAdmin = async (req, res) => { tradeName, gstNumber, } = req.body; - + // console.log(req.body); // Validate required fields if (!street || !city || !state || !postalCode || !panNumber) { - return res.status(400).json({ msg: "Please provide all required fields" }); + return res + .status(400) + .json({ msg: "Please provide all required fields" }); } // Create shipping address object const newAddress = await ShippingAddress.create({ + Name, + phoneNumber, street, city, state, @@ -97,14 +92,16 @@ export const AddshippingAddressByAdmin = async (req, res) => { // console.error("Error creating shipping address:", error.message); // Check for validation errors - if (error.name === 'ValidationError') { - const errorMessages = Object.values(error.errors).map(err => err.message); + if (error.name === "ValidationError") { + const errorMessages = Object.values(error.errors).map( + (err) => err.message + ); return res.status(400).json({ success: false, message: errorMessages.join(", "), }); } - + // General error res.status(500).json({ success: false, @@ -164,13 +161,14 @@ export const deleteSelfShippingAddress = async (req, res) => { .status(400) .json({ message: "please Provide shipping Address Id" }); const getselfAddress = await ShippingAddress.findById(req.params.id); + const userId = req.body.userId ? req.body.userId : req.user._id; if (!getselfAddress) { return res.status(404).json({ success: false, message: "No shipping Address Found!", }); } - if (getselfAddress?.user.toString() === req.user._id.toString()) { + if (getselfAddress?.user.toString() === userId.toString()) { const address = await ShippingAddress.findByIdAndDelete(req.params.id); await address.remove(); return res.status(200).json({ @@ -195,15 +193,18 @@ export const deleteSelfShippingAddress = async (req, res) => { export const updateShippingAddress = async (req, res) => { try { const { - first_Name, - last_Name, - phone_Number, + Name, + phoneNumber, street, city, state, postalCode, country, + panNumber, + tradeName, + gstNumber, } = req.body; + // console.log(req.body); const _id = req.params.id; if (!req.params.id) return res @@ -218,13 +219,10 @@ export const updateShippingAddress = async (req, res) => { } switch (true) { //validation - case !first_Name: { - return res.status(404).json({ msg: "please provide first_Name" }); + case !Name: { + return res.status(404).json({ msg: "please provide Name" }); } - case !last_Name: { - return res.status(404).json({ msg: "please provide last_Name" }); - } - case !phone_Number: { + case !phoneNumber: { return res.status(404).json({ msg: "please provide phone_Number" }); } case !street: { @@ -242,16 +240,27 @@ export const updateShippingAddress = async (req, res) => { case !country: { return res.status(404).json({ msg: "please provide country" }); } + case !panNumber: { + return res.status(404).json({ msg: "please provide panNumber" }); + } + case !tradeName: { + return res.status(404).json({ msg: "please provide tradeName" }); + } + case !gstNumber: { + return res.status(404).json({ msg: "please provide gstNumber" }); + } } const updateAddressData = { - first_Name, - last_Name, - phone_Number, + Name, + phoneNumber, street, city, state, postalCode, country, + panNumber, + tradeName, + gstNumber, }; const updateShippingAddress = await ShippingAddress.findByIdAndUpdate( { _id: _id }, diff --git a/resources/ShippingAddresses/ShippingAddressModel.js b/resources/ShippingAddresses/ShippingAddressModel.js index 57502ed..399c02d 100644 --- a/resources/ShippingAddresses/ShippingAddressModel.js +++ b/resources/ShippingAddresses/ShippingAddressModel.js @@ -2,10 +2,7 @@ import mongoose from "mongoose"; const shippingAddressSchema = new mongoose.Schema( { - firstName: { - type: String, - }, - lastName: { + Name: { type: String, }, phoneNumber: { diff --git a/resources/Task/TaskController.js b/resources/Task/TaskController.js index 1221b8a..1f18d19 100644 --- a/resources/Task/TaskController.js +++ b/resources/Task/TaskController.js @@ -181,26 +181,39 @@ const getStartAndEndOfDay = (date) => { export const getTasksByDates = async (req, res) => { try { await updateOverdueTasks(); + + // Initialize filter object + const filter = {}; + + // Determine the filter based on user type + if (req.userType === "SalesCoOrdinator") { + filter.taskAssignedTo = req.user._id; // Use `=` to assign values, and `===` for comparison + } else { + filter.taskAssignedBy = req.user._id; + } // Get the date from the query const { Date: queryDate } = req.query; let taskDate; - // If date is provided in query, parse it, otherwise use today's date + + // If date is provided in query, parse it; otherwise, use today's date if (queryDate) { taskDate = parseDate(queryDate); } else { // Get today's date in UTC taskDate = new Date(); } + // Get the start and end of the day in UTC const { startOfDay, endOfDay } = getStartAndEndOfDay(taskDate); + // Find tasks for the user, filtered by createdAt within the start and end of the day const tasks = await Task.find({ - taskAssignedBy: req.user._id, + ...filter, // Use the filter object for querying createdAt: { $gte: startOfDay, $lte: endOfDay }, }) .populate({ - path: "taskAssignedTo", + path: req.userType === "SalesCoOrdinator" ? "taskAssignedTo" : "taskAssignedBy", // Change path based on user type select: "name mobileNumber email", }) .sort({ createdAt: -1 }); diff --git a/resources/Task/TaskRoute.js b/resources/Task/TaskRoute.js index f35955d..d654595 100644 --- a/resources/Task/TaskRoute.js +++ b/resources/Task/TaskRoute.js @@ -9,37 +9,22 @@ import { } from "./TaskController.js"; import { isAuthenticatedSalesCoOrdinator } from "../../middlewares/SalesCoOrdinatorAuth.js"; import { isAuthenticatedTerritoryManager } from "../../middlewares/TerritoryManagerAuth.js"; +import { isAuthenticated_SC_TM } from "../../middlewares/generalAuth.js"; const router = express.Router(); // Route for Territory Manager to assign a task -router.post( - "/assign-task", - isAuthenticatedTerritoryManager, - assignTask -); +router.post("/assign-task", isAuthenticatedTerritoryManager, assignTask); // Route for Sales Coordinator to view their tasks by status -router.get( - "/tasks/:status", - isAuthenticatedSalesCoOrdinator, - getTasksByStatus -); +router.get("/tasks/:status", isAuthenticatedSalesCoOrdinator, getTasksByStatus); router.get( "/alltasks/:status", isAuthenticatedTerritoryManager, getAllTasksByStatus ); -router.get( - "/alltask", - isAuthenticatedTerritoryManager, - getTasksByDates -); -router.get( - "/task/type/:task", - isAuthenticatedSalesCoOrdinator, - getTasksbytask -); +router.get("/alltask", isAuthenticated_SC_TM, getTasksByDates); +router.get("/task/type/:task", isAuthenticatedSalesCoOrdinator, getTasksbytask); // Route to update task status router.put( "/update-task-status/:taskId", diff --git a/resources/user/userController.js b/resources/user/userController.js index 1cc566e..d485ef1 100644 --- a/resources/user/userController.js +++ b/resources/user/userController.js @@ -503,9 +503,18 @@ export const uploadPrincipaldistributors = async (req, res) => { "tradeName", "postalCode", ]; - const existingAddress = await ShippingAddress.findOne({ + let existingAddress = await ShippingAddress.findOne({ user: distributor._id, - }); + isDefault: true, + }).exec(); + + if (!existingAddress) { + existingAddress = await ShippingAddress.findOne({ + user: distributor._id, + }) + .sort({ createdAt: 1 }) // Get the first created address as fallback + .exec(); + } // Check for changes in user details let userUpdated = false; @@ -537,6 +546,8 @@ export const uploadPrincipaldistributors = async (req, res) => { // Check for changes in address details const addressData = { + Name: item.name, + phoneNumber: item.phone, street: item.street, city: item.city, state: item.state, @@ -609,6 +620,8 @@ export const uploadPrincipaldistributors = async (req, res) => { }); // Now create the address for the new user const addressData = { + Name: item.name, + phoneNumber: item.phone, street: item.street, city: item.city, state: item.state, @@ -618,6 +631,7 @@ export const uploadPrincipaldistributors = async (req, res) => { tradeName: item.tradeName, gstNumber: item.gstNumber, user: distributor._id, // Use the saved user's ID + isDefault: true, }; const newAddress = await ShippingAddress.create(addressData);