workouttest_util/lib/model/membership.dart
2023-05-07 10:47:00 +02:00

52 lines
1.6 KiB
Dart

enum DurationType { free, subscription, lifetime, limited }
extension DurationTypeExt on DurationType {
String enumToString() => toString().split(".").last;
DurationType getType(String type) => DurationType.values.firstWhere((e) => e.enumToString() == type);
}
enum DurationUnit { day, week, month, year }
extension DurationUnitExt on DurationUnit {
String enumToString() => toString().split(".").last;
DurationUnit getType(String type) => DurationUnit.values.firstWhere((e) => e.enumToString() == type);
}
class Membership {
late int membershipId;
late String name;
String? description;
late int duration;
late DurationType durationType;
late DurationUnit durationUnit;
int? trainingPlanId;
String? trainingPlanDayIds;
Membership();
Membership.fromJson(Map json) {
membershipId = json['membershipId'];
name = json['name'];
description = json['description'] ?? "";
duration = json['duration'];
durationType = DurationType.free.getType(json['durationType']);
durationUnit = DurationUnit.day.getType(json['durationUnit']);
trainingPlanId = json['trainingPlanId'] ?? 0;
trainingPlanDayIds = json['trainingPlanDayIds'] ?? "";
}
Map<String, dynamic> toJson() => {
"membershipId": membershipId,
"name": name,
"description": description,
"duration": duration,
'durationType': durationType.enumToString(),
'durationUnit': durationUnit.enumToString(),
"trainingPlanId": trainingPlanId,
"trainingPlanDayIds": trainingPlanDayIds,
};
@override
String toString() => toJson().toString();
}