diff --git a/src/controllers/UserControllers/user.suggestions.controller.ts b/src/controllers/UserControllers/user.suggestions.controller.ts index bedd7ae..a2f8edc 100644 --- a/src/controllers/UserControllers/user.suggestions.controller.ts +++ b/src/controllers/UserControllers/user.suggestions.controller.ts @@ -7,6 +7,7 @@ import { sendNotification } from "../../config/firebaseWeb"; import notificationToken from "../../models/notificationToken"; import usernotifications from "../../models/usernotifications"; import e from "cors"; +import { deleteFromCloudinary } from "../../services/uploadToCloudinary"; export const getSuggestions = async ( req: any, @@ -65,7 +66,6 @@ export const postSuggestion = async ( } const messId = currUser.Eating_Mess; const newSuggestion = req.body; - console.log(req.body); const addSuggestion = await SuggestionsModel.create({ messId, userId: currUser._id, @@ -136,18 +136,22 @@ export const deleteSuggestion = async ( if (!currUser) { return next(createHttpError(403, "Unauthorized")); } - const suggestionId = req.query.suggestionId; - const deletedSuggestion = await SuggestionsModel.findOneAndDelete({ + const currSuggestion = await SuggestionsModel.findOne({ _id: suggestionId, userId: currUser._id, }); - - if (deletedSuggestion) { - // console.log(deletedSuggestion); + if (currSuggestion) { + const imageUrl = currSuggestion.image?.split('/'); + if (imageUrl != null) { + const imagePublicID = imageUrl[imageUrl?.length - 1].split('.')[0]; + const publicID = `Smart_Mess/User_Uploads/${imagePublicID}`; + await deleteFromCloudinary(publicID); + await currSuggestion.deleteOne(); + } res .status(200) - .send({ message: "Sugestion deleted successfully", deletedSuggestion }); + .send({ message: "Sugestion deleted successfully", deletedSuggestion: currSuggestion }); } else { res.status(404).send({ message: "Suggestion Not Found" }); } @@ -303,13 +307,13 @@ export const voteSuggestionComment = async ( const updateType = req.body.upvote === true ? { - $addToSet: { "children.$.upvotes": currUser._id }, - $pull: { "children.$.downvotes": currUser._id }, - } + $addToSet: { "children.$.upvotes": currUser._id }, + $pull: { "children.$.downvotes": currUser._id }, + } : { - $pull: { "children.$.upvotes": currUser._id }, - $addToSet: { "children.$.downvotes": currUser._id }, - }; + $pull: { "children.$.upvotes": currUser._id }, + $addToSet: { "children.$.downvotes": currUser._id }, + }; const newVote = await SuggestionsModel.updateOne( { _id: suggestionId, diff --git a/src/models/suggestions.ts b/src/models/suggestions.ts index e3cb6e0..ff3ca39 100644 --- a/src/models/suggestions.ts +++ b/src/models/suggestions.ts @@ -55,4 +55,5 @@ const Suggestions = new Schema({ }, }); + export default mongoose.model("suggestions", Suggestions); diff --git a/src/services/uploadToCloudinary.ts b/src/services/uploadToCloudinary.ts index c4f22ff..b29c762 100644 --- a/src/services/uploadToCloudinary.ts +++ b/src/services/uploadToCloudinary.ts @@ -41,8 +41,18 @@ export const uploadToCloudinary = async ( next(); } catch (err) { const mute = err; - console.log({cloudinaryError:err}); + console.log({ cloudinaryError: err }); console.error("Error Occured in Cloudinary Upload"); return next(createHttpError(500)); } }; + + +export const deleteFromCloudinary = async (publicID: string) => { + cloudinary.uploader.destroy(publicID).then(() => { + return 1; + }).catch((err) => { + console.log(err); + throw Error("cloudinary delete error"); + }) +}