diff --git a/lib/features/emergency_services/emergency_services_repo.dart b/lib/features/emergency_services/emergency_services_repo.dart index 83f8057..4ec06af 100644 --- a/lib/features/emergency_services/emergency_services_repo.dart +++ b/lib/features/emergency_services/emergency_services_repo.dart @@ -58,6 +58,7 @@ abstract class EmergencyServicesRepo { Future>> getRRTOrders({int? id}); Future>> cancelRRTOrder(int? iD); + Future>> getTermsAndCondition(); } class EmergencyServicesRepoImp implements EmergencyServicesRepo { @@ -681,5 +682,40 @@ class EmergencyServicesRepoImp implements EmergencyServicesRepo { } } + @override + Future>> getTermsAndCondition() async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + body: {}, + GET_USER_TERMS, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final agreement = response['UserAgreementContent']; + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: agreement, + ); + + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + + } + } diff --git a/lib/features/emergency_services/emergency_services_view_model.dart b/lib/features/emergency_services/emergency_services_view_model.dart index a617f8d..3675f50 100644 --- a/lib/features/emergency_services/emergency_services_view_model.dart +++ b/lib/features/emergency_services/emergency_services_view_model.dart @@ -39,6 +39,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_rep import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/rrt_map_screen.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/rrt_request_type_select.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/terms_and_condition.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/call_ambulance_page.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart'; @@ -156,6 +157,8 @@ class EmergencyServicesViewModel extends ChangeNotifier { bool isMyAppointmentsLoading = false; + String? termsAndConditions; + Future getRRTProcedures({Function(dynamic)? onSuccess, Function(String)? onError}) async { print("the app state is ${appState.isAuthenticated}"); @@ -1063,4 +1066,21 @@ class EmergencyServicesViewModel extends ChangeNotifier { clearRRTData(){ selectedRRTProcedure = null; } + + + FutureOr getTermsAndConditions() async { + LoaderBottomSheet.showLoader(loadingText: "Fetching Terms And Conditions".needTranslation); + var response = await emergencyServicesRepo.getTermsAndCondition(); + LoaderBottomSheet.hideLoader(); + response.fold((failure)=>errorHandlerService.handleError(failure: failure),(success){ + termsAndConditions = success.data; + print("the response terms are $termsAndConditions"); + notifyListeners(); + navServices.push( + CustomPageRoute( + page: TermsAndCondition(termsAndCondition:success.data??""), direction: AxisDirection.down), + ); + }); + } + } diff --git a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart index d9ab948..d628c1d 100644 --- a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart +++ b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart @@ -256,7 +256,7 @@ class RrtRequestTypeSelect extends StatelessWidget { SizedBox.shrink(), LocaleKeys.agreeTo.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), LocaleKeys.termsConditoins.tr().toText16(color: AppColors.errorColor, isUnderLine: true, weight: FontWeight.w500).onPress(() { - Navigator.of(context).pushNamed('/terms'); + emergencyServicesVM.getTermsAndConditions(); }), ], ), diff --git a/lib/presentation/emergency_services/RRT/terms_and_condition.dart b/lib/presentation/emergency_services/RRT/terms_and_condition.dart new file mode 100644 index 0000000..8a50792 --- /dev/null +++ b/lib/presentation/emergency_services/RRT/terms_and_condition.dart @@ -0,0 +1,33 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:provider/provider.dart'; + +class TermsAndCondition extends StatelessWidget { + final String termsAndCondition; + const TermsAndCondition({super.key, required this.termsAndCondition}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + + Expanded( + child: CollapsingListView( + title: "Terms And Condition".needTranslation, + child:DecoratedBox(decoration:RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, + ),child: HtmlWidget(termsAndCondition).paddingAll(16.h)).paddingAll(12.h)))])); + } + +} \ No newline at end of file