diff --git a/app.js b/app.js index 0e7384c..afac97a 100644 --- a/app.js +++ b/app.js @@ -34,5 +34,8 @@ app.use("/api", directory); //News import news from "./routes/newsRoute.js" app.use("/api", news); +//Events +import Event from "./routes/EventsRoute.js" +app.use("/api", Event); export default app; \ No newline at end of file diff --git a/controllers/EventsController.js b/controllers/EventsController.js new file mode 100644 index 0000000..b276c00 --- /dev/null +++ b/controllers/EventsController.js @@ -0,0 +1,162 @@ +import Events from "../models/EventsModel.js" +import cloudinary from "cloudinary"; +// import cloudinary from "../Utils/cloudinary.js" +//import { v2 as cloudinary } from 'cloudinary' + +export const createEvent = 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 } = req.body; + + const data = await Events.create({ + title, + image: { + public_id: myCloud.public_id, + url: myCloud.secure_url, + }, + location, + description + + }); + res.status(201).json({ + success: true, + msg: " create Event Successfully!!", + data, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to create Event !!" + }); + } + +}; +//get All Product +export const getAllEvent = async (req, res) => { + + try { + const Event = await Events.find(); + // console.log(category) + res.status(200).json({ + success: true, + msg: " fetch Successfully!!", + Event, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } + +}; +//get One Product +export const getOneEvent = async (req, res) => { + + try { + const Event = await Events.findById(req.params.id); + // console.log(category) + res.status(200).json({ + success: true, + msg: " fetch Successfully!!", + Event, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } + +}; + +// 3.update Category +export const updateEvent = async (req, res) => { + try { + const newEventData = { + title: req.body.title, + description: req.body.description, + location: req.body.location, + }; + const files = req.files.image; + + if (req.files.image !== "") { + const getEvent = await Events.findById(req.params.id); + + const imageId = getEvent.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) + newEventData.image = { + public_id: myCloud.public_id, + url: myCloud.secure_url, + }; + } + // console.log(newCategoryData) + //req.user.id, + const ModifyEvent = await Events.findByIdAndUpdate(req.params.id, newEventData, + + { new: true } + // runValidators: true, + // useFindAndModify: false, + ); + + res.status(200).json({ + success: true, + ModifyEvent + }); + + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to UpDate Event!!" + + }); + } + +}; + +//delete one category +export const deleteEvent = async (req, res) => { + + try { + //delete image from cloudinary + const getEvent = await Events.findById(req.params.id); + // console.log(categ) + const imageId = getEvent.image.public_id; + await cloudinary.uploader.destroy(imageId) + + //-------------------------// + const event = await Events.findByIdAndDelete(req.params.id) + if (!event) { + return res.status(400).json({ message: 'Event Not Found' }); + } + await event.remove(); + res.status(200).json({ + success: true, + msg: "Event Deleted Successfully!!", + // category, + }); + } catch (error) { + res.status(500).json({ + success: false, + msg: "Failled to Delete event !!" + }); + } + +}; diff --git a/models/EventsModel.js b/models/EventsModel.js new file mode 100644 index 0000000..7e4d422 --- /dev/null +++ b/models/EventsModel.js @@ -0,0 +1,35 @@ +import mongoose from "mongoose" +const eventSchema = new mongoose.Schema( + { + title: { + type: String, + required: true + }, + image: + { + public_id: { + type: String, + required: true, + }, + url: { + type: String, + required: true, + }, + }, + location: { + type: String, + required: true + }, + description: { + type: String, + required: true + }, + addedOn: { + type: Date, + default: Date.now + }, + + }, { timestamps: true } +); +const eventModel = mongoose.model("event", eventSchema); +export default eventModel \ No newline at end of file diff --git a/routes/EventsRoute.js b/routes/EventsRoute.js new file mode 100644 index 0000000..f1baef3 --- /dev/null +++ b/routes/EventsRoute.js @@ -0,0 +1,16 @@ +import express from "express"; +import { + createEvent, + getAllEvent, + updateEvent, + deleteEvent, + getOneEvent +} from "../controllers/EventsController.js" +const router = express.Router(); + +router.route("/event/create/").post(createEvent) +router.route("/event/getAll/").get(getAllEvent) +router.route("/event/getOne/:id").get(getOneEvent) +router.route("/event/update/:id").put(updateEvent); +router.route("/event/delete/:id").delete(deleteEvent); +export default router; \ No newline at end of file diff --git a/tmp/tmp-1-1655099376259 b/tmp/tmp-1-1655099376259 new file mode 100644 index 0000000..f61ad05 Binary files /dev/null and b/tmp/tmp-1-1655099376259 differ diff --git a/tmp/tmp-1-1655100458997 b/tmp/tmp-1-1655100458997 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-1-1655100458997 differ diff --git a/tmp/tmp-1-1655100525110 b/tmp/tmp-1-1655100525110 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-1-1655100525110 differ diff --git a/tmp/tmp-2-1655100008205 b/tmp/tmp-2-1655100008205 new file mode 100644 index 0000000..f61ad05 Binary files /dev/null and b/tmp/tmp-2-1655100008205 differ diff --git a/tmp/tmp-3-1655100355711 b/tmp/tmp-3-1655100355711 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-3-1655100355711 differ