const express = require('express'); const router = express.Router(); const { revenueRepository } = require('../repositories'); /** * GET /api/plugins/financials/revenue * Get all revenue for a site */ router.get('/', async (req, res) => { try { const { site_id, unit_id, source, payment_status } = req.query; if (!site_id) { return res.status(400).json({ success: false, error: 'site_id query parameter is required' }); } let revenue; if (source) { revenue = await revenueRepository.findBySource(site_id, source); } else { revenue = await revenueRepository.findBySiteId(site_id); } // Filter by unit_id if provided if (unit_id) { revenue = revenue.filter(rev => rev.unit_id === unit_id); } // Filter by payment_status if provided if (payment_status) { revenue = revenue.filter(rev => rev.payment_status === payment_status); } res.json({ success: true, data: revenue, message: 'Revenue retrieved successfully' }); } catch (error) { console.error('Failed to get revenue:', error); res.status(500).json({ success: false, error: 'Failed to retrieve revenue', message: error.message }); } }); /** * POST /api/plugins/financials/revenue * Create a new revenue entry */ router.post('/', async (req, res) => { try { const { site_id, revenue_date, source, description, amount, unit_id, resident_id, payment_method, receipt_url, notes, created_by } = req.body; if (!site_id || !revenue_date || !source || !description || !amount) { return res.status(400).json({ success: false, error: 'Missing required fields', message: 'Site ID, revenue date, source, description, and amount are required' }); } const revenue = await revenueRepository.createRevenue({ site_id, revenue_date, source, description, amount, unit_id, resident_id, payment_method, receipt_url, notes, created_by: created_by || req.user?.id || 'system' }); res.status(201).json({ success: true, data: revenue, message: 'Revenue created successfully' }); } catch (error) { console.error('Failed to create revenue:', error); res.status(500).json({ success: false, error: 'Failed to create revenue', message: error.message }); } }); module.exports = router;