vvet_backend_new/routes/donorRoutes.js

56 lines
2.0 KiB
JavaScript

const express = require("express");
const router = express.Router();
const multer = require("multer");
const upload = multer({ dest: "uploads/" }); // or your existing multer config
const { donorPool } = require("../db");
// Helper: get filename from uploaded files
const getFileName = (files, field) => files && files[field] && files[field][0] ? files[field][0].filename : null;
// Donor submission controller function
const submitDonor = (req, res) => {
const files = req.files || {};
const {
name, email, age, dob, phone, pan_number,
bank_account_holder_name, bank_name, bank_account_number, ifsc_code,
donation_amount, payment_method
} = req.body;
if (!name || !donation_amount || !payment) {
return res.status(400).json({ error: 'Missing required fields' });
} else {
const pan_document = getFileName(files, 'pan_document');
const transaction_screenshot = getFileName(files, 'transaction_screenshot');
const sql = `
INSERT INTO donors (
name, email, age, dob, phone, pan_number, pan_document,
bank_account_holder_name, bank_name, bank_account_number, ifsc_code,
donation_amount, payment, transaction_screenshot
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`;
const values = [
name, email || null, age || null, dob || null, phone || null, pan_number || null, pan_document,
bank_account_holder_name || null, bank_name || null, bank_account_number || null, ifsc_code || null,
donation_amount, payment, transaction_screenshot
];
donorPool.query(sql, values, (err, results) => {
if (err) {
console.error('Donor Insert Error:', err);
return res.status(500).json({ error: 'Failed to insert donor data' });
}
res.json({ message: 'Donor data submitted', id: results.insertId });
});
}
};
// Route definition
router.post("/donor/submit", upload.fields([
{ name: "pan_document", maxCount: 1 },
{ name: "transaction_screenshot", maxCount: 1 }
]), submitDonor);
module.exports = router;