diff --git a/resources/Orders/StripeCheckOutController.js b/resources/Orders/StripeCheckOutController.js index b92eb18..81f6417 100644 --- a/resources/Orders/StripeCheckOutController.js +++ b/resources/Orders/StripeCheckOutController.js @@ -11,7 +11,7 @@ import { shippingAddress } from "../ShippingAddresses/ShippingAddressModel.js"; import sendEmail from "../../Utils/sendEmail.js"; // const endpointSecret = STRIPE_SECRET_KEY; //generate unique order id -const generateUniqueOrderId = async () => { +export const generateUniqueOrderId = async () => { const currentYear = new Date().getFullYear(); // Find the latest order to get the last serial number const latestOrder = await Order.findOne({}, {}, { sort: { orderID: -1 } }); @@ -36,6 +36,7 @@ export const handlePayment = async (req, res) => { if (!email) return res.status(400).send({ message: "Please enter the email" }); const { address, cart, subtotal } = req.body; + if (cart.length < 1) return res.status(400).json({ message: "cart is empty!" }); switch (true) { @@ -48,7 +49,7 @@ 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, @@ -102,12 +103,19 @@ export const handlePayment = async (req, res) => { // Add any other key-value pairs as needed }, - success_url: `${process.env.FRONTEND_URL}/cart`, - cancel_url: `${process.env.FRONTEND_URL}/error`, + shipping_address_collection: { + allowed_countries: ["IN"], + // Allow only India for INR transactions + }, + billing_address_collection: "required", + success_url: "http://localhost:5173/order-complete", // Provide your success URL here + cancel_url: "http://localhost:5173/cart", }); // res.json({ sessionId: session.id }); - res.status(200).send({ message: "order created", url: session.url }); + res + .status(200) + .send({ message: "order created", url: session.url, id: session.id }); } } catch (err) { console.log(err); diff --git a/resources/Orders/orderController.js b/resources/Orders/orderController.js index cf73972..77dd538 100644 --- a/resources/Orders/orderController.js +++ b/resources/Orders/orderController.js @@ -1,3 +1,4 @@ +import sendEmail from "../../Utils/sendEmail.js"; import { Order } from "./orderModel.js"; export const getAllOrder = async (req, res) => { @@ -44,7 +45,7 @@ export const getSingleOrder = async (req, res) => { const order = await Order.findById(req.params.id) .populate({ path: "user", - select: "name -_id", + select: "name email -_id", }) .populate({ path: "shippingInfo.addressId", @@ -67,13 +68,13 @@ export const getSingleOrder = async (req, res) => { //get self User Order export const getUserSelf = async (req, res) => { + if (!req?.user) return res.status(400).json({ message: "please login !" }); try { const order = await Order.find({ - user: req.user._id, + user: req.user?._id, payment_status: "success", - }) - .populate("shippingInfo.addressId") - .sort({ createdAt: -1 }); + }).sort({ createdAt: -1 }); + if (order) { return res.status(200).json({ success: true, @@ -117,6 +118,7 @@ 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; @@ -151,6 +153,21 @@ export const updateOrderStatusById = async (req, res) => { body["courier_name"] = req.body.courierName; body["courier_tracking_id"] = req.body.TrackingID; await Order.findByIdAndUpdate(order._id, body); + await sendEmail({ + to: `${req.body.sendemail}`, // Change to your recipient + + from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender + + subject: `Your Order is On Its Way!`, + html: `
Great news! Your order has been confirmed. Here are the details
+