Website : rimsha.abasa.com
backdoor
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
ah7-backend
/
src
/
controllers
/
Filename :
exerciseItem.controller.js
back
Copy
import Exercise from '../models/exercise.model.js'; import responseHandler from "../utils/ResponseHandler.js"; import mongoose from 'mongoose'; import { uploadFileToS3, deleteFileFromS3 } from "../services/s3Service.js"; // Add a new exercise to the exercises array const addExerciseItem = async (req, res) => { try { const { id } = req.params; // Main exercise ID const { name, instructions } = req.body; const exerciseImageFile = req.file; // Exercise image file console.log("Name:", name); console.log("Instructions:", instructions); console.log("Exercise Image File:", exerciseImageFile); // Validate data if (!name || !instructions || !exerciseImageFile) { return responseHandler.error(res, "Invalid data provided", 400); } const mainExercise = await Exercise.findById(id); if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // Upload exercise image to S3 const { publicURL: exerciseImageURL } = await uploadFileToS3(exerciseImageFile); console.log("Exercise Image URL:", exerciseImageURL); // Create a new exercise item with a unique ID const newExerciseItem = { _id: new mongoose.Types.ObjectId(), // Dynamically generated ID name, image: exerciseImageURL, // Save the S3 image URL instructions, }; mainExercise.exercises.push(newExerciseItem); await mainExercise.save(); return responseHandler.success(res, "Exercise item added successfully", mainExercise); } catch (error) { console.log("error", error); return responseHandler.error(res, "Failed to add exercise item", 500, error.message); } }; // Update an exercise in the exercises array const updateExerciseItem = async (req, res) => { try { const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID const { name, instructions } = req.body; const exerciseImageFile = req.file; // Optional: New exercise image file console.log("Name:", name); console.log("Instructions:", instructions); console.log("Exercise Image File:", exerciseImageFile); console.log("Exercise ID:", exerciseId); // Log the exerciseId for debugging const mainExercise = await Exercise.findById(id); if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // Log the exercises array for debugging console.log("Exercises Array:", mainExercise.exercises); // Find the exercise item by ID const exerciseItem = mainExercise.exercises.find( (exercise) => { // Check if exercise._id exists and is a valid ObjectId if (!exercise._id) { console.log("Exercise item without _id:", exercise); return false; } return exercise._id.toString() === exerciseId; } ); if (!exerciseItem) return responseHandler.error(res, "Exercise item not found", 404); // Upload new exercise image to S3 if provided if (exerciseImageFile) { // Delete the old exercise image from S3 if it exists if (exerciseItem.image) { await deleteFileFromS3(exerciseItem.image); } // Upload the new exercise image const { publicURL: exerciseImageURL } = await uploadFileToS3(exerciseImageFile); exerciseItem.image = exerciseImageURL; // Update the image URL } // Update fields if (name) exerciseItem.name = name; if (instructions) exerciseItem.instructions = instructions; await mainExercise.save(); return responseHandler.success(res, "Exercise item updated successfully", mainExercise); } catch (error) { console.log("error", error); return responseHandler.error(res, "Failed to update exercise item", 500, error.message); } }; // Delete an exercise from the exercises array const deleteExerciseItem = async (req, res) => { try { const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID const mainExercise = await Exercise.findById(id); if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // Log the exercises array for debugging console.log("Exercises Array:", mainExercise.exercises); // Remove exercise item by ID mainExercise.exercises = mainExercise.exercises.filter( (exercise) => { // Check if exercise._id exists and is a valid ObjectId if (!exercise._id) { console.log("Exercise item without _id:", exercise); return false; } return exercise._id.toString() === exerciseId; } ); await mainExercise.save(); return responseHandler.success(res, "Exercise item deleted successfully", mainExercise); } catch (error) { console.log("error", error); return responseHandler.error(res, "Failed to delete exercise item", 500, error.message); } }; // Get a specific exercise from the exercises array const getExerciseItem = async (req, res) => { try { const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID const mainExercise = await Exercise.findById(id); if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // Log the exercises array for debugging console.log("Exercises Array:", mainExercise.exercises); const exerciseItem = mainExercise.exercises.find( (exercise) => { // Check if exercise._id exists and is a valid ObjectId if (!exercise._id) { console.log("Exercise item without _id:", exercise); return false; } return exercise._id.toString() === exerciseId; } ); if (!exerciseItem) return responseHandler.error(res, "Exercise item not found", 404); return responseHandler.success(res, "Exercise item fetched successfully", exerciseItem); } catch (error) { console.log("error", error); return responseHandler.error(res, "Failed to fetch exercise item", 500, error.message); } }; export { addExerciseItem, updateExerciseItem, deleteExerciseItem, getExerciseItem } // import Exercise from '../models/exercise.model.js'; // import responseHandler from "../utils/ResponseHandler.js"; // import mongoose from 'mongoose'; // // Add a new exercise to the exercises array // const addExerciseItem = async (req, res) => { // try { // const { id } = req.params; // Main exercise ID // const { name, image, instructions } = req.body; // if (!name || !image || !instructions) return responseHandler.error(res, "Invalid data provided", 400); // const mainExercise = await Exercise.findById(id); // if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // // Create a new exercise item with a unique ID // const newExerciseItem = { // _id: new mongoose.Types.ObjectId(), // Dynamically generated ID // name, // image, // instructions, // }; // mainExercise.exercises.push(newExerciseItem); // await mainExercise.save(); // return responseHandler.success(res, "Exercise item added successfully", mainExercise); // } catch (error) { // return responseHandler.error(res, "Failed to add exercise item", 500, error.message); // } // }; // // Update an exercise in the exercises array || issue in testing // const updateExerciseItem = async (req, res) => { // try { // const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID // const { name, image, instructions } = req.body; // const mainExercise = await Exercise.findById(id); // if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // const exerciseItem = mainExercise.exercises.find( // (exercise) => exercise._id.toString() === exerciseId // ); // if (!exerciseItem) return responseHandler.error(res, "Exercise item not found", 404); // // Update fields // if (name) exerciseItem.name = name; // if (image) exerciseItem.image = image; // if (instructions) exerciseItem.instructions = instructions; // await mainExercise.save(); // return responseHandler.success(res, "Exercise item updated successfully", mainExercise); // } catch (error) { // return responseHandler.error(res, "Failed to update exercise item", 500, error.message); // } // }; // // Delete an exercise from the exercises array // const deleteExerciseItem = async (req, res) => { // try { // const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID // const mainExercise = await Exercise.findById(id); // if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // // Remove exercise item by ID // mainExercise.exercises = mainExercise.exercises.filter( // (exercise) => exercise._id.toString() !== exerciseId // ); // await mainExercise.save(); // return responseHandler.success(res, "Exercise item deleted successfully", mainExercise); // } catch (error) { // return responseHandler.error(res, "Failed to delete exercise item", 500, error.message); // } // }; // // Get a specific exercise from the exercises array // const getExerciseItem = async (req, res) => { // try { // const { id, exerciseId } = req.params; // Main exercise ID and nested exercise ID // const mainExercise = await Exercise.findById(id); // if (!mainExercise) return responseHandler.error(res, "Main exercise not found", 404); // const exerciseItem = mainExercise.exercises.find( // (exercise) => exercise._id.toString() === exerciseId // ); // if (!exerciseItem) return responseHandler.error(res, "Exercise item not found", 404); // return responseHandler.success(res, "Exercise item fetched successfully", exerciseItem); // } catch (error) { // return responseHandler.error(res, "Failed to fetch exercise item", 500, error.message); // } // }; // export { // addExerciseItem, // updateExerciseItem, // deleteExerciseItem, // getExerciseItem // }