From b78a6553ca77db14ade14fd8ba4442a78600e768 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 19 Aug 2025 14:21:57 +0200 Subject: [PATCH] update Access Controlls nav --- .../builder/build_business_access_list.dart | 97 +++++++++++++++---- .../access_review/mih_access.dart | 10 +- .../package_tile/mih_access_tile.dart | 11 ++- .../mih_access_controls_services.dart | 79 +++++++++++++++ 4 files changed, 175 insertions(+), 22 deletions(-) create mode 100644 Frontend/lib/mih_services/mih_access_controls_services.dart diff --git a/Frontend/lib/mih_packages/access_review/builder/build_business_access_list.dart b/Frontend/lib/mih_packages/access_review/builder/build_business_access_list.dart index b7e76704..12243736 100644 --- a/Frontend/lib/mih_packages/access_review/builder/build_business_access_list.dart +++ b/Frontend/lib/mih_packages/access_review/builder/build_business_access_list.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_service_calls.dart'; +import 'package:mzansi_innovation_hub/mih_services/mih_access_controls_services.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; -import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart'; @@ -47,18 +48,6 @@ class _BuildPatientsListState extends State { ); } - void successPopUp(String message) { - showDialog( - context: context, - builder: (context) { - return MIHSuccessMessage( - successType: "Success", - successMessage: message, - ); - }, - ); - } - void accessCancelledWarning() { showDialog( context: context, @@ -352,9 +341,10 @@ class _BuildPatientsListState extends State { spacing: 10, children: [ MihButton( - onPressed: () { + onPressed: () async { print("request declined"); - MIHApiCalls.updatePatientAccessAPICall( + int statusCode = await MihAccessControlsServices() + .updatePatientAccessAPICall( widget.patientAccessList[index].business_id, widget.patientAccessList[index].requested_by, widget.patientAccessList[index].app_id, @@ -363,6 +353,12 @@ class _BuildPatientsListState extends State { widget.signedInUser, context, ); + if (statusCode == 200) { + successPopUp("Successfully Actioned Request", + "You have successfully Declined access request"); + } else { + internetConnectionPopUp(); + } }, buttonColor: MihColors.getRedColor( MzansiInnovationHub.of(context)!.theme.mode == @@ -380,9 +376,10 @@ class _BuildPatientsListState extends State { ), ), MihButton( - onPressed: () { + onPressed: () async { print("request approved"); - MIHApiCalls.updatePatientAccessAPICall( + int statusCode = await MihAccessControlsServices() + .updatePatientAccessAPICall( widget.patientAccessList[index].business_id, widget.patientAccessList[index].requested_by, widget.patientAccessList[index].app_id, @@ -391,6 +388,12 @@ class _BuildPatientsListState extends State { widget.signedInUser, context, ); + if (statusCode == 200) { + successPopUp("Successfully Actioned Request", + "You have successfully Accepted access request"); + } else { + internetConnectionPopUp(); + } }, buttonColor: MihColors.getGreenColor( MzansiInnovationHub.of(context)!.theme.mode == @@ -421,6 +424,64 @@ class _BuildPatientsListState extends State { ); } + void successPopUp(String title, String message) { + showDialog( + context: context, + builder: (context) { + return MihPackageAlert( + alertIcon: Icon( + Icons.check_circle_outline_rounded, + size: 150, + color: MihColors.getGreenColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ), + alertTitle: title, + alertBody: Column( + children: [ + Text( + message, + style: TextStyle( + color: MihColors.getSecondaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fontSize: 15, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 25), + Center( + child: MihButton( + onPressed: () { + context.pop(); + context.goNamed( + "mihAccess", + extra: widget.signedInUser, + ); + }, + buttonColor: MihColors.getGreenColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + elevation: 10, + width: 300, + child: Text( + "Dismiss", + style: TextStyle( + color: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)!.theme.mode == + "Dark"), + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ) + ], + ), + alertColour: MihColors.getGreenColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ); + }, + ); + } + @override void dispose() { super.dispose(); diff --git a/Frontend/lib/mih_packages/access_review/mih_access.dart b/Frontend/lib/mih_packages/access_review/mih_access.dart index 728a00c8..940e82c2 100644 --- a/Frontend/lib/mih_packages/access_review/mih_access.dart +++ b/Frontend/lib/mih_packages/access_review/mih_access.dart @@ -1,3 +1,5 @@ +import 'package:go_router/go_router.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart'; @@ -40,7 +42,13 @@ class _MihAccessState extends State { icon: const Icon(Icons.arrow_back), iconSize: 35, onTap: () { - Navigator.of(context).pop(); + context.goNamed( + 'mihHome', + extra: AuthArguments( + true, + false, + ), + ); FocusScope.of(context).unfocus(); }, ); diff --git a/Frontend/lib/mih_packages/access_review/package_tile/mih_access_tile.dart b/Frontend/lib/mih_packages/access_review/package_tile/mih_access_tile.dart index 561755ca..976275a7 100644 --- a/Frontend/lib/mih_packages/access_review/package_tile/mih_access_tile.dart +++ b/Frontend/lib/mih_packages/access_review/package_tile/mih_access_tile.dart @@ -1,3 +1,4 @@ +import 'package:go_router/go_router.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; @@ -24,10 +25,14 @@ class _MihAccessTileState extends State { Widget build(BuildContext context) { return MihPackageTile( onTap: () { - Navigator.of(context).pushNamed( - '/mih-access', - arguments: widget.signedInUser, + context.goNamed( + "mihAccess", + extra: widget.signedInUser, ); + // Navigator.of(context).pushNamed( + // '/mih-access', + // arguments: widget.signedInUser, + // ); }, appName: "Access Controls", appIcon: Icon( diff --git a/Frontend/lib/mih_services/mih_access_controls_services.dart b/Frontend/lib/mih_services/mih_access_controls_services.dart new file mode 100644 index 00000000..6b89dffd --- /dev/null +++ b/Frontend/lib/mih_services/mih_access_controls_services.dart @@ -0,0 +1,79 @@ +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; +import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; +import 'package:supertokens_flutter/http.dart' as http; + +class MihAccessControlsServices { + /// This function is used to UPDATE access the business has. + /// + /// Patameters:- + /// String business_id, + /// String business_name, + /// String app_id, + /// String status, + /// String approved_by, + /// AppUser signedInUser, + /// BuildContext context, + /// + /// Returns void (on success 200 navigate to /mih-access ). + Future updatePatientAccessAPICall( + String business_id, + String business_name, + String app_id, + String status, + String approved_by, + AppUser signedInUser, + BuildContext context, + ) async { + loadingPopUp(context); + var response = await http.put( + Uri.parse( + "${AppEnviroment.baseApiUrl}/access-requests/update/permission/"), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + // business_id: str + // app_id: str + // status: str + // approved_by: str + body: jsonEncode({ + "business_id": business_id, + "app_id": app_id, + "status": status, + "approved_by": approved_by, + }), + ); + return response.statusCode; + // if (response.statusCode == 200) { + // //Navigator.of(context).pushNamed('/home'); + // Navigator.of(context).pop(); + // Navigator.of(context).pop(); + // Navigator.of(context).pushNamed( + // '/mih-access', + // arguments: signedInUser, + // ); + // String message = ""; + // if (status == "approved") { + // message = + // "You've successfully approved the access request! $business_name now has access to your profile forever."; + // } else { + // message = + // "You've declined the access request. $business_name will not have access to your profile."; + // } + // successPopUp(message, context); + // } else { + // internetConnectionPopUp(context); + // } + } + + static void loadingPopUp(BuildContext context) { + showDialog( + context: context, + builder: (context) { + return const Mihloadingcircle(); + }, + ); + } +}