enum ConsultationStep { startDate, paid, inProgress, finished } enum PersonalDietStatus { notRequired, notProposed, proposed } enum ConsultationPhase { active, canceled, paymentFailed } class ConsultationProgress { const ConsultationProgress({ required this.completedSteps, required this.showProgressPlank, required this.dietStatus, required this.phase, }); final Set completedSteps; final bool showProgressPlank; final PersonalDietStatus dietStatus; final ConsultationPhase phase; bool isStepCompleted(ConsultationStep step) => completedSteps.contains(step); bool get hasDietChip => dietStatus != PersonalDietStatus.notRequired; bool get hasStatusChip => phase != ConsultationPhase.active; bool get hasChip => hasDietChip || hasStatusChip; bool get isCanceled => phase == ConsultationPhase.canceled; bool get isPaymentFailed => phase == ConsultationPhase.paymentFailed; }