79 lines
2.0 KiB
Dart
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,
|
|
);
|
|
}
|
|
}
|