pd address add,update and delete

This commit is contained in:
Sibunnayak 2024-10-14 14:55:26 +05:30
parent 2c6e38094c
commit af8634e05f
9 changed files with 92 additions and 79 deletions

View File

@ -110,9 +110,8 @@ export const createOrderCheckout = async (req, res) => {
})); }));
let addss = await ShippingAddress.findById(address); let addss = await ShippingAddress.findById(address);
let shipping = { let shipping = {
first_Name: addss.first_Name, Name: addss.Name,
last_Name: addss.last_Name, phoneNumber: addss.phoneNumber,
phone_Number: addss.phone_Number,
street: addss.street, street: addss.street,
city: addss.city, city: addss.city,
state: addss.state, state: addss.state,

View File

@ -43,9 +43,8 @@ export const poscreateOrderCheckout = async (req, res) => {
let addss = await ShippingAddress.findById(address); let addss = await ShippingAddress.findById(address);
let shipping = { let shipping = {
first_Name: addss.first_Name, Name: addss.Name,
last_Name: addss?.last_Name, phoneNumber: addss?.phoneNumber,
phone_Number: addss?.phone_Number,
street: addss?.street, street: addss?.street,
city: addss?.city, city: addss?.city,
state: addss?.state, state: addss?.state,

View File

@ -180,9 +180,8 @@ export const checkout = async (req, res) => {
let addss = await ShippingAddress.findById(address); let addss = await ShippingAddress.findById(address);
let shipping = { let shipping = {
first_Name: addss.first_Name, Name: addss.Name,
last_Name: addss?.last_Name, phoneNumber: addss?.phoneNumber,
phone_Number: addss?.phone_Number,
street: addss?.street, street: addss?.street,
city: addss?.city, city: addss?.city,
state: addss?.state, state: addss?.state,
@ -662,9 +661,8 @@ export const handlePayment = async (req, res) => {
let addss = await ShippingAddress.findById(address); let addss = await ShippingAddress.findById(address);
// console.log(addss?.postalCode); // console.log(addss?.postalCode);
let shipping = { let shipping = {
first_Name: addss.first_Name, Name: addss.Name,
last_Name: addss.last_Name, phoneNumber: addss.phoneNumber,
phone_Number: addss.phone_Number,
street: addss.street, street: addss.street,
city: addss.city, city: addss.city,
state: addss.state, state: addss.state,

View File

@ -51,9 +51,8 @@ export const handlePayment = async (req, res) => {
let addss = await ShippingAddress.findById(address); let addss = await ShippingAddress.findById(address);
let shipping = { let shipping = {
first_Name: addss.first_Name, Name: addss.Name,
last_Name: addss.last_Name, phoneNumber: addss.phoneNumber,
phone_Number: addss.phone_Number,
street: addss.street, street: addss.street,
city: addss.city, city: addss.city,
state: addss.state, state: addss.state,

View File

@ -2,28 +2,17 @@ import ShippingAddress from "./ShippingAddressModel.js";
export const AddshippingAddress = async (req, res) => { export const AddshippingAddress = async (req, res) => {
// console.log("request came here"); // console.log("request came here");
try { try {
const { const { Name, phoneNumber, street, city, state, postalCode, country } =
first_Name, req.body;
last_Name,
phone_Number,
street,
city,
state,
postalCode,
country,
} = req.body;
// console.log(req.body); // console.log(req.body);
switch (true) { switch (true) {
//validation //validation
case !first_Name: { case !Name: {
return res.status(404).json({ msg: "please provide first_Name" }); return res.status(404).json({ msg: "please provide Name" });
} }
case !last_Name: { case !phoneNumber: {
return res.status(404).json({ msg: "please provide last_Name" }); return res.status(404).json({ msg: "please provide phoneNumber" });
}
case !phone_Number: {
return res.status(404).json({ msg: "please provide phone_Number" });
} }
case !street: { case !street: {
return res.status(404).json({ msg: "please provide 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) => { export const AddshippingAddressByAdmin = async (req, res) => {
try { try {
const { const {
Name,
phoneNumber,
street, street,
city, city,
state, state,
@ -69,14 +60,18 @@ export const AddshippingAddressByAdmin = async (req, res) => {
tradeName, tradeName,
gstNumber, gstNumber,
} = req.body; } = req.body;
// console.log(req.body);
// Validate required fields // Validate required fields
if (!street || !city || !state || !postalCode || !panNumber) { 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 // Create shipping address object
const newAddress = await ShippingAddress.create({ const newAddress = await ShippingAddress.create({
Name,
phoneNumber,
street, street,
city, city,
state, state,
@ -97,14 +92,16 @@ export const AddshippingAddressByAdmin = async (req, res) => {
// console.error("Error creating shipping address:", error.message); // console.error("Error creating shipping address:", error.message);
// Check for validation errors // Check for validation errors
if (error.name === 'ValidationError') { if (error.name === "ValidationError") {
const errorMessages = Object.values(error.errors).map(err => err.message); const errorMessages = Object.values(error.errors).map(
(err) => err.message
);
return res.status(400).json({ return res.status(400).json({
success: false, success: false,
message: errorMessages.join(", "), message: errorMessages.join(", "),
}); });
} }
// General error // General error
res.status(500).json({ res.status(500).json({
success: false, success: false,
@ -164,13 +161,14 @@ export const deleteSelfShippingAddress = async (req, res) => {
.status(400) .status(400)
.json({ message: "please Provide shipping Address Id" }); .json({ message: "please Provide shipping Address Id" });
const getselfAddress = await ShippingAddress.findById(req.params.id); const getselfAddress = await ShippingAddress.findById(req.params.id);
const userId = req.body.userId ? req.body.userId : req.user._id;
if (!getselfAddress) { if (!getselfAddress) {
return res.status(404).json({ return res.status(404).json({
success: false, success: false,
message: "No shipping Address Found!", 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); const address = await ShippingAddress.findByIdAndDelete(req.params.id);
await address.remove(); await address.remove();
return res.status(200).json({ return res.status(200).json({
@ -195,15 +193,18 @@ export const deleteSelfShippingAddress = async (req, res) => {
export const updateShippingAddress = async (req, res) => { export const updateShippingAddress = async (req, res) => {
try { try {
const { const {
first_Name, Name,
last_Name, phoneNumber,
phone_Number,
street, street,
city, city,
state, state,
postalCode, postalCode,
country, country,
panNumber,
tradeName,
gstNumber,
} = req.body; } = req.body;
// console.log(req.body);
const _id = req.params.id; const _id = req.params.id;
if (!req.params.id) if (!req.params.id)
return res return res
@ -218,13 +219,10 @@ export const updateShippingAddress = async (req, res) => {
} }
switch (true) { switch (true) {
//validation //validation
case !first_Name: { case !Name: {
return res.status(404).json({ msg: "please provide first_Name" }); return res.status(404).json({ msg: "please provide Name" });
} }
case !last_Name: { case !phoneNumber: {
return res.status(404).json({ msg: "please provide last_Name" });
}
case !phone_Number: {
return res.status(404).json({ msg: "please provide phone_Number" }); return res.status(404).json({ msg: "please provide phone_Number" });
} }
case !street: { case !street: {
@ -242,16 +240,27 @@ export const updateShippingAddress = async (req, res) => {
case !country: { case !country: {
return res.status(404).json({ msg: "please provide 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 = { const updateAddressData = {
first_Name, Name,
last_Name, phoneNumber,
phone_Number,
street, street,
city, city,
state, state,
postalCode, postalCode,
country, country,
panNumber,
tradeName,
gstNumber,
}; };
const updateShippingAddress = await ShippingAddress.findByIdAndUpdate( const updateShippingAddress = await ShippingAddress.findByIdAndUpdate(
{ _id: _id }, { _id: _id },

View File

@ -2,10 +2,7 @@ import mongoose from "mongoose";
const shippingAddressSchema = new mongoose.Schema( const shippingAddressSchema = new mongoose.Schema(
{ {
firstName: { Name: {
type: String,
},
lastName: {
type: String, type: String,
}, },
phoneNumber: { phoneNumber: {

View File

@ -181,26 +181,39 @@ const getStartAndEndOfDay = (date) => {
export const getTasksByDates = async (req, res) => { export const getTasksByDates = async (req, res) => {
try { try {
await updateOverdueTasks(); 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 // Get the date from the query
const { Date: queryDate } = req.query; const { Date: queryDate } = req.query;
let taskDate; 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) { if (queryDate) {
taskDate = parseDate(queryDate); taskDate = parseDate(queryDate);
} else { } else {
// Get today's date in UTC // Get today's date in UTC
taskDate = new Date(); taskDate = new Date();
} }
// Get the start and end of the day in UTC // Get the start and end of the day in UTC
const { startOfDay, endOfDay } = getStartAndEndOfDay(taskDate); const { startOfDay, endOfDay } = getStartAndEndOfDay(taskDate);
// Find tasks for the user, filtered by createdAt within the start and end of the day // Find tasks for the user, filtered by createdAt within the start and end of the day
const tasks = await Task.find({ const tasks = await Task.find({
taskAssignedBy: req.user._id, ...filter, // Use the filter object for querying
createdAt: { $gte: startOfDay, $lte: endOfDay }, createdAt: { $gte: startOfDay, $lte: endOfDay },
}) })
.populate({ .populate({
path: "taskAssignedTo", path: req.userType === "SalesCoOrdinator" ? "taskAssignedTo" : "taskAssignedBy", // Change path based on user type
select: "name mobileNumber email", select: "name mobileNumber email",
}) })
.sort({ createdAt: -1 }); .sort({ createdAt: -1 });

View File

@ -9,37 +9,22 @@ import {
} from "./TaskController.js"; } from "./TaskController.js";
import { isAuthenticatedSalesCoOrdinator } from "../../middlewares/SalesCoOrdinatorAuth.js"; import { isAuthenticatedSalesCoOrdinator } from "../../middlewares/SalesCoOrdinatorAuth.js";
import { isAuthenticatedTerritoryManager } from "../../middlewares/TerritoryManagerAuth.js"; import { isAuthenticatedTerritoryManager } from "../../middlewares/TerritoryManagerAuth.js";
import { isAuthenticated_SC_TM } from "../../middlewares/generalAuth.js";
const router = express.Router(); const router = express.Router();
// Route for Territory Manager to assign a task // Route for Territory Manager to assign a task
router.post( router.post("/assign-task", isAuthenticatedTerritoryManager, assignTask);
"/assign-task",
isAuthenticatedTerritoryManager,
assignTask
);
// Route for Sales Coordinator to view their tasks by status // Route for Sales Coordinator to view their tasks by status
router.get( router.get("/tasks/:status", isAuthenticatedSalesCoOrdinator, getTasksByStatus);
"/tasks/:status",
isAuthenticatedSalesCoOrdinator,
getTasksByStatus
);
router.get( router.get(
"/alltasks/:status", "/alltasks/:status",
isAuthenticatedTerritoryManager, isAuthenticatedTerritoryManager,
getAllTasksByStatus getAllTasksByStatus
); );
router.get( router.get("/alltask", isAuthenticated_SC_TM, getTasksByDates);
"/alltask", router.get("/task/type/:task", isAuthenticatedSalesCoOrdinator, getTasksbytask);
isAuthenticatedTerritoryManager,
getTasksByDates
);
router.get(
"/task/type/:task",
isAuthenticatedSalesCoOrdinator,
getTasksbytask
);
// Route to update task status // Route to update task status
router.put( router.put(
"/update-task-status/:taskId", "/update-task-status/:taskId",

View File

@ -503,9 +503,18 @@ export const uploadPrincipaldistributors = async (req, res) => {
"tradeName", "tradeName",
"postalCode", "postalCode",
]; ];
const existingAddress = await ShippingAddress.findOne({ let existingAddress = await ShippingAddress.findOne({
user: distributor._id, 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 // Check for changes in user details
let userUpdated = false; let userUpdated = false;
@ -537,6 +546,8 @@ export const uploadPrincipaldistributors = async (req, res) => {
// Check for changes in address details // Check for changes in address details
const addressData = { const addressData = {
Name: item.name,
phoneNumber: item.phone,
street: item.street, street: item.street,
city: item.city, city: item.city,
state: item.state, state: item.state,
@ -609,6 +620,8 @@ export const uploadPrincipaldistributors = async (req, res) => {
}); });
// Now create the address for the new user // Now create the address for the new user
const addressData = { const addressData = {
Name: item.name,
phoneNumber: item.phone,
street: item.street, street: item.street,
city: item.city, city: item.city,
state: item.state, state: item.state,
@ -618,6 +631,7 @@ export const uploadPrincipaldistributors = async (req, res) => {
tradeName: item.tradeName, tradeName: item.tradeName,
gstNumber: item.gstNumber, gstNumber: item.gstNumber,
user: distributor._id, // Use the saved user's ID user: distributor._id, // Use the saved user's ID
isDefault: true,
}; };
const newAddress = await ShippingAddress.create(addressData); const newAddress = await ShippingAddress.create(addressData);