Files

79 lines
2.2 KiB
JavaScript

const Report = require('../models/Report');
const User = require('../models/User');
exports.createReport = async (req, res) => {
try {
const { reportId, phone, userName, data, link } = req.body;
if (!reportId || !phone || !data) {
return res.status(400).json({ success: false, message: 'Missing required fields' });
}
const report = await Report.create({
reportId,
phone,
userName,
data,
link
});
res.status(201).json({ success: true, report });
} catch (error) {
console.error('Error creating report:', error);
res.status(500).json({ success: false, message: 'Server error' });
}
};
exports.getReport = async (req, res) => {
try {
const { reportId } = req.params;
const report = await Report.findOne({ reportId });
if (!report) {
return res.status(404).json({ success: false, message: 'Report not found' });
}
// Return the report data directly to match frontend expectation
res.json(report.data);
} catch (error) {
console.error('Error fetching report:', error);
res.status(500).json({ success: false, message: 'Server error' });
}
};
exports.savePdfReport = async (req, res) => {
try {
const { phone, userName } = req.body;
if (!phone || !req.file) {
return res.status(400).json({ success: false, message: 'Missing phone or PDF file' });
}
// Ensure user exists
let user = await User.findOne({ phone });
if (!user) {
user = await User.create({ phone, name: userName || 'Unknown' });
} else if (userName && userName !== user.name) {
user.name = userName;
await user.save();
}
const reportId = Math.random().toString(36).substring(7);
const link = `/uploads/reports/${req.file.filename}`;
const report = await Report.create({
reportId,
phone,
userName: user.name,
data: { message: "PDF Report generated." }, // Minimal data to satisfy schema
link
});
res.status(201).json({ success: true, link, reportId });
} catch (error) {
console.error('Error saving PDF report:', error);
res.status(500).json({ success: false, message: 'Server error' });
}
};