From 0a87a99b7acbbcfcb6a56969f3696520c19c0f86 Mon Sep 17 00:00:00 2001 From: Dina Ahmed Date: Tue, 1 Oct 2024 22:06:16 +0300 Subject: [PATCH] req 23/45/83 --- src/App.js | 16 +++++++ src/Models/Activity.js | 4 ++ src/Routes/adminController.js | 76 ++++++++++++++++++++++++++++++++- src/Routes/guestController.js | 30 +++++++++++++ src/Routes/sellerController.js | 16 +++++++ src/Routes/touristController.js | 45 +++++++++++++++++++ 6 files changed, 186 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index f79f314..4011e76 100644 --- a/src/App.js +++ b/src/App.js @@ -10,6 +10,10 @@ const { createAdmin, } = require("./Routes/adminController"); +const {createCategory, getCategory, updateCategory, deleteCategory,searchProductAdmin}= require('./Routes/adminController'); +const {filterActivity,searchProductTourist}= require('./Routes/touristController'); +const {filterActivityGuest}= require('./Routes/guestController'); +const {searchProductSeller}= require('./Routes/sellerController'); // Load environment variables from .env file dotenv.config(); @@ -22,6 +26,18 @@ const MongoURI = process.env.MONGO_URI; app.use(express.json()); app.use('/api', advertiserRoutes); // Use advertiser routes under '/api' +app.post("/addCategory",createCategory); +app.get("/viewCategory",getCategory); +app.put("/updateCategory/:categoryId",updateCategory); +app.delete("/deleteCategory/:categoryId",deleteCategory); +app.get("/filterActivity",filterActivity); +app.get("/filterActivityGuest",filterActivityGuest); +app.get("/searchProductTourist",searchProductTourist); +app.get("/searchProductAdmin",searchProductAdmin); +app.get("/searchProductSeller",searchProductSeller); + + + // MongoDB Connection mongoose.connect(MongoURI, { useNewUrlParser: true, diff --git a/src/Models/Activity.js b/src/Models/Activity.js index c3e8698..f1d04ed 100644 --- a/src/Models/Activity.js +++ b/src/Models/Activity.js @@ -71,6 +71,10 @@ const activitySchema = new Schema({ type: String, required: false // Optional }, + budget: { + type: Number, + required: false // Optional + }, booking_open: { type: Boolean, default: true // Default value is true diff --git a/src/Routes/adminController.js b/src/Routes/adminController.js index 8175c9d..f25fb8d 100644 --- a/src/Routes/adminController.js +++ b/src/Routes/adminController.js @@ -1,5 +1,7 @@ const TourismGoverner = require("../Models/TourismGoverner"); const Admin = require("../Models/Admin"); +const Category = require("../Models/Category"); +const Product = require("../Models/Product"); //Tourism Governer const createTourismGoverner = async (req, res) => { @@ -38,4 +40,76 @@ const createAdmin = async (req, res) => { } }; -module.exports = { createTourismGoverner, createAdmin }; + +const createCategory = async(req,res) => { + + const {name} = req.body; + + try{ + const category = await Category.create({name}); + res.status(200).json(category) + }catch(error){ + res.status(400).json({error:error.message}) + } + +} + +const getCategory = async (req, res) => { + + try { + const category = await Category.find({}); + res.status(200).json(category); + } catch (error) { + + res.status(500).json({ message: 'Error retrieving categories', error }); + } +} + +const updateCategory = async (req, res) => { + + try { + const { categoryId } = req.params; + const { name } = req.body; + + const updatedCategory = await Category.findByIdAndUpdate(categoryId, {name}, { new: true }); + + if (!updatedCategory) { + return res.status(404).json({ message: 'Category not found' }); + } + + res.status(200).json(updatedCategory); + } catch (error) { + res.status(500).json({ message: 'Error updating category', error }); + } +} + +const deleteCategory = async (req, res) => { + try { + + const { categoryId } = req.params; + const deletedCategory = await Category.findByIdAndDelete(categoryId); + + if (!deletedCategory) { + return res.status(404).json({ message: 'Category not found' }); + } + + res.status(200).json(deletedCategory); + } catch (error) { + + res.status(500).json({ message: 'Error deleting category', error }); + } +} + +const searchProductAdmin = async (req, res) => { + + const { name } = req.body; + try { + const product = await Product.find({name}); + res.status(200).json(product); + } catch (error) { + + res.status(500).json({ message: 'Error retrieving product', error }); + } + } + +module.exports = { createTourismGoverner, createAdmin ,createCategory, getCategory, updateCategory, deleteCategory, searchProductAdmin }; diff --git a/src/Routes/guestController.js b/src/Routes/guestController.js index e69de29..4bbdda3 100644 --- a/src/Routes/guestController.js +++ b/src/Routes/guestController.js @@ -0,0 +1,30 @@ +const Activity = require("../Models/Activity"); + +const filterActivityGuest = async (req, res) => { + const { budget, date, category, rating } = req.body; + + // Initialize an empty query object + let query = {}; + + // Add filters to the query object only if they are provided in the request body + if (budget) query.budget = budget; + if (date) query.date = date; + if (category) query.category = category; + if (rating) query.rating = rating; + + try { + // Perform the query with dynamic filters + const activity = await Activity.find(query); + + if (activity.length === 0) { + return res.status(404).json({ message: 'No activity found' }); + } + + res.status(200).json(activity); + } catch (error) { + res.status(400).json({ error: error.message }); + } +}; + + +module.exports = { filterActivityGuest }; \ No newline at end of file diff --git a/src/Routes/sellerController.js b/src/Routes/sellerController.js index e69de29..555fdbe 100644 --- a/src/Routes/sellerController.js +++ b/src/Routes/sellerController.js @@ -0,0 +1,16 @@ +const Product = require("../Models/Product"); + +const searchProductSeller = async (req, res) => { + + const { name } = req.body; + try { + const product = await Product.find({name}); + res.status(200).json(product); + } catch (error) { + + res.status(500).json({ message: 'Error retrieving product', error }); + } + } + + +module.exports = { searchProductSeller }; \ No newline at end of file diff --git a/src/Routes/touristController.js b/src/Routes/touristController.js index e69de29..fe39ae4 100644 --- a/src/Routes/touristController.js +++ b/src/Routes/touristController.js @@ -0,0 +1,45 @@ +const Activity = require("../Models/Activity"); +const Product = require("../Models/Product"); + + + +const filterActivity = async (req, res) => { + const { budget, date, category, rating } = req.body; + + // Initialize an empty query object + let query = {}; + + // Add filters to the query object only if they are provided in the request body + if (budget) query.budget = budget; + if (date) query.date = date; + if (category) query.category = category; + if (rating) query.rating = rating; + + try { + // Perform the query with dynamic filters + const activity = await Activity.find(query); + + if (activity.length === 0) { + return res.status(404).json({ message: 'No activity found' }); + } + + res.status(200).json(activity); + } catch (error) { + res.status(400).json({ error: error.message }); + } +}; + +const searchProductTourist = async (req, res) => { + + const { name } = req.body; + try { + const product = await Product.find({name}); + res.status(200).json(product); + } catch (error) { + + res.status(500).json({ message: 'Error retrieving product', error }); + } + } + + +module.exports = { filterActivity,searchProductTourist }; \ No newline at end of file