const errorHandling = require('../assets/utils/errorHandling'); const { serverError } = require('../assets/config/errors'); const Favorites = require('../models/favorites'); const Functions = require('../models/functions'); exports.getFavoriteByFunctionId = async (req, res, next) => { const { functionId } = req.params; const { userId } = req; try { const favorite = await Favorites.findOne({ where: { userId, functionId } }); if (!favorite) { return res.status(200).json({ isFavorite: false }); } return res.status(200).json({ isFavorite: true }); } catch (error) { console.log(error); return errorHandling(next, serverError); } } exports.postFavoriteByFunctionId = async (req, res, next) => { const { functionId } = req.params; const { userId } = req; try { const resultFunction = await Functions.findOne({ where: { id: functionId } }); if (!resultFunction) { return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 }); } const favorite = await Favorites.findOne({ where: { userId, functionId } }); if (!favorite) { await Favorites.create({ userId, functionId }); return res.status(201).json({ result: "Le favoris a bien été ajouté!" }); } return errorHandling(next, { message: "La fonction est déjà en favoris.", statusCode: 400 }); } catch (error) { console.log(error); return errorHandling(next, serverError); } } exports.deleteFavoriteByFunctionId = async (req, res, next) => { const { functionId } = req.params; const { userId } = req; try { const resultFunction = await Functions.findOne({ where: { id: functionId } }); if (!resultFunction) { return errorHandling(next, { message: "La fonction n'existe pas.", statusCode: 404 }); } const favorite = await Favorites.findOne({ where: { userId, functionId } }); if (!favorite) { return errorHandling(next, { message: "Le fonction n'est pas en favoris.", statusCode: 400 }); } await favorite.destroy(); return res.status(200).json({ message: "Le fonction a bien été supprimé des favoris." }); } catch (error) { console.log(error); return errorHandling(next, serverError); } }