Files
sendico/frontend/pweb/lib/models/wallet_transaction.dart
2025-12-12 13:45:58 +01:00

79 lines
2.0 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:pshared/models/payment/status.dart';
import 'package:pshared/models/currency.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
enum WalletTransactionType { topUp, payout }
extension WalletTransactionTypeX on WalletTransactionType {
String label(BuildContext context) {
final loc = AppLocalizations.of(context)!;
switch (this) {
case WalletTransactionType.topUp:
return loc.walletTopUp;
case WalletTransactionType.payout:
return loc.payout;
}
}
String get sign => this == WalletTransactionType.topUp ? '+' : '-';
}
class WalletTransaction {
final String id;
final String walletId;
final WalletTransactionType type;
final OperationStatus status;
final double amount;
final Currency currency;
final DateTime date;
final String description;
final String? counterparty;
final double? balanceAfter;
const WalletTransaction({
required this.id,
required this.walletId,
required this.type,
required this.status,
required this.amount,
required this.currency,
required this.date,
required this.description,
this.counterparty,
this.balanceAfter,
});
bool get isTopUp => type == WalletTransactionType.topUp;
WalletTransaction copyWith({
String? id,
String? walletId,
WalletTransactionType? type,
OperationStatus? status,
double? amount,
Currency? currency,
DateTime? date,
String? description,
String? counterparty,
double? balanceAfter,
}) {
return WalletTransaction(
id: id ?? this.id,
walletId: walletId ?? this.walletId,
type: type ?? this.type,
status: status ?? this.status,
amount: amount ?? this.amount,
currency: currency ?? this.currency,
date: date ?? this.date,
description: description ?? this.description,
counterparty: counterparty ?? this.counterparty,
balanceAfter: balanceAfter ?? this.balanceAfter,
);
}
}