const express = require('express'); const rtgsController = require('../controllers/rtgs.controller'); const { logger } = require('../util/logger'); const rtgsValidator = require('../validators/rtgs.validator.js'); const paymentSecretValidator = require('../validators/payment.secret.validator'); const { checkLimit } = require('../middlewares/limitCheck.middleware'); const { checkBeneficiaryCooldown, } = require('../middlewares/cooldown.middleware'); const router = express.Router(); router.use( rtgsValidator, paymentSecretValidator, checkLimit, checkBeneficiaryCooldown ); const rtgsRoute = async (req, res) => { const { fromAccount, toAccount, ifscCode, amount, beneficiaryName, remitterName, remarks, } = req.body; const client = req.client; try { const result = await rtgsController.send( req.user, fromAccount, toAccount, amount, ifscCode, beneficiaryName, remitterName, remarks, client ); if (result.status.startsWith('O.K.')) { const utr = result.status.slice(9, 25); return res.json({ message: 'SUCCESS', utr }); } else if (result.status.includes('INSUFFICIENT FUNDS')) { return res.status(422).json({ error: 'INSUFFICIENT_FUNDS' }); } else if (result.status.includes('INVALID CHECK DIGIT')) { return res.status(400).json({ error: 'INVALID_ACCOUNT_NUMBER' }); } else { return res.status(400).json({ error: 'PROBLEM_TRANSFERRING_FUNDS' }); } } catch (error) { logger.error(error, 'error occured while doing NEFT transaction'); return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' }); } }; router.post('/', rtgsRoute); module.exports = router;