const User = require("../model/User")

exports.createOrder = async (req, res) => {
	try {
		const { userId, products, totalAmount } = req.body

		const user = await User.findById(userId)

		if (!user) {
			return res.status(404).json({ message: "User not found" })
		}

		// Check if the user is an admin
		if (user.isAdmin) {
			return res
				.status(403)
				.json({ message: "Admins cannot create orders" })
		}

		const newOrder = {
			products: products,
			totalAmount: totalAmount,
			purchaseOn: Date.now(),
		}

		user.orderedProducts.push(newOrder)
		await user.save()

		res.status(201).json({
			message: "Order created successfully",
			order: newOrder,
		})
	} catch (error) {
		console.error(error)
		res.status(500).json({ message: "Internal Server Error" })
	}
}

// Retrieve authenticated user's orders
exports.getOrders = async (req, res) => {
	try {
		const { userId } = req.body

		const user = await User.findById(userId)

		if (!user) {
			return res.status(404).json({ message: "User not found" })
		}

		// Return the user details in the response
		res.send({ orderedProducts: user.orderedProducts })
	} catch (error) {
		console.error(error)
		res.status(500).json({ message: "Internal server error" })
	}
}

exports.getAllOrders = async (req, res) => {
	try {
	  const orders = await User.find({ "orderedProducts.0": { $exists: true } }, "orderedProducts");
	  res.status(200).json({ success: true, data: orders });
	} catch (error) {
	  res.status(500).json({ success: false, error: error.message });
	}
  };
