CentralBackend/controller/invoice/InvoiceController.js
2025-12-15 16:58:55 +01:00

49 lines
1.5 KiB
JavaScript

const InvoiceService = require('../../services/invoice/InvoiceService');
const service = new InvoiceService();
module.exports = {
async listMine(req, res) {
try {
const data = await service.listMine(req.user.id, {
status: req.query.status,
limit: Number(req.query.limit || 50),
offset: Number(req.query.offset || 0),
});
return res.json({ success: true, data });
} catch (e) {
console.error('[INVOICE LIST MINE]', e);
return res.status(400).json({ success: false, message: e.message });
}
},
async adminList(req, res) {
try {
const data = await service.adminList({
status: req.query.status,
limit: Number(req.query.limit || 200),
offset: Number(req.query.offset || 0),
});
return res.json({ success: true, data });
} catch (e) {
console.error('[INVOICE ADMIN LIST]', e);
return res.status(403).json({ success: false, message: e.message });
}
},
async pay(req, res) {
try {
const data = await service.markPaid(req.params.id, {
payment_method: req.body.payment_method,
transaction_id: req.body.transaction_id,
amount: req.body.amount,
paid_at: req.body.paid_at ? new Date(req.body.paid_at) : undefined,
details: req.body.details,
});
return res.json({ success: true, data });
} catch (e) {
console.error('[INVOICE PAY]', e);
return res.status(400).json({ success: false, message: e.message });
}
},
};