278 lines
7.2 KiB
JavaScript
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
|
|
};
|