Files
2026-06-07 20:19:30 +07:00

160 lines
4.3 KiB
JavaScript
Executable File

const partnershipModel = require("../models/partnership");
const path = require('path');
const { deleteFileIfExists } = require('../config/fileHelper');
const addPartnership = async (req, res) => {
const { nama_partner } = req.body;
const image = req.file;
try {
const image_path = await uploadGambar(image);
await partnershipModel.addPartnership(nama_partner, image_path);
res.status(200).json({
message: "Partnership data successfully added",
data: { nama_partner, image_path },
});
} catch (error) {
console.error("Error adding partnership:", error);
res.status(500).json({
message: "Internal server error",
error: error.message,
});
}
};
const uploadGambar = async (image) => {
try {
if (!image) {
throw new Error("Please upload an image!");
}
const file = `/uploads/${image.filename}`;
return file;
} catch (error) {
console.error(error.message);
throw new Error("Failed to upload image.");
}
};
const getPartnership = async (req, res) => {
try {
const [result] = await partnershipModel.getPartnership();
if (result.length === 0) {
return res.status(404).json({
message: "No partnership data",
});
}
res.status(200).json({
message: "Partnership data successfully retrieved",
data: result,
});
} catch (error) {
console.error("Error getting partnership:", error);
res.status(500).json({
message: "Internal server error",
error: error.message,
});
}
};
const deletePartnership = async (req, res) => {
try {
const { id } = req.params;
const [result] = await partnershipModel.deletePartnership(id);
if (result.affectedRows === 0) {
return res.status(404).json({
message: "Partnership data not found",
});
}
res.status(200).json({
message: "Partnership data successfully deleted",
});
} catch (error) {
console.error("Error deleting partnership:", error);
res.status(500).json({
message: "Internal server error",
error: error.message,
});
}
};
const getPartnershipById = async (req, res) => {
try {
const { id } = req.params
const [partnership] = await partnershipModel.getPartnershipById(id);
if (partnership.length === 0) {
return res.status(404).json({
messsage: "partnership not found",
});
}
res.status(200).json({
message: "patnership data was successfully collected",
data: partnership,
});
} catch (error) {
console.error("Error getting partnership results:", error);
res.status(500).json({
message: "Internal server error",
error: error.message,
});
}
}
const updatePartnership = async (req, res) => {
try {
const { id } = req.params;
const { nama_partner } = req.body;
const image = req.file;
const [existing] = await partnershipModel.getPartnershipById(id);
if (existing.length === 0) {
return res.status(404).json({ message: "Partnership not found" });
}
const currentData = existing[0];
let image_path = existing[0].image_path;
if (image) {
const oldFile = path.basename(image_path);
await deleteFileIfExists(oldFile);
image_path = await uploadGambar(image);
}
const updatedData = {
nama_partner: nama_partner?.trim() ? nama_partner : currentData.nama_partner,
image_path,
};
//console.log("form:",nama_partner, "db", currentData.nama_partner, "updated",updatedData.nama_partner)
await partnershipModel.updatePartnership(
id,
updatedData.nama_partner,
updatedData.image_path
);
return res.status(200).json({
message: "Partnership successfully updated",
data: { id, nama_partner: updatedData.nama_partner, image_path: updatedData.image_path },
});
} catch (error) {
console.error("Error updating partnership:", error);
res.status(500).json({
message: "Internal server error",
error: error.message,
});
}
};
module.exports = {
addPartnership,
getPartnership,
getPartnershipById,
updatePartnership,
deletePartnership,
};