const transferController = require('../controllers/transfer.controller'); const { logger } = require('../util/logger'); const express = require('express'); const transferValidator = require('../validators/transfer.validator'); const passwordValidator = require('../validators/payment.secret.validator.js'); const router = express.Router(); router.use(passwordValidator, transferValidator); const transferRoute = async (req, res) => { const { fromAccount, toAccount, toAccountType, amount } = req.body; try { const result = await transferController.transfer( fromAccount, toAccount, toAccountType, amount, req.user ); if (result.status === 'O.K.') { return res.json({ message: 'TRANSACTION_SUCCESS' }); } else if (result.status.includes('INVALID CHECK DIGIT')) { return res .status(400) .json({ error: 'INVALID_ACCOUNT_NO', status: result.status }); } else if ( result.status.includes('CLEARED BAL/FUNDS/DP NOT AVAILABLE.CARE') ) { return res .status(400) .json({ error: 'INSUFFICIENT_BALANCE', status: result.status }); } else { return res .status(400) .json({ error: 'PROBLEM_TRANSFERRING_FUNDS', status: result.status }); } } catch (error) { logger.error(error, 'error occured while doing transfer'); return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' }); } }; router.post('/', transferRoute); module.exports = router;