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' }); } };