79 lines
2.2 KiB
JavaScript
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' });
|
|
}
|
|
};
|