address save in order

This commit is contained in:
pawan-dot 2023-12-12 13:44:41 +05:30
parent 705803b1b4
commit 751f90e1db
4 changed files with 112 additions and 15 deletions

View File

@ -3,6 +3,7 @@ const { PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET } = process.env;
const base = "https://api-m.sandbox.paypal.com";
import axios from "axios";
import mongoose from "mongoose";
import { shippingAddress } from "../ShippingAddresses/ShippingAddressModel.js";
//paypal client id get
export const getClientId = async (req, res) => {
try {
@ -107,13 +108,25 @@ export const createOrderCheckout = async (req, res) => {
price_With_Tax: 0,
taxId: "",
}));
let addss = await shippingAddress.findById(address);
let shipping = {
first_Name: addss.first_Name,
last_Name: addss.last_Name,
phone_Number: addss.phone_Number,
street: addss.street,
city: addss.city,
state: addss.state,
postalCode: addss?.postalCode,
country: addss.country,
addressId: address,
};
req.body.user = req.user._id;
const Id = await generateOrderId();
const order = await Order.create({
orderID: Id,
total_amount: subtotal,
orderItems,
shippingInfo: address,
shippingInfo: shipping,
user: req.user._id,
});
if (order) {

View File

@ -4,8 +4,9 @@ export const getAllOrder = async (req, res) => {
try {
const { status } = req.params;
const order = await Order.find({
payment_status: { $in: ["success", "failed"] },
// orderStatus: status,
// payment_status: { $in: ["success", "failed"] },
payment_status: "success",
orderStatus: status,
})
.populate({
path: "user",
@ -37,12 +38,10 @@ export const getAllOrder = async (req, res) => {
export const getSingleOrder = async (req, res) => {
try {
if (!req?.user) return res.status(400).json({ message: "please login !" });
// console.log(req?.user)
if (!req.params.id)
return res.status(400).json({ message: "please Provide Order Id" });
const order = await Order.findOne({ orderID: req.params.id })
const order = await Order.findById(req.params.id)
.populate({
path: "user",
select: "name -_id",
@ -115,3 +114,50 @@ export const deleteOneOrder = async (req, res) => {
});
}
};
export const updateOrderStatusById = async (req, res) => {
try {
let body = { orderStatus: req.body.status };
const currentDate = new Date();
body["status_timeline." + req.body.status] = currentDate;
// if (req.body?.package_weight) body.package_weight = req.body.package_weight;
const order = await Order.findById(req.params.id);
// console.log(order);
// const parentData = { email: order?.parent?.email };
// if (body.status === "cancelled")
// await OrderCancelledEmail(parentData.email, order.order_id);
// else if (body.status === "dispatched") {
// const noBalanceRemaining =
// order?.sales_items?.filter((e) => Number(e?.balance_quantity) > 0)
// ?.length === 0
// ? true
// : false;
// if (!noBalanceRemaining)
// return res
// .status(400)
// .json({ message: "Few items still have balance quantity!" });
// await OrderDispatchedEmail(parentData.email, order.order_id, body);
// await Invoice.updateMany(
// { order: order._id, status: { $in: ["processing"] } },
// { status: body.status, "status_timeline.dispatched": currentDate }
// );
// } else if (body.status === "delivered") {
// await OrderDeliveredEmail(parentData.email, order.order_id);
// await Invoice.updateMany(
// { order: order._id, status: { $in: ["processing", "dispatched"] } },
// { status: body.status, "status_timeline.delivered": currentDate }
// );
// }
await Order.findByIdAndUpdate(order._id, body);
// console.log(order);
res
.status(200)
.json({ status: "ok", message: "Order status updated successfully!" });
} catch (error) {
console.log(error);
res
.status(500)
.json({ message: error?.message || "Something went wrong!" });
}
};

View File

@ -13,9 +13,48 @@ const orderSchema = new mongoose.Schema(
required: true,
},
shippingInfo: {
type: mongoose.Schema.ObjectId,
ref: "ShippingAddress",
required: true,
first_Name: {
type: String,
required: true,
},
last_Name: {
type: String,
required: true,
},
phone_Number: {
type: Number,
required: true,
},
street: {
type: String,
required: true,
},
city: {
type: String,
required: true,
trim: true,
},
state: {
type: String,
required: true,
},
postalCode: {
type: String,
required: true,
trim: true,
// Add a regular expression to enforce a specific postal code format
// For example, assuming a 5-digit format for the United States
match: /^\d{5}$/,
},
country: {
type: String,
required: true,
},
addressId: {
type: mongoose.Schema.ObjectId,
ref: "ShippingAddress",
required: true,
},
},
orderItems: [
{
@ -91,7 +130,7 @@ const orderSchema = new mongoose.Schema(
paypal_payment_id: { type: String },
// paypal_signature: { type: String },
// order_used: { type: Boolean, default: false },
// isDelivered: { type: Boolean,required:true,default:false },
isDelivered: { type: Boolean, required: true, default: false },
// deliveredAt: { type: Date },
status_timeline: {
new: { type: Date },
@ -101,8 +140,8 @@ const orderSchema = new mongoose.Schema(
cancelled: { type: Date },
returned: { type: Date },
},
// courier_name: { type: String },
// tracking_id: { type: String },
courier_name: { type: String },
tracking_id: { type: String },
},
{ timestamps: true }
);

View File

@ -3,6 +3,7 @@ import {
getAllOrder,
getSingleOrder,
getUserSelf,
updateOrderStatusById,
} from "./orderController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
import express from "express";
@ -25,9 +26,7 @@ router
.route("/getAll/:status")
.get(isAuthenticatedUser, authorizeRoles("admin"), getAllOrder);
router.route("/getOne/:id").get(isAuthenticatedUser, getSingleOrder);
// router
// .route("/order/edit/:id")
// .put(isAuthenticatedUser, authorizeRoles("admin"), EditOrderBeforePayment);
router.route("/change/status/:id").patch(updateOrderStatusById);
router
.route("/delete/:id")