39 lines
1,010 B
Dart
39 lines
1,010 B
Dart
|
import 'package:json_annotation/json_annotation.dart';
|
||
|
import 'package:prasule/api/debt_person.dart';
|
||
|
part 'debt_entry.g.dart';
|
||
|
|
||
|
/// Single transaction
|
||
|
///
|
||
|
/// The debt will be split between people who are not in [whoPayed]
|
||
|
@JsonSerializable()
|
||
|
class DebtEntry {
|
||
|
/// Single transaction
|
||
|
///
|
||
|
/// The debt will be split between people who are not in [whoPayed]
|
||
|
DebtEntry({
|
||
|
required this.id,
|
||
|
required this.amount,
|
||
|
required this.name,
|
||
|
required this.whoPayed,
|
||
|
}) : assert(whoPayed.isNotEmpty, "There has to be at least one payer");
|
||
|
|
||
|
/// Generates a class instance from a Map
|
||
|
factory DebtEntry.fromJson(Map<String, dynamic> json) =>
|
||
|
_$DebtEntryFromJson(json);
|
||
|
|
||
|
/// Converts the data in this instance into a Map
|
||
|
Map<String, dynamic> toJson() => _$DebtEntryToJson(this);
|
||
|
|
||
|
/// Unique identifier
|
||
|
final int id;
|
||
|
|
||
|
/// The payed amount
|
||
|
int amount;
|
||
|
|
||
|
/// User-friendly identifier for the transaction
|
||
|
String name;
|
||
|
|
||
|
/// List of people who payed
|
||
|
List<DebtPerson> whoPayed;
|
||
|
}
|