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 router = express.Router(); router.use(rtgsValidator, paymentSecretValidator); const rtgsRoute = async (req, res) => { const { fromAccount, toAccount, ifscCode, amount, beneficiaryName, remitterName, } = req.body; try { const result = await rtgsController.send( req.user, fromAccount, toAccount, amount, ifscCode, beneficiaryName, remitterName ); 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;