diff --git a/app.js b/app.js index afac97a..b33e4b3 100644 --- a/app.js +++ b/app.js @@ -37,5 +37,7 @@ app.use("/api", news); //Events import Event from "./routes/EventsRoute.js" app.use("/api", Event); - +//Offers +import Offer from "./routes/OffersRoute.js" +app.use("/api", Offer); export default app; \ No newline at end of file diff --git a/controllers/EventsController.js b/controllers/EventsController.js index 8aeac0b..4029b98 100644 --- a/controllers/EventsController.js +++ b/controllers/EventsController.js @@ -78,7 +78,7 @@ export const getOneEvent = async (req, res) => { }; -// 3.update Category +// 3.update Event export const updateEvent = async (req, res) => { try { const newEventData = { diff --git a/controllers/OffersController.js b/controllers/OffersController.js new file mode 100644 index 0000000..b6e1fc4 --- /dev/null +++ b/controllers/OffersController.js @@ -0,0 +1,163 @@ +import Offers from "../models/OffersModel.js" +import cloudinary from "cloudinary"; + +export const createOffer = async (req, res) => { + + try { + const files = req.files.image; + + // console.log(files) + const myCloud = await cloudinary.uploader.upload(files.tempFilePath, { + folder: "cmp/image", + }, + function (error, result) { (result, error) }); + const { title, location, description, bisunessName } = req.body; + + const data = await Offers.create({ + title, + image: { + public_id: myCloud.public_id, + url: myCloud.secure_url, + }, + location, + description, + bisunessName + + }); + res.status(201).json({ + success: true, + msg: " create Offer Successfully!!", + data, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to create Offer !!" + }); + } + +}; +//get All Product +export const getAllOffer = async (req, res) => { + + try { + const offer = await Offers.find(); + // console.log(category) + res.status(200).json({ + success: true, + msg: " fetch All Offer Successfully!!", + offer, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } + +}; +//get One Product +export const getOneOffer = async (req, res) => { + + try { + const offer = await Offers.findById(req.params.id); + // console.log(category) + res.status(200).json({ + success: true, + msg: " fetch Successfully!!", + offer, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } + +}; + +// 3.update offer +export const updateOffer = async (req, res) => { + try { + const newOfferData = { + title: req.body.title, + description: req.body.description, + location: req.body.location, + bisunessName: req.body.bisunessName + }; + + + if (req.files) { + const files = req.files.image; + const getOffer = await Offers.findById(req.params.id); + + const imageId = getOffer.image.public_id; + // console.log(imageId) + //delete image from claudinary + await cloudinary.uploader.destroy(imageId) + // await cloudinary.uploader.destroy(imageId, function (result) { console.log(result) }); + const myCloud = await cloudinary.uploader.upload(files.tempFilePath, { + folder: "image", + }, + function (error, result) { (result, error) }); + // console.log(myCloud) + newOfferData.image = { + public_id: myCloud.public_id, + url: myCloud.secure_url, + }; + } + + //req.user.id, + const ModifyOffer = await Offers.findByIdAndUpdate(req.params.id, newOfferData, + + { new: true } + // runValidators: true, + // useFindAndModify: false, + ); + + res.status(200).json({ + success: true, + ModifyOffer + }); + + } catch (error) { + console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to UpDate Offer!!" + + }); + } + +}; + +//delete one category +export const deleteOffer = async (req, res) => { + + try { + //delete image from cloudinary + const getOffer = await Offers.findById(req.params.id); + // console.log(categ) + const imageId = getOffer.image.public_id; + await cloudinary.uploader.destroy(imageId) + + //-------------------------// + const offer = await Offers.findByIdAndDelete(req.params.id) + if (!offer) { + return res.status(400).json({ message: 'Offer Not Found' }); + } + await offer.remove(); + res.status(200).json({ + success: true, + msg: "Offer Deleted Successfully!!", + // category, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to Delete Offer !!" + }); + } + +}; diff --git a/controllers/directoryController.js b/controllers/directoryController.js index 2b2e31e..5f20924 100644 --- a/controllers/directoryController.js +++ b/controllers/directoryController.js @@ -4,10 +4,11 @@ export const createDirectory = async (req, res) => { try { let images; - // console.log(req.body) - // console.log(req.files.image) + console.log(req.body) + console.log(req.files) if (req.files) { const files = req.files.image; + console.log(files) const myCloud = await cloudinary.uploader.upload(files.tempFilePath, { folder: "cmp/image", }, diff --git a/models/OffersModel.js b/models/OffersModel.js new file mode 100644 index 0000000..baa08ee --- /dev/null +++ b/models/OffersModel.js @@ -0,0 +1,39 @@ +import mongoose from "mongoose" +const offerSchema = new mongoose.Schema( + { + title: { + type: String, + required: true + }, + image: + { + public_id: { + type: String, + required: true, + }, + url: { + type: String, + required: true, + }, + }, + bisunessName: { + type: String, + required: true + }, + location: { + type: String, + required: true + }, + description: { + type: String, + required: true + }, + addedOn: { + type: Date, + default: Date.now + }, + + }, { timestamps: true } +); +const offerModel = mongoose.model("offer", offerSchema); +export default offerModel \ No newline at end of file diff --git a/routes/OffersRoute.js b/routes/OffersRoute.js new file mode 100644 index 0000000..bdc00f4 --- /dev/null +++ b/routes/OffersRoute.js @@ -0,0 +1,16 @@ +import express from "express"; +import { + createOffer, + getAllOffer, + updateOffer, + deleteOffer, + getOneOffer +} from "../controllers/OffersController.js" +const router = express.Router(); + +router.route("/offer/create/").post(createOffer) +router.route("/offer/getAll/").get(getAllOffer) +router.route("/offer/getOne/:id").get(getOneOffer) +router.route("/offer/update/:id").put(updateOffer); +router.route("/offer/delete/:id").delete(deleteOffer); +export default router; \ No newline at end of file diff --git a/tmp/tmp-1-1655124832373 b/tmp/tmp-1-1655124832373 new file mode 100644 index 0000000..62743be Binary files /dev/null and b/tmp/tmp-1-1655124832373 differ diff --git a/tmp/tmp-1-1655180676619 b/tmp/tmp-1-1655180676619 new file mode 100644 index 0000000..f61ad05 Binary files /dev/null and b/tmp/tmp-1-1655180676619 differ diff --git a/tmp/tmp-1-1655191402583 b/tmp/tmp-1-1655191402583 new file mode 100644 index 0000000..62743be Binary files /dev/null and b/tmp/tmp-1-1655191402583 differ diff --git a/tmp/tmp-1-1655192835089 b/tmp/tmp-1-1655192835089 new file mode 100644 index 0000000..25c7510 Binary files /dev/null and b/tmp/tmp-1-1655192835089 differ diff --git a/tmp/tmp-1-1655193210829 b/tmp/tmp-1-1655193210829 new file mode 100644 index 0000000..62743be Binary files /dev/null and b/tmp/tmp-1-1655193210829 differ diff --git a/tmp/tmp-2-1655192977224 b/tmp/tmp-2-1655192977224 new file mode 100644 index 0000000..6fb99c9 Binary files /dev/null and b/tmp/tmp-2-1655192977224 differ