134 lines
2.5 KiB
JavaScript
134 lines
2.5 KiB
JavaScript
import prisma from "../prisma/client.js";
|
|
|
|
import {sendEmail} from "../utils/sendEmail.js";
|
|
import {getEmailsByType} from "../utils/getEmailByTypes.js";
|
|
|
|
/* CREATE INQUIRY */
|
|
export const createInquiry = async (req, res) => {
|
|
try {
|
|
const {fullName, number, emailId, subject, message} = req.body;
|
|
|
|
if (!fullName || !number) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: "Full name and number are required",
|
|
});
|
|
}
|
|
|
|
const inquiry = await prisma.inquiry.create({
|
|
data: {
|
|
fullName,
|
|
number,
|
|
emailId,
|
|
subject,
|
|
message,
|
|
},
|
|
});
|
|
try {
|
|
const emailList = await getEmailsByType("INQUIRY");
|
|
|
|
if (emailList && emailList.length > 0) {
|
|
await sendEmail({
|
|
to: emailList,
|
|
subject: "New Inquiry Received",
|
|
html: `
|
|
<h2>New Inquiry</h2>
|
|
|
|
<p><b>Name:</b> ${fullName}</p>
|
|
<p><b>Phone:</b> ${number}</p>
|
|
<p><b>Email:</b> ${emailId}</p>
|
|
|
|
<p><b>Subject:</b> ${subject}</p>
|
|
<p><b>Message:</b> ${message}</p>
|
|
`,
|
|
});
|
|
}
|
|
} catch (err) {
|
|
console.error("Inquiry email failed:", err);
|
|
}
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
status: 200,
|
|
data: inquiry,
|
|
message: "Inquiry added successfully",
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
res.status(500).json({
|
|
success: false,
|
|
message: "Failed to add inquiry",
|
|
});
|
|
}
|
|
};
|
|
|
|
/* GET ALL */
|
|
export const getInquiries = async (req, res) => {
|
|
try {
|
|
const inquiries = await prisma.inquiry.findMany({
|
|
orderBy: {
|
|
createdAt: "desc",
|
|
},
|
|
});
|
|
|
|
res.json({
|
|
success: true,
|
|
data: inquiries,
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: "Failed to fetch inquiries",
|
|
});
|
|
}
|
|
};
|
|
|
|
/* GET SINGLE */
|
|
export const getInquiry = async (req, res) => {
|
|
try {
|
|
const {id} = req.params;
|
|
|
|
const inquiry = await prisma.inquiry.findUnique({
|
|
where: {id: Number(id)},
|
|
});
|
|
|
|
if (!inquiry) {
|
|
return res.status(404).json({
|
|
success: false,
|
|
message: "Inquiry not found",
|
|
});
|
|
}
|
|
|
|
res.json({
|
|
success: true,
|
|
data: inquiry,
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: "Failed to fetch inquiry",
|
|
});
|
|
}
|
|
};
|
|
|
|
/* DELETE */
|
|
export const deleteInquiry = async (req, res) => {
|
|
try {
|
|
const {id} = req.params;
|
|
|
|
await prisma.inquiry.delete({
|
|
where: {id: Number(id)},
|
|
});
|
|
|
|
res.json({
|
|
success: true,
|
|
message: "Inquiry deleted successfully",
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: "Failed to delete inquiry",
|
|
});
|
|
}
|
|
};
|