7fife-backend/controllers/categories.controller.js

278 lines
7.2 KiB
JavaScript

const Category = require('../models/categories.model');
const createCategories = async (req, res) => {
try {
console.log(req.body)
const name =req.body;
if (!req.body.name) {
return res.status(400).send({
error_code: 400,
message: "Category name is required"
});
}
let obj = {
name: req.body.name ,
};
if (req.file) {
obj["image"] = {
fileName: req.file.filename,
fileAddress: req.file.filename
};
const baseUrl = `${req.protocol}://${req.get('host')}`;
const imagePath = `uploads/${req.file.filename}`;
const imageUrl = `${baseUrl}/${imagePath}`;
obj["imageUrl"] = imageUrl;
}
const newCategory = await Category.create(obj);
return res.status(201).send({
error_code: 200,
message: "Categories created",
category: newCategory
});
} catch (err) {
console.log("Error inside create Categories Controller", err);
return res.status(500).send({
error_code: 500,
message: "Internal Server Error"
});
}
};
// const updateCategories = async (req, res) => {
// try {
// const categoryId = req.params.id;
// let category = await Category.findById(categoryId);
// if (!category) {
// return res.json({
// error_code: 404,
// message: "Category not found"
// });
// }
// if (req.file) {
// const baseUrl = `${req.protocol}://${req.get('host')}`;
// const imagePath = `uploads/${req.file.filename}`;
// const imageUrl = `${baseUrl}/${imagePath}`;
// category.imageUrl = imageUrl;
// category.image = {
// fileName: req.file.filename,
// fileAddress: req.file.path,
// };
// }
// const updatedCategory = await category.save();
// console.log("🚀 ~ updateCategories ~ updatedCategory:", updatedCategory)
// return res.status(200).send({
// error_code: 200,
// message: "Category updated",
// category: updatedCategory
// });
// } catch (err) {
// console.log("Error inside update Categories Controller", err);
// return res.status(500).send({
// error_code: 500,
// message: "Internal Server Error"
// });
// }
// };
// ----------------------------------------------
const updateCategories = async (req, res) => {
try {
const categoryId = req.params.id;
let category = await Category.findById(categoryId);
if (!category) {
return res.json({
error_code: 404,
message: "Category not found"
});
}
if (req.body.categoriesName) {
category.name = req.body.categoriesName;
}
if (req.file) {
const baseUrl = `${req.protocol}://${req.get('host')}`;
const imagePath = `uploads/${req.file.filename}`;
const imageUrl = `${baseUrl}/${imagePath}`;
category.imageUrl = imageUrl;
category.image = {
fileName: req.file.filename,
fileAddress: req.file.path,
};
}
const updatedCategory = await category.save();
console.log("updateCategories ~ updatedCategory:", updatedCategory);
return res.status(200).send({
error_code: 200,
message: "Category updated",
category: updatedCategory
});
} catch (err) {
console.log("Error inside update Categories Controller", err);
return res.status(500).send({
error_code: 500,
message: "Internal Server Error"
});
}
};
// -------------------------------------------
const deleteCategories = async (req, res) => {
try {
const categoryId = req.params.id; // Assuming you're passing category id in the request params
// Find the category by id and remove it
const deletedCategory = await Category.findByIdAndRemove(categoryId);
// Check if the category exists
if (!deletedCategory) {
return res.status(404).send({
error_code: 404,
message: "Category not found"
});
}
// Return success response with the deleted category
return res.status(200).send({
error_code: 200,
message: "Category deleted",
category: deletedCategory
});
} catch (err) {
console.log("Error inside delete Categories Controller", err);
return res.status(500).send({
error_code: 500,
message: "Internal Server Error"
});
}
};
const changeCategoryStatus = async (req, res) => {
try {
const { id } = req.params;
const CategoryData = await Category.findById(id);
if (!CategoryData) {
return res.status(400).send({
error_code: 400,
message: 'Ads not found'
});
}
CategoryData.status = CategoryData.status === 'activate' ? 'deactivate' : 'activate';
await CategoryData.save();
res.status(200).send({
message: `ads status toggled successfully to ${CategoryData.status}`,
CategoryData: CategoryData
});
} catch (err) {
console.error('Error inside update admin', err);
res.status(500).send({
error_code: 500,
message: 'Internal Server Error'
});
}
};
const getcategoriesPage = async (req, res) => {
try {
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 5
const skip = (page - 1) * limit;
const searchQuery = req.query.search || '';
const categories = await Category.find({
name: { $regex: searchQuery, $options: 'i' }
})
.skip(skip)
.limit(limit);
console.log("🚀 ~ getCategories ~ categories:", categories)
const totalCount = await Category.countDocuments({
name: { $regex: searchQuery, $options: 'i' }
});
res.status(200).json({
error_code: 200,
message: 'Categories fetched successfully',
categories,
total_count: totalCount,
page,
limit
});
} catch (err) {
console.error('Error inside getCategories Controller', err);
res.status(500).json({
error_code: 500,
message: 'Internal Server Error'
});
}
};
const getCategories = async (req, res) => {
try {
const categories = await Category.find({});
res.status(200).json({
error_code: 200,
message: 'Categories fetched successfully',
categories: categories
});
} catch (err) {
console.error('Error inside getCategories Controller', err);
res.status(500).json({
error_code: 500,
message: 'Internal Server Error'
});
}
};
// const deleteMany = async (req, res) => {
// try {
// const deleted = await Category.deleteMany({}); // Passing an empty filter object deletes all documents
// res.status(200).json({
// error_code: 200,
// message: 'All categories deleted successfully',
// deleted
// });
// } catch (err) {
// console.error('Error inside deleteMany Controller', err);
// res.status(500).json({
// error_code: 500,
// message: 'Internal Server Error'
// });
// }
// };
module.exports = {
createCategories,
updateCategories,
deleteCategories,
changeCategoryStatus,
getCategories,
getcategoriesPage
};