forked from eatvio/eatvio_app
45 lines
1.6 KiB
Dart
45 lines
1.6 KiB
Dart
import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart';
|
|
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
|
import 'package:eatvio_app/features/plans/enums/plan_option_type_enum.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'chosen_plan_model.freezed.dart';
|
|
part 'chosen_plan_model.g.dart';
|
|
|
|
@freezed
|
|
abstract class ChosenPlanModel with _$ChosenPlanModel {
|
|
const ChosenPlanModel._();
|
|
|
|
factory ChosenPlanModel({
|
|
@JsonKey() required int id,
|
|
@JsonKey(name: 'option_type') required String optionType,
|
|
@JsonKey(name: 'start_date') required DateTime startDate,
|
|
@JsonKey(name: 'last_state') required ChosenPlanStateEnum chosenPlanState,
|
|
@JsonKey(name: 'chat_id') required String chatId,
|
|
@JsonKey(name: 'consultant_id') required int consultantId,
|
|
@JsonKey(name: 'personal_diet_name') String? personalDietName,
|
|
@JsonKey(name: 'plan') required PlanModel plan,
|
|
}) = _ChosenPlanModel;
|
|
|
|
factory ChosenPlanModel.fromJson(Map<String, dynamic> json) => _$ChosenPlanModelFromJson(json);
|
|
|
|
PacketOptions? get chosenOption {
|
|
switch (PlanOptionType.tryParse(optionType)) {
|
|
case PlanOptionType.options1:
|
|
return plan.packet1Options;
|
|
case PlanOptionType.options2:
|
|
return plan.packet2Options;
|
|
case PlanOptionType.options3:
|
|
return plan.packet3Options;
|
|
case null:
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
ChosenPlanModel? parseChosenPlan(dynamic json) {
|
|
if (json is Map<String, dynamic>) {
|
|
return ChosenPlanModel.fromJson(json);
|
|
}
|
|
return null;
|
|
} |