const express = require('express'); const neftController = require('../controllers/neft.controller'); const { logger } = require('../util/logger'); const neftValidator = require('../validators/neft.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( neftValidator, paymentSecretValidator, checkLimit, checkBeneficiaryCooldown ); const neftRoute = async (req, res) => { const { fromAccount, toAccount, ifscCode, amount, beneficiaryName, remitterName, remarks, } = req.body; const client = req.client; try { const result = await neftController.send( req.user, fromAccount, toAccount, amount, ifscCode, beneficiaryName, remitterName, remarks, client ); logger.info(result); 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('/', neftRoute); module.exports = router;