41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
import 'package:currency_picker/currency_picker.dart';
|
|
import 'package:json_annotation/json_annotation.dart';
|
|
import 'package:prasule/api/category.dart';
|
|
import 'package:prasule/api/walletentry.dart';
|
|
part 'wallet.g.dart';
|
|
|
|
Currency _currencyFromJson(Map<String, dynamic> data) =>
|
|
Currency.from(json: data);
|
|
|
|
@JsonSerializable()
|
|
class Wallet {
|
|
final String name;
|
|
final List<WalletCategory> categories;
|
|
final List<WalletSingleEntry> entries;
|
|
double availableAmount;
|
|
@JsonKey(fromJson: _currencyFromJson)
|
|
final Currency currency;
|
|
|
|
Wallet(
|
|
{required this.name,
|
|
required this.currency,
|
|
this.categories = const [],
|
|
this.entries = const [],
|
|
this.availableAmount = 0});
|
|
|
|
/// Connect the generated [_$WalletEntry] function to the `fromJson`
|
|
/// factory.
|
|
factory Wallet.fromJson(Map<String, dynamic> json) => _$WalletFromJson(json);
|
|
|
|
/// Connect the generated [_$PersonToJson] function to the `toJson` method.
|
|
Map<String, dynamic> toJson() => _$WalletToJson(this);
|
|
|
|
/// Getter for the next unused unique number ID in the wallet's entry list
|
|
int get nextId {
|
|
var id = 1;
|
|
while (entries.where((element) => element.id == id).isNotEmpty) {
|
|
id++; // create unique ID
|
|
}
|
|
return id;
|
|
}
|
|
}
|