160 lines
4.7 KiB
JavaScript
160 lines
4.7 KiB
JavaScript
import mongoose from "mongoose";
|
|
import { CurrencyModel } from "./CurrencyModel.js";
|
|
|
|
// Add new Currency
|
|
export const createnew = async (req, res) => {
|
|
const { CurrencyName, CurrencySymbol } = req.body;
|
|
|
|
// console.log(CurrencyName, CurrencySymbol);
|
|
if (!CurrencyName || !CurrencySymbol) {
|
|
return res
|
|
.status(400)
|
|
.json({ message: "Currency name & Currency symbol are required" });
|
|
}
|
|
|
|
try {
|
|
// Check if the currency already exists
|
|
const normalizedCurrencyName = CurrencyName.trim().toUpperCase();
|
|
// console.log(normalizedCurrencyName);
|
|
const trimmedCurrencySymbol = CurrencySymbol.trim();
|
|
// Check if the currency already exists
|
|
const existingCurrency = await CurrencyModel.findOne({
|
|
CurrencyName: normalizedCurrencyName,
|
|
});
|
|
if (existingCurrency) {
|
|
return res
|
|
.status(400)
|
|
.json({ message: " This Currency Name already exists" });
|
|
}
|
|
// console.log("existingCurrency", existingCurrency);
|
|
|
|
// console.log(req.user?._id);
|
|
// Create new currency
|
|
// const newCurrency = new CurrencyModel({
|
|
// CurrencyName: normalizedCurrencyName,
|
|
// CurrencySymbol: trimmedCurrencySymbol,
|
|
// addedBy: req.user?._id,
|
|
// });
|
|
// console.log("newCurrency", newCurrency);
|
|
|
|
const newCurrency = await CurrencyModel.create({
|
|
CurrencyName: normalizedCurrencyName,
|
|
CurrencySymbol: trimmedCurrencySymbol,
|
|
addedBy: req.user?._id,
|
|
});
|
|
// await newCurrency.save();
|
|
|
|
return res.status(201).json({
|
|
message: "Currency created successfully",
|
|
currency: newCurrency,
|
|
});
|
|
} catch (error) {
|
|
if (error.code === 11000) {
|
|
return res.status(400).json({ message: "Currency already exists" });
|
|
}
|
|
res.status(500).json({
|
|
message: error.message
|
|
? error.message
|
|
: "An error occurred while creating the currency",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const getAllcarrency = async (req, res) => {
|
|
try {
|
|
const currency = await CurrencyModel.find().sort({
|
|
createdAt: -1,
|
|
});
|
|
|
|
if (!currency) {
|
|
return res.status(404).json({ message: "No currencies found" });
|
|
}
|
|
|
|
res.status(200).json({ success: true, currency });
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message ? error.message : "Something went wrong",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const updatecarrency = async (req, res) => {
|
|
const { CurrencyName, CurrencySymbol } = req.body;
|
|
const currencyId = req.params.id;
|
|
|
|
if (!CurrencyName?.trim() || !CurrencySymbol?.trim()) {
|
|
return res
|
|
.status(400)
|
|
.json({ message: "Currency name & Currency symbol are required" });
|
|
}
|
|
|
|
const normalizedCurrencyName = CurrencyName.trim().toUpperCase();
|
|
const trimmedCurrencySymbol = CurrencySymbol.trim();
|
|
|
|
try {
|
|
// Check if the currency with the same name already exists
|
|
const existingCurrency = await CurrencyModel.findOne({
|
|
CurrencyName: normalizedCurrencyName,
|
|
_id: { $ne: currencyId }, // Exclude the current currency being updated
|
|
});
|
|
|
|
if (existingCurrency) {
|
|
return res.status(400).json({ message: "Currency name already exists" });
|
|
}
|
|
|
|
// Update currency
|
|
const updatedCurrency = await CurrencyModel.findByIdAndUpdate(
|
|
currencyId,
|
|
{
|
|
CurrencyName: normalizedCurrencyName,
|
|
CurrencySymbol: trimmedCurrencySymbol,
|
|
},
|
|
{ new: true }
|
|
); // To return the updated document
|
|
|
|
if (!updatedCurrency) {
|
|
return res.status(404).json({ message: "Currency not found" });
|
|
}
|
|
|
|
return res.status(200).json({
|
|
message: "Currency updated successfully",
|
|
currency: updatedCurrency,
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
message: error.message
|
|
? error.message
|
|
: "An error occurred while updating the currency",
|
|
});
|
|
}
|
|
};
|
|
|
|
export const deletecarrency = async (req, res) => {
|
|
const currencyId = req.params.id;
|
|
|
|
try {
|
|
// Check if the currency exists
|
|
const currency = await CurrencyModel.findById(currencyId);
|
|
|
|
if (!currency) {
|
|
return res.status(404).json({ message: "Currency not found" });
|
|
}
|
|
|
|
// Perform the deletion
|
|
await CurrencyModel.findByIdAndDelete(currencyId);
|
|
|
|
return res.status(200).json({
|
|
message: "Currency deleted successfully",
|
|
currency: currency,
|
|
});
|
|
} catch (error) {
|
|
// console.error("Error deleting currency:", error); // Log for debugging
|
|
res.status(500).json({
|
|
message: error.message
|
|
? error.message
|
|
: "An error occurred while deleting the currency",
|
|
});
|
|
}
|
|
};
|