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;