47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
const transactionsController = require('../controllers/transactions.controller');
|
|
const { logger } = require('../util/logger');
|
|
|
|
const transactionsRoute = async (req, res) => {
|
|
const accountNo = req.params.accountNo;
|
|
const { fromDate, toDate } = req.query;
|
|
let data;
|
|
try {
|
|
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 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;
|