Assigning a donation to a registration was one-way: the refund flow could reverse the money but left the donation's "leg" payment in place, permanently locking that portion of the donation as used even though it had been refunded back out. Adds POST /api/payments/unassign-donation, which deletes the leg, reverts the registration's status/tickets the same way a refund downgrade already does, and notifies the registrant. New "Assigned donations" list on the supervisor Payments page surfaces existing legs with an Unassign action, since no such list existed before. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const {
|
|
createPayment,
|
|
getPayments,
|
|
getUserPayments,
|
|
getPaymentById,
|
|
getPaymentsByRegistration,
|
|
getPaymentsByEvent,
|
|
assignDonationToRegistration,
|
|
unassignDonationFromRegistration,
|
|
createYocoCheckout,
|
|
sendPaymentLink,
|
|
createRefund,
|
|
getPaymentStats
|
|
} = require('../controllers/paymentController');
|
|
const { protect, supervisor, staff, admin} = require('../middleware/authMiddleware');
|
|
|
|
// Protected routes
|
|
router.post('/', protect, supervisor, createPayment);
|
|
router.post('/yoco-checkout', protect, createYocoCheckout);
|
|
router.post('/yoco-checkout/send', protect, supervisor, sendPaymentLink);
|
|
router.get('/mypayments', protect, getUserPayments);
|
|
router.get('/:id', protect, getPaymentById);
|
|
router.get('/registration/:registrationId', protect, getPaymentsByRegistration);
|
|
|
|
// Admin/Staff routes
|
|
router.get('/', protect, supervisor, getPayments);
|
|
router.get('/event/:eventId', protect, staff, getPaymentsByEvent);
|
|
router.put('/assign-donation', protect, supervisor, assignDonationToRegistration);
|
|
router.post('/unassign-donation', protect, supervisor, unassignDonationFromRegistration);
|
|
router.post('/refund', protect, supervisor, createRefund);
|
|
router.get('/admin/stats', protect, admin, getPaymentStats);
|
|
|
|
module.exports = router; |