// Dependencies and Modules const Product = require ("../models/Product") const User = require("../models/User"); const bcrypt = require("bcrypt"); // Auth const auth = require("../auth"); module.exports.createProduct = (req,res) => { let newProduct = new Product({ name:req.body.name, description:req.body.description, price:req.body.price, createdOn:req.body.createdOn }); return newProduct.save() .then(course => { return res.send(true); }) .catch(error => { console.error(error); // Log the error for debugging purposes return res.send(false); }); } module.exports.getAllProducts = (req,res) =>{ // to retrieve all the documents in the "product" collection, we will use find({}) method. return Product.find({}).then(result =>{ return res.send(result); }); } module.exports.getactiveproduct = (req,res) =>{ return Product.find({isActive:true}).then(result =>{ return res.send(result); }); } module.exports.getProduct = (req,res) =>{ return Product.findById(req.params.productId).then(result =>{ return res.send(result); }); } module.exports.updateProduct = (req, res) => { // Specify the fields/properties of the document to be updated let updateProduct = { name: req.body.name, description: req.body.description, price: req.body.price } // Syntax // findByIdAndUpdate(documentId, updatesToBeApplied) return Product.findByIdAndUpdate(req.params.productId, updateProduct).then((product, error) => { // If product was not updated if(error){ return res.send(false); // If product was updated successfully } else { return res.send(true); } }); } module.exports.archiveProduct = async (req, res) => { const productId = req.params.productId; // Assuming you're passing the productId in the URL try { const product = await Product.findById(productId); if (!product) { return res.status(404).send('Product not found'); } product.isArchived = true; await product.save(); return res.send('Product archived successfully'); } catch (error) { return res.status(500).send(error.message); } }; module.exports.activateProduct = async (req, res) => { const productId = req.params.productId; // Assuming you're passing the productId in the URL try { const product = await Product.findById(productId); if (!product) { return res.status(404).send('Product not found'); } product.isActive = true; await product.save(); return res.send('Product activated successfully'); } catch (error) { return res.status(500).send(error.message); } }; module.exports.searchProductsByName = async (req, res) => { try { const { productName } = req.body; // Use a regular expression to perform a case-insensitive search const courses = await Course.find({ name: { $regex: productName, $options: 'i' } }); res.json(products); } catch (error) { console.error(error); res.status(500).json({ error: 'Internal Server Error' }); } }; exports.searchProductsByPriceRange = async (req, res) => { try { const { minPrice, maxPrice } = req.body; // Find courses within the price range const products = await Product.find({ price: { $gte: minPrice, $lte: maxPrice } }); res.status(200).json({ products }); } catch (error) { res.status(500).json({ error: 'An error occurred while searching for courses' }); } }; // exports.updateProduct = async (req, res) => { // try { // // Check if the user is an admin // if (!req.user.isAdmin) { // return res.status(403).json({ message: 'You are not authorized to perform this action' }); // } // const updateProduct = await Product.findByIdAndUpdate(req.params.id, req.body, { new: true }); // res.json(updatedProduct); // } catch (error) { // res.status(500).json({ message: error.message }); // } // }; // exports.deleteProduct = async (req, res) => { // try { // // Check if the user is an admin // if (!req.user.isAdmin) { // return res.status(403).json({ message: 'You are not authorized to perform this action' }); // } // await Product.findByIdAndDelete(req.params.id); // res.json({ message: 'Product deleted successfully' }); // } catch (error) { // res.status(500).json({ message: error.message }); // } // };