167 lines
5.0 KiB
JavaScript
167 lines
5.0 KiB
JavaScript
import mongoose from "mongoose";
|
|
|
|
import cloudinary from "../../Utils/cloudinary.js";
|
|
import { DesignModel } from "./designModel.js";
|
|
|
|
// Add new Category
|
|
export const addDesign = async (req, res) => {
|
|
const { designName, categoryName } = req.body;
|
|
const { designImage } = req.files;
|
|
const { designImageJson } = req.body;
|
|
|
|
// console.log(categoryName, categoryImage);
|
|
|
|
if (!req?.user) return res.status(400).json({ message: "please login !" });
|
|
try {
|
|
if (!mongoose.Types.ObjectId.isValid(req.user._id)) {
|
|
return res.status(400).json({ message: "please login again " });
|
|
}
|
|
const result = await cloudinary.v2.uploader.upload(
|
|
designImage.tempFilePath,
|
|
{
|
|
folder: "jatinMor/design",
|
|
}
|
|
);
|
|
|
|
if (result) {
|
|
const design = await DesignModel.create({
|
|
designName,
|
|
categoryName,
|
|
designImage: result,
|
|
designImageJson: JSON.parse(designImageJson),
|
|
addedBy: req.user._id,
|
|
});
|
|
if (design) {
|
|
return res
|
|
.status(201)
|
|
.json({ success: true, design, message: "design Added" });
|
|
}
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message ? error.message : "Something went Wrong",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const getDesign = async (req, res) => {
|
|
try {
|
|
// if (!req?.user) return res.status(400).json({ message: "please login !" });
|
|
const designs = await DesignModel.find().sort({
|
|
createdAt: -1,
|
|
});
|
|
|
|
if (!designs) {
|
|
return res.status(404).json({ message: "No design found" });
|
|
}
|
|
|
|
res.status(200).json({ success: true, designs });
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message ? error.message : "Something went wrong",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const updateDesign = async (req, res) => {
|
|
try {
|
|
if (!req?.user) return res.status(400).json({ message: "please login !" });
|
|
const { _id } = req.params;
|
|
const { designName, categoryName } = req.body;
|
|
const olderImage = req.body?.olderImage;
|
|
const designImage = req.files?.designImage;
|
|
const { designImageJson } = req.body;
|
|
|
|
if (!mongoose.Types.ObjectId.isValid(_id)) {
|
|
return res.status(404).json({ error: "Can not find the document " });
|
|
}
|
|
|
|
// find the document with the id to delete the image from cloudinary
|
|
if (JSON.parse(olderImage).length == 0) {
|
|
const deletefromCloudinary = await DesignModel.findOne({ _id: _id });
|
|
|
|
const deleteresponse = await cloudinary.v2.uploader.destroy(
|
|
deletefromCloudinary.designImage.public_id
|
|
);
|
|
if (deleteresponse) {
|
|
const result = await cloudinary.v2.uploader.upload(
|
|
designImage.tempFilePath,
|
|
{
|
|
folder: "jatinMor/design",
|
|
}
|
|
);
|
|
const update = await DesignModel.findOneAndUpdate(
|
|
{ _id: _id },
|
|
{
|
|
designName: designName,
|
|
categoryName: categoryName,
|
|
designImage: result,
|
|
designImageJson: JSON.parse(designImageJson),
|
|
}, // Provide the updated categoryName
|
|
{ new: true } // To return the updated document
|
|
);
|
|
if (!update) {
|
|
return res
|
|
.status(404)
|
|
.json({ message: "Can not update document, something went wrong" });
|
|
} else {
|
|
return res.status(200).json({ success: true, update });
|
|
}
|
|
}
|
|
} else {
|
|
const update = await DesignModel.findOneAndUpdate(
|
|
{ _id: _id },
|
|
{
|
|
designName: designName,
|
|
categoryName: categoryName,
|
|
designImage: JSON.parse(olderImage),
|
|
designImageJson: designImageJson,
|
|
}, // Provide the updated categoryName
|
|
{ new: true } // To return the updated document
|
|
);
|
|
if (update) {
|
|
return res.status(200).json({ success: true, update });
|
|
}
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message ? error.message : "Something went wrong",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const deleteDesign = async (req, res) => {
|
|
try {
|
|
if (!req?.user) return res.status(400).json({ message: "please login !" });
|
|
const { _id } = req.params;
|
|
if (!mongoose.Types.ObjectId.isValid(_id)) {
|
|
return res.status(404).json({ error: "Can not find the document " });
|
|
}
|
|
|
|
const deletefromCloudinary = await DesignModel.findOne({ _id: _id });
|
|
|
|
const deleteresponse = await cloudinary.v2.uploader.destroy(
|
|
deletefromCloudinary.designImage.public_id
|
|
);
|
|
if (deleteresponse) {
|
|
const deleteDesign = await DesignModel.findOneAndDelete({ _id: _id });
|
|
if (!deleteDesign) {
|
|
return res.status(404).json({
|
|
error: "Can not find the document with the provided id to delete ",
|
|
});
|
|
}
|
|
res.status(200).json({ success: true, deleteDesign });
|
|
} else {
|
|
return res.status(404).json({ error: "can not delete the design " });
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message ? error.message : "Something went wrong",
|
|
});
|
|
}
|
|
};
|