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

73 lines
2.2 KiB
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../model/transaction_model.dart';
import '../repo/transaction_repo.dart';
final transactionRepoProvider = Provider<TransactionRepo>((ref) {
return TransactionRepo();
});
// final filteredTransactionProvider = FutureProvider.family<TransactionModel, TransactionFilteredModel>(
// (ref, filter) async {
// final repo = ref.read(transactionRepoProvider);
//
// return repo.fetchTransactionList(
// duration: filter.duration,
// fromDate: filter.fromDate,
// toDate: filter.toDate,
// platform: filter.transactionType == 'all_transaction' ? null : filter.transactionType,
// partyId: filter.party == 'all_parties' ? null : int.tryParse(filter.party!),
// );
// },
// );
class TransactionFilteredModel {
final String duration;
final String? fromDate;
final String? toDate;
final String? transactionType;
final String? party;
const TransactionFilteredModel({
required this.duration,
this.fromDate,
this.toDate,
this.transactionType,
this.party,
});
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is TransactionFilteredModel &&
runtimeType == other.runtimeType &&
duration == other.duration &&
fromDate == other.fromDate &&
toDate == other.toDate &&
transactionType == other.transactionType &&
party == other.party;
@override
int get hashCode =>
duration.hashCode ^ fromDate.hashCode ^ toDate.hashCode ^ transactionType.hashCode ^ party.hashCode;
}
final filteredTransactionProvider = FutureProvider.autoDispose.family<TransactionModel, TransactionFilteredModel>(
(ref, filter) async {
final repo = ref.read(transactionRepoProvider);
// Convert party string to int if it's not "all_parties"
int? partyId;
if (filter.party != null && filter.party!.isNotEmpty && filter.party != 'all_parties') {
partyId = int.tryParse(filter.party!);
}
return repo.fetchTransactionList(
duration: filter.duration,
fromDate: filter.fromDate,
toDate: filter.toDate,
platform: filter.transactionType,
partyId: partyId,
);
},
);