ecommerce / backend / routes / order.js
order.js
Raw
const express = require('express');
const { userAuth } = require('../middlewares/userAuth');
const { Order } = require('../models/Order');
const { orderBody } = require('../types');
const router = express.Router();

// if Order Id is provided fetch only one, else return all the orders for the user
router.get('/:id?', userAuth, async (req, res) => {
    try {
        let orderId = req.params.id;
        let userId = req.userId;
        if (orderId) {
            let isValid = mongoose.Types.ObjectId.isValid(orderId);
            if (!isValid) {
                res.status(400).json({ message: 'Invalid Order Id'});
                return;
            }
            let orderData = await Order.findOne({_id: orderId});
            if (orderData) {
                res.status(200).json({orderData});
                return;
            } else {
                res.status(400).json({message: 'Order not found'});
                return;
            }
        } else {
            let orders = await Order.find({user_id: userId});
            if (orders) {
                res.status(200).json({orders});
                return;
            } else {
                res.status(400).json({message: 'No orders found for the user'});
                return;
            }
        }
    } catch (err) {
        console.log(err);
        res.status(400).json({message: "Api Call Failed"});
    }
});

router.post('/create', userAuth, async (req, res) => {
    try {
        let { success } = orderBody.safeParse(req.body);
        if (!success) {
            res.status(404).json({message:"Invalid Order Input"});
            return;
        }
        let {cart_products, total, status, payment_id} = req.body;
        let order = await Order.create({
            user_id: req.userId,
            cart_products,
            total,
            status: req.body.status,
            payment_id
        })
        if (order) {
            res.status(200).json({message: "Order Created successfully"});
        } else {
            res.status(400).json({message: "Failed to create Order"});
        }
    } catch (err) {
        console.log(err);
        res.status(400).json({message: "Api Call Failed"}); 
    }
});


module.exports = router;