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;