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";
|
||||
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) {
|
||||
|
@ -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!" });
|
||||
}
|
||||
};
|
||||
|
@ -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 }
|
||||
);
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user