diff --git a/controllers/EventsController.js b/controllers/EventsController.js index 4029b98..297e483 100644 --- a/controllers/EventsController.js +++ b/controllers/EventsController.js @@ -1,5 +1,6 @@ import Events from "../models/EventsModel.js" import cloudinary from "cloudinary"; +import { ResisterUserModel } from "../models/EventsModel.js" // import cloudinary from "../Utils/cloudinary.js" //import { v2 as cloudinary } from 'cloudinary' @@ -22,7 +23,8 @@ export const createEvent = async (req, res) => { url: myCloud.secure_url, }, location, - description + description, + addedBy: req.user.id }); res.status(201).json({ @@ -38,7 +40,7 @@ export const createEvent = async (req, res) => { } }; -//get All Product +//get All Event export const getAllEvent = async (req, res) => { try { @@ -57,7 +59,7 @@ export const getAllEvent = async (req, res) => { } }; -//get One Product +//get One Event export const getOneEvent = async (req, res) => { try { @@ -132,7 +134,7 @@ export const updateEvent = async (req, res) => { }; -//delete one category +//delete one Event export const deleteEvent = async (req, res) => { try { @@ -161,3 +163,76 @@ export const deleteEvent = async (req, res) => { } }; + + +//EventRegisterUser + +export const RegisterUserInEvent = async (req, res) => { + try { + const totalUserRegister = await ResisterUserModel.findOne({ + userId: req.user.id, + eventId: req.params.id, + }) + if (totalUserRegister) { + + return res.status(500).json({ + success: false, + msg: "You Have Already Registered for this Event" + }); + } + const Event = await ResisterUserModel.create({ + eventId: req.params.id, + userId: req.user.id, + + }) + res.status(201).json({ + success: true, + msg: " Register Successfully!!", + Event, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to Register !!" + }); + } +} +//getAllRegisterUser +export const getAllRegisterUser = async (req, res) => { + try { + const totalUserRegister = await ResisterUserModel.find({ eventId: req.params.id }).count() + const user = await ResisterUserModel.find({ eventId: req.params.id }).populate('userId') + res.status(200).json({ + success: true, + msg: " get All user Register in Event Successfully!!", + totalUserRegister, + user, + }); + } catch (error) { + console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } +} +//getSingleRegisterUser +export const getSingleRegisterUser = async (req, res) => { + try { + + const user = await ResisterUserModel.findById(req.params.id).populate('userId'). + + res.status(200).json({ + success: true, + msg: " get Successfully!!", + user, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } +} \ No newline at end of file diff --git a/controllers/RequirementController.js b/controllers/RequirementController.js index fe0f7b1..eb44e84 100644 --- a/controllers/RequirementController.js +++ b/controllers/RequirementController.js @@ -1,5 +1,6 @@ import RequirementModel from "../models/RequirementModel.js" import cloudinary from "cloudinary"; +import { RequirementCommentModel } from "../models/RequirementModel.js"; // import cloudinary from "../Utils/cloudinary.js" //import { v2 as cloudinary } from 'cloudinary' @@ -230,4 +231,65 @@ export const Approved = async (req, res) => { }); } -}; \ No newline at end of file +}; +//comment + +export const AddComment = async (req, res) => { + try { + + const comment = await RequirementCommentModel.create({ + requirementId: req.params.id, + userId: req.user._id, + comment: req.body.comment + + }) + res.status(201).json({ + success: true, + msg: " Create Successfully!!", + comment, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to create !!" + }); + } +} +//get All Comment +export const getAllComment = async (req, res) => { + try { + + const comment = await RequirementCommentModel.find() + res.status(200).json({ + success: true, + msg: " get All Comment Successfully!!", + comment, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } +} +//get Comment +export const getSingleComment = async (req, res) => { + try { + + const comment = await RequirementCommentModel.findById(req.params.id).populate('userId'). + + res.status(200).json({ + success: true, + msg: " get Comment Successfully!!", + comment, + }); + } catch (error) { + // console.log(error) + res.status(500).json({ + success: false, + msg: "Failled to fetch !!" + }); + } +} \ No newline at end of file diff --git a/models/EventsModel.js b/models/EventsModel.js index 7e4d422..98c9945 100644 --- a/models/EventsModel.js +++ b/models/EventsModel.js @@ -24,6 +24,11 @@ const eventSchema = new mongoose.Schema( type: String, required: true }, + addedBy: { + type: mongoose.Schema.ObjectId, + ref: "User", + required: true, + }, addedOn: { type: Date, default: Date.now @@ -32,4 +37,23 @@ const eventSchema = new mongoose.Schema( }, { timestamps: true } ); const eventModel = mongoose.model("event", eventSchema); -export default eventModel \ No newline at end of file +export default eventModel + +const ResisterUserSchema = new mongoose.Schema( + { + + eventId: { + type: String, + required: true + }, + userId: { + type: mongoose.Schema.ObjectId, + ref: "User", + required: true, + }, + + + }, { timestamps: true } +); +const ResisterUserModel = mongoose.model("RegisterUserInEvent", ResisterUserSchema); +export { ResisterUserModel } \ No newline at end of file diff --git a/models/RequirementModel.js b/models/RequirementModel.js index 2488d19..e75252c 100644 --- a/models/RequirementModel.js +++ b/models/RequirementModel.js @@ -41,4 +41,30 @@ const RequirementSchema = new mongoose.Schema( }, { timestamps: true } ); const RequirementModel = mongoose.model("Requirement", RequirementSchema); -export default RequirementModel; \ No newline at end of file +export default RequirementModel; + + +const RequirementCommentSchema = new mongoose.Schema( + { + + requirementId: { + type: String, + required: true + }, + + comment: { + type: String, + required: true + }, + + userId: { + type: mongoose.Schema.ObjectId, + ref: "User", + required: true, + }, + + + }, { timestamps: true } +); +const RequirementCommentModel = mongoose.model("RequirementComment", RequirementCommentSchema); +export { RequirementCommentModel }; \ No newline at end of file diff --git a/routes/EventsRoute.js b/routes/EventsRoute.js index f1baef3..94eef0f 100644 --- a/routes/EventsRoute.js +++ b/routes/EventsRoute.js @@ -4,13 +4,22 @@ import { getAllEvent, updateEvent, deleteEvent, - getOneEvent + getOneEvent, + RegisterUserInEvent, + getAllRegisterUser, + getSingleRegisterUser + } from "../controllers/EventsController.js" const router = express.Router(); - -router.route("/event/create/").post(createEvent) +import { isAuthenticatedUser, authorizeRoles } from "../middlewares/auth.js" +router.route("/event/create/").post(isAuthenticatedUser, 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); +router.route("/event/update/:id").put(isAuthenticatedUser, updateEvent); +router.route("/event/delete/:id").delete(isAuthenticatedUser, deleteEvent); +// +//user +router.route("/event/user/register/:id").post(isAuthenticatedUser, RegisterUserInEvent) +router.route("/event/admin/registerUser/getAll/:id").get(isAuthenticatedUser, getAllRegisterUser) +router.route("/event/getOne/registerUser/:id").get(isAuthenticatedUser, getSingleRegisterUser) export default router; \ No newline at end of file diff --git a/routes/RequirementRoute.js b/routes/RequirementRoute.js index df9e7bd..8b4adc9 100644 --- a/routes/RequirementRoute.js +++ b/routes/RequirementRoute.js @@ -5,7 +5,10 @@ import { getOneRequirement, updateRequirement, deleteOneRequirement, - Approved + Approved, + AddComment, + getAllComment, + getSingleComment } from "../controllers/RequirementController.js" import { isAuthenticatedUser, authorizeRoles } from "../middlewares/auth.js" const router = express.Router(); @@ -15,7 +18,11 @@ router.route("/requirement/getAll/").get(isAuthenticatedUser, getAllRequirement) router.route("/requirement/getOne/:id").get(isAuthenticatedUser, getOneRequirement) router.route("/requirement/update/:id").put(isAuthenticatedUser, updateRequirement); router.route("/requirement/delete/:id").delete(isAuthenticatedUser, deleteOneRequirement); +//user +router.route("/requirement/comment/create/:id").post(isAuthenticatedUser, AddComment); //admin router.route("/admin/requirement/approve/:id").get(isAuthenticatedUser, authorizeRoles("admin"), Approved); +router.route("/admin/requirement/comment/getOne/:id").get(isAuthenticatedUser, getSingleComment); +router.route("/admin/requirement/comment/getAll").get(isAuthenticatedUser, getAllComment); export default router; \ No newline at end of file diff --git a/tmp/tmp-1-1657887651230 b/tmp/tmp-1-1657887651230 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-1-1657887651230 differ diff --git a/tmp/tmp-1-1658144371498 b/tmp/tmp-1-1658144371498 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-1-1658144371498 differ diff --git a/tmp/tmp-1-1658214653697 b/tmp/tmp-1-1658214653697 new file mode 100644 index 0000000..6fb99c9 Binary files /dev/null and b/tmp/tmp-1-1658214653697 differ diff --git a/tmp/tmp-1-1658231137073 b/tmp/tmp-1-1658231137073 new file mode 100644 index 0000000..b9a863b Binary files /dev/null and b/tmp/tmp-1-1658231137073 differ