Files
kulakpos_app/lib/Screens/all_transaction/repo/transaction_repo.dart
2026-02-07 15:57:09 +07:00

63 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:http/http.dart' as http;
import '../../../Const/api_config.dart';
import '../../../http_client/customer_http_client_get.dart';
import '../model/transaction_model.dart';
class TransactionRepo {
Future<TransactionModel> fetchTransactionList({
required String duration,
String? fromDate,
String? toDate,
String? platform,
int? partyId,
}) async {
try {
final client = CustomHttpClientGet(client: http.Client());
final List<String> queryList = [];
// Add required duration parameter
queryList.add('duration=$duration');
// Add date parameters only if duration is custom_date
if (duration == 'custom_date') {
if (fromDate != null && fromDate.isNotEmpty) {
queryList.add('from_date=$fromDate');
}
if (toDate != null && toDate.isNotEmpty) {
queryList.add('to_date=$toDate');
}
}
// Add platform filter if specified and not "all_transaction"
if (platform != null && platform.isNotEmpty && platform != 'all_transaction') {
queryList.add('platform=$platform');
}
// Add party filter if specified
if (partyId != null) {
queryList.add('party_id=$partyId');
}
final uri = Uri.parse(
'${APIConfig.url}/transactions?${queryList.join('&')}',
);
print('Fetching transactions from: $uri'); // Debug print
final response = await client.get(url: uri);
if (response.statusCode == 200) {
final jsonData = jsonDecode(response.body);
return TransactionModel.fromJson(jsonData);
} else {
print('API Error: ${response.statusCode} - ${response.body}');
throw Exception('Failed to fetch transactions: ${response.statusCode}');
}
} catch (e) {
print('TransactionRepo error: $e');
throw Exception('Failed to fetch transactions: $e');
}
}
}