address save in order
This commit is contained in:
parent
705803b1b4
commit
751f90e1db
@ -3,6 +3,7 @@ const { PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET } = process.env;
|
|||||||
const base = "https://api-m.sandbox.paypal.com";
|
const base = "https://api-m.sandbox.paypal.com";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import mongoose from "mongoose";
|
import mongoose from "mongoose";
|
||||||
|
import { shippingAddress } from "../ShippingAddresses/ShippingAddressModel.js";
|
||||||
//paypal client id get
|
//paypal client id get
|
||||||
export const getClientId = async (req, res) => {
|
export const getClientId = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
@ -107,13 +108,25 @@ export const createOrderCheckout = async (req, res) => {
|
|||||||
price_With_Tax: 0,
|
price_With_Tax: 0,
|
||||||
taxId: "",
|
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;
|
req.body.user = req.user._id;
|
||||||
const Id = await generateOrderId();
|
const Id = await generateOrderId();
|
||||||
const order = await Order.create({
|
const order = await Order.create({
|
||||||
orderID: Id,
|
orderID: Id,
|
||||||
total_amount: subtotal,
|
total_amount: subtotal,
|
||||||
orderItems,
|
orderItems,
|
||||||
shippingInfo: address,
|
shippingInfo: shipping,
|
||||||
user: req.user._id,
|
user: req.user._id,
|
||||||
});
|
});
|
||||||
if (order) {
|
if (order) {
|
||||||
|
@ -4,8 +4,9 @@ export const getAllOrder = async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const { status } = req.params;
|
const { status } = req.params;
|
||||||
const order = await Order.find({
|
const order = await Order.find({
|
||||||
payment_status: { $in: ["success", "failed"] },
|
// payment_status: { $in: ["success", "failed"] },
|
||||||
// orderStatus: status,
|
payment_status: "success",
|
||||||
|
orderStatus: status,
|
||||||
})
|
})
|
||||||
.populate({
|
.populate({
|
||||||
path: "user",
|
path: "user",
|
||||||
@ -37,12 +38,10 @@ export const getAllOrder = async (req, res) => {
|
|||||||
|
|
||||||
export const getSingleOrder = async (req, res) => {
|
export const getSingleOrder = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
if (!req?.user) return res.status(400).json({ message: "please login !" });
|
|
||||||
// console.log(req?.user)
|
|
||||||
if (!req.params.id)
|
if (!req.params.id)
|
||||||
return res.status(400).json({ message: "please Provide Order 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({
|
.populate({
|
||||||
path: "user",
|
path: "user",
|
||||||
select: "name -_id",
|
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!" });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -13,9 +13,48 @@ const orderSchema = new mongoose.Schema(
|
|||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
shippingInfo: {
|
shippingInfo: {
|
||||||
type: mongoose.Schema.ObjectId,
|
first_Name: {
|
||||||
ref: "ShippingAddress",
|
type: String,
|
||||||
required: true,
|
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: [
|
orderItems: [
|
||||||
{
|
{
|
||||||
@ -91,7 +130,7 @@ const orderSchema = new mongoose.Schema(
|
|||||||
paypal_payment_id: { type: String },
|
paypal_payment_id: { type: String },
|
||||||
// paypal_signature: { type: String },
|
// paypal_signature: { type: String },
|
||||||
// order_used: { type: Boolean, default: false },
|
// order_used: { type: Boolean, default: false },
|
||||||
// isDelivered: { type: Boolean,required:true,default:false },
|
isDelivered: { type: Boolean, required: true, default: false },
|
||||||
// deliveredAt: { type: Date },
|
// deliveredAt: { type: Date },
|
||||||
status_timeline: {
|
status_timeline: {
|
||||||
new: { type: Date },
|
new: { type: Date },
|
||||||
@ -101,8 +140,8 @@ const orderSchema = new mongoose.Schema(
|
|||||||
cancelled: { type: Date },
|
cancelled: { type: Date },
|
||||||
returned: { type: Date },
|
returned: { type: Date },
|
||||||
},
|
},
|
||||||
// courier_name: { type: String },
|
courier_name: { type: String },
|
||||||
// tracking_id: { type: String },
|
tracking_id: { type: String },
|
||||||
},
|
},
|
||||||
{ timestamps: true }
|
{ timestamps: true }
|
||||||
);
|
);
|
||||||
|
@ -3,6 +3,7 @@ import {
|
|||||||
getAllOrder,
|
getAllOrder,
|
||||||
getSingleOrder,
|
getSingleOrder,
|
||||||
getUserSelf,
|
getUserSelf,
|
||||||
|
updateOrderStatusById,
|
||||||
} from "./orderController.js";
|
} from "./orderController.js";
|
||||||
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
|
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
|
||||||
import express from "express";
|
import express from "express";
|
||||||
@ -25,9 +26,7 @@ router
|
|||||||
.route("/getAll/:status")
|
.route("/getAll/:status")
|
||||||
.get(isAuthenticatedUser, authorizeRoles("admin"), getAllOrder);
|
.get(isAuthenticatedUser, authorizeRoles("admin"), getAllOrder);
|
||||||
router.route("/getOne/:id").get(isAuthenticatedUser, getSingleOrder);
|
router.route("/getOne/:id").get(isAuthenticatedUser, getSingleOrder);
|
||||||
// router
|
router.route("/change/status/:id").patch(updateOrderStatusById);
|
||||||
// .route("/order/edit/:id")
|
|
||||||
// .put(isAuthenticatedUser, authorizeRoles("admin"), EditOrderBeforePayment);
|
|
||||||
|
|
||||||
router
|
router
|
||||||
.route("/delete/:id")
|
.route("/delete/:id")
|
||||||
|
Loading…
Reference in New Issue
Block a user