154 lines
3.7 KiB
JavaScript
154 lines
3.7 KiB
JavaScript
// controllers/transaction.js
|
|
|
|
const db = require("../utils/database");
|
|
|
|
// Create a new transaction
|
|
exports.createTransaction = async (req, res) => {
|
|
const { userID, productID, date, paymentStatus } = req.body;
|
|
|
|
try {
|
|
const [result] = await db.execute(
|
|
`INSERT INTO Transaction (UserID, ProductID, Date, PaymentStatus)
|
|
VALUES (?, ?, ?, ?)`,
|
|
[userID, productID, date, paymentStatus]
|
|
);
|
|
|
|
res.json({
|
|
success: true,
|
|
message: "Transaction created successfully",
|
|
transactionID: result.insertId,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error creating transaction:", error);
|
|
res.status(500).json({ error: "Could not create transaction" });
|
|
}
|
|
};
|
|
|
|
// Get all transactions for a given product
|
|
exports.getTransactionsByProduct = async (req, res) => {
|
|
const { productID } = req.params;
|
|
|
|
try {
|
|
const [transactions] = await db.execute(
|
|
`SELECT
|
|
TransactionID,
|
|
UserID,
|
|
ProductID,
|
|
Date,
|
|
PaymentStatus
|
|
FROM Transaction
|
|
WHERE ProductID = ?`,
|
|
[productID]
|
|
);
|
|
|
|
res.json({
|
|
success: true,
|
|
transactions,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error fetching transactions by product:", error);
|
|
res.status(500).json({ error: "Could not retrieve transactions" });
|
|
}
|
|
};
|
|
|
|
// Get all transactions for a given user
|
|
exports.getTransactionsByUser = async (req, res) => {
|
|
const { userID } = req.body;
|
|
|
|
try {
|
|
const [transactions] = await db.execute(
|
|
`SELECT
|
|
TransactionID,
|
|
UserID,
|
|
ProductID,
|
|
Date,
|
|
PaymentStatus
|
|
FROM Transaction
|
|
WHERE UserID = ?`,
|
|
[userID]
|
|
);
|
|
|
|
res.json({
|
|
success: true,
|
|
transactions,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error fetching transactions by user:", error);
|
|
res.status(500).json({ error: "Could not retrieve transactions" });
|
|
}
|
|
};
|
|
|
|
// Get all transactions in the system
|
|
exports.getAllTransactions = async (req, res) => {
|
|
try {
|
|
const [transactions] = await db.execute(
|
|
`SELECT
|
|
TransactionID,
|
|
UserID,
|
|
ProductID,
|
|
Date,
|
|
PaymentStatus
|
|
FROM Transaction`
|
|
);
|
|
|
|
res.json({
|
|
success: true,
|
|
transactions,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error fetching all transactions:", error);
|
|
res.status(500).json({ error: "Could not retrieve transactions" });
|
|
}
|
|
};
|
|
|
|
// Update the payment status of a transaction
|
|
exports.updatePaymentStatus = async (req, res) => {
|
|
const { transactionID, paymentStatus } = req.body;
|
|
|
|
try {
|
|
const [result] = await db.execute(
|
|
`UPDATE Transaction
|
|
SET PaymentStatus = ?
|
|
WHERE TransactionID = ?`,
|
|
[paymentStatus, transactionID]
|
|
);
|
|
|
|
if (result.affectedRows === 0) {
|
|
return res.status(404).json({ success: false, message: "Transaction not found" });
|
|
}
|
|
|
|
res.json({
|
|
success: true,
|
|
message: "Payment status updated successfully",
|
|
});
|
|
} catch (error) {
|
|
console.error("Error updating payment status:", error);
|
|
res.status(500).json({ error: "Could not update payment status" });
|
|
}
|
|
};
|
|
|
|
// Delete a transaction
|
|
exports.deleteTransaction = async (req, res) => {
|
|
const { transactionID } = req.body;
|
|
|
|
try {
|
|
const [result] = await db.execute(
|
|
`DELETE FROM Transaction
|
|
WHERE TransactionID = ?`,
|
|
[transactionID]
|
|
);
|
|
|
|
if (result.affectedRows === 0) {
|
|
return res.status(404).json({ success: false, message: "Transaction not found" });
|
|
}
|
|
|
|
res.json({
|
|
success: true,
|
|
message: "Transaction deleted successfully",
|
|
});
|
|
} catch (error) {
|
|
console.error("Error deleting transaction:", error);
|
|
res.status(500).json({ error: "Could not delete transaction" });
|
|
}
|
|
};
|