const express = require('express'); const { logger } = require('../util/logger'); const axios = require('axios'); const paymentSecretValidator = require('../validators/payment.secret.validator'); const chequeEnquiryRoute = async (req, res) => { const { accountNumber, instrumentType } = req.query; if (!accountNumber || !instrumentType) { return res.status(400).json({ error: 'BAD_REQUEST' }); } try { const response = await axios.get('http://localhost:8444/kccb/cheque', { params: { accountno: accountNumber, instrType: instrumentType }, }); return res.json(response.data); } catch (error) { logger.error('Unable to fetch cheque data: ', error); return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' }); } }; const chequeStopRoute = async (req, res) => { const { accountNumber, instrumentType, stopFromChequeNo, stopToChequeNo, stopIssueDate, stopExpiryDate, stopAmount, stopComment, chqIssueDate, } = req.body; if (!accountNumber || !instrumentType || !stopFromChequeNo) { console.log('missing'); return res.status(400).json({ error: 'BAD_REQUEST' }); } try { const response = await axios.post( 'http://localhost:8444/kccb/chequeSetStop', { accountno: accountNumber, stopFromChequeNo: stopFromChequeNo, instrType: instrumentType, stopToChequeNo: stopToChequeNo, stopIssueDate: stopIssueDate, stopExpiryDate: stopExpiryDate, stopAmount: stopAmount, stopComment: stopComment, chqIssueDate: chqIssueDate, } ); console.log('response from stop cheque api: ', response.data); return res.json(response.data); } catch (e) { logger.error('Unable to fetch cheque data: ', e); if (axios.isAxiosError(e)) { if (e.response) { // Server responded with a status outside 2xx return res.status(e.response.status).json(e.response.data); } else { return res .status(e.response.status) .json({ error: 'UNKNOWN', message: 'NO_RESPONSE_FROM_CBS' }); } } return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' }); } }; const revokeStop = async (req, res) => { const { accountNumber, instrumentType, removeFromChequeNo, removeToChequeNo, removeIssueDate, removeExpiryDate, removeAmount, removeComment, } = req.body; if (!accountNumber || !instrumentType || !removeFromChequeNo) { console.log('missing'); return res.status(400).json({ error: 'BAD_REQUEST' }); } try { const response = await axios.post( 'http://localhost:8444/kccb/chequeRemoveStop', { accountno: accountNumber, removeFromChequeNo: removeFromChequeNo, instrType: instrumentType, removeToChequeNo: removeToChequeNo, removeIssueDate: removeIssueDate, removeExpiryDate: removeExpiryDate, removeAmount: removeAmount, removeComment: removeComment, } ); console.log('response from stop cheque api: ', response.data); return res.json(response.data); } catch (e) { logger.error('Unable to fetch cheque data: ', e); if (axios.isAxiosError(e)) { if (e.response) { // Server responded with a status outside 2xx return res.status(e.response.status).json(e.response.data); } else { return res .status(e.response.status) .json({ error: 'UNKNOWN', message: 'NO_RESPONSE_FROM_CBS' }); } } return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' }); } }; const enquiryRouter = express.Router(); const stopRouter = express.Router(); const removeStopRouter = express.Router(); const router = express.Router(); enquiryRouter.get('/enquiry', chequeEnquiryRoute); stopRouter.use(paymentSecretValidator); stopRouter.post('/stop', chequeStopRoute); removeStopRouter.use(paymentSecretValidator); removeStopRouter.post('/removeStop', revokeStop); router.use(enquiryRouter, stopRouter, removeStopRouter); module.exports = router;