From 7f29ade548765f44b440f9f8de2582ec83b6c8dc Mon Sep 17 00:00:00 2001 From: Username1548 Date: Fri, 30 May 2025 20:04:47 +0700 Subject: [PATCH] fixed consultation archive filters issues --- .../services/consultation_service.dart | 20 ++++++++++++++++++- .../archive/consultations_archive_cubit.dart | 6 ++++-- .../consultations_archive_screen.dart | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/features/consultations/services/consultation_service.dart b/lib/features/consultations/services/consultation_service.dart index e670d54a..887d78d4 100644 --- a/lib/features/consultations/services/consultation_service.dart +++ b/lib/features/consultations/services/consultation_service.dart @@ -33,10 +33,28 @@ class ConsultationService { FiltersComparisonEnum? dateComparison, }) async { try { + const inactiveStates = [ + 'initied', + 'in_coordination', + 'start_date_has_been_set', + 'pending_payment', + 'canceled_by_the_initiator', + 'charge_was_collected', + ]; final response = await dio.get( '/api/consultations', queryParameters: { - if (state != null) 'filters[last_state][${stateComparison?.value ?? '\$chosen_plan_status'}]': state, + if (stateComparison == FiltersComparisonEnum.notInArray) + 'filters[last_state][\$notIn][]': const [ + 'initied', + 'in_coordination', + 'start_date_has_been_set', + 'pending_payment', + 'canceled_by_the_initiator', + 'charge_was_collected', + ] + else if (state != null && stateComparison != null) + 'filters[last_state][${stateComparison.value}]': state, if (dateComparison != null && date != null) 'filters[start_date][${dateComparison.value}]': date, }, ); diff --git a/lib/features/finances_and_consultations_archive/cubit/archive/consultations_archive_cubit.dart b/lib/features/finances_and_consultations_archive/cubit/archive/consultations_archive_cubit.dart index d67a06bf..dd6c713e 100644 --- a/lib/features/finances_and_consultations_archive/cubit/archive/consultations_archive_cubit.dart +++ b/lib/features/finances_and_consultations_archive/cubit/archive/consultations_archive_cubit.dart @@ -29,9 +29,11 @@ class ConsultationsArchiveCubit extends Cubit { date: state.periodFilterStatus?.value, state: state.consultationFilterStatus?.value, dateComparison: state.periodFilterStatus == PeriodFilterStatus.all ? null : FiltersComparisonEnum.greaterThanOrEqual, - stateComparison: state.consultationFilterStatus != ConsultationFilterStatus.inProgress && state.consultationFilterStatus == ConsultationFilterStatus.all + stateComparison: state.consultationFilterStatus == ConsultationFilterStatus.all ? null - : FiltersComparisonEnum.equal, + : state.consultationFilterStatus == ConsultationFilterStatus.inProgress + ? FiltersComparisonEnum.notInArray + : FiltersComparisonEnum.equal, ); emit(state.copyWith(consultations: consultations, isLoading: false)); } catch (e) { diff --git a/lib/features/finances_and_consultations_archive/presentation/consultations_archive_screen.dart b/lib/features/finances_and_consultations_archive/presentation/consultations_archive_screen.dart index bbbeb245..fa934bcf 100644 --- a/lib/features/finances_and_consultations_archive/presentation/consultations_archive_screen.dart +++ b/lib/features/finances_and_consultations_archive/presentation/consultations_archive_screen.dart @@ -156,7 +156,7 @@ class _ConsultationsArchiveScreenState extends State if (value == null) return; context.read().setConsultationsStatus(value); }, - value: state.consultationFilterStatus, + value: state.consultationFilterStatus ?? ConsultationFilterStatus.values.first, ), const SizedBox(height: 12), if (state.consultations.isNotEmpty)