import 'dart:developer'; import 'package:dio/dio.dart'; import 'package:intl/intl.dart'; import 'package:kmobile/data/models/transaction.dart'; abstract class TransactionRepository { Future> fetchTransactions(String accountNo, {DateTime? fromDate, DateTime? toDate}); } class TransactionRepositoryImpl implements TransactionRepository { final Dio _dio; TransactionRepositoryImpl(this._dio); @override Future> fetchTransactions(String accountNo, {DateTime? fromDate, DateTime? toDate}) async { final queryParameters = {}; if (fromDate != null) { queryParameters['fromDate'] = DateFormat('ddMMyyyy').format(fromDate); } if (toDate != null) { queryParameters['toDate'] = DateFormat('ddMMyyyy').format(toDate); } log('query params below'); log(queryParameters.toString()); final resp = await _dio.get( '/api/transactions/account/$accountNo', queryParameters: queryParameters.isNotEmpty ? queryParameters : null, ); if (resp.statusCode != 200) { throw Exception( 'Error fetching transactions: ${resp.statusCode} ${resp.statusMessage}', ); } final List data = resp.data as List; return data .map((e) => Transaction.fromJson(e as Map)) .toList(); } }