integrated acct statement with date range filter

This commit is contained in:
asif
2025-08-10 18:14:46 +05:30
parent 98ab9954bf
commit cbfd1d6d09
2 changed files with 55 additions and 4 deletions

View File

@@ -21,5 +21,27 @@ async function getLastTen(accountNumber) {
);
}
}
module.exports = { getLastTen };
async function getFiltered(accountNumber, fromDate, toDate) {
try {
const response = await axios.get(
`http://localhost:8688/kccb/cbs/montlyacctstmt/details`,
{
params: { stacctno: accountNumber, fromdate: fromDate, todate: toDate },
}
);
const transactions = response.data;
const processedTransactions = transactions.map((tx) => ({
id: tx.stTransactionNumber,
name: tx.stTransactionDesc,
date: tx.stTransactionDate,
amount: tx.stTransactionAmount.slice(0, -3),
type: tx.stTransactionAmount.slice(-2),
}));
return processedTransactions;
} catch (error) {
throw new Error(
'API call failde: ' + (error.response?.data?.message || error.message)
);
}
}
module.exports = { getLastTen, getFiltered };

View File

@@ -3,15 +3,44 @@ const { logger } = require('../util/logger');
const transactionsRoute = async (req, res) => {
const accountNo = req.params.accountNo;
const { fromDate, toDate } = req.query;
let data;
try {
const data = await transactionsController.getLastTen(accountNo);
if (fromDate && toDate) {
if (!isValidDDMMYYYY(fromDate) || !isValidDDMMYYYY(toDate)) {
return res.status(400).json({ error: 'INVALID_DATE_FORMAT' });
}
data = await transactionsController.getFiltered(
accountNo,
fromDate,
toDate
);
} else {
data = await transactionsController.getLastTen(accountNo);
}
return res.json(data);
} catch (error) {
logger.error('error retriving last 10 txns', error);
logger.error('error retriving transaction history', error);
return res
.status(500)
.json({ message: 'error occured while fetching transactions' });
}
};
function isValidDDMMYYYY(dateStr) {
if (!/^\d{8}$/.test(dateStr)) return false;
const day = parseInt(dateStr.slice(0, 2), 10);
const month = parseInt(dateStr.slice(2, 4), 10);
const year = parseInt(dateStr.slice(4), 10);
const date = new Date(year, month - 1, day);
return (
date.getFullYear() === year &&
date.getMonth() === month - 1 &&
date.getDate() === day
);
}
module.exports = transactionsRoute;