update Access Controlls nav

This commit is contained in:
2025-08-19 14:21:57 +02:00
parent c1d1c8070c
commit b78a6553ca
4 changed files with 175 additions and 22 deletions

View File

@@ -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<BuildBusinessAccessList> {
);
}
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<BuildBusinessAccessList> {
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<BuildBusinessAccessList> {
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<BuildBusinessAccessList> {
),
),
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<BuildBusinessAccessList> {
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<BuildBusinessAccessList> {
);
}
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();

View File

@@ -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<MihAccess> {
icon: const Icon(Icons.arrow_back),
iconSize: 35,
onTap: () {
Navigator.of(context).pop();
context.goNamed(
'mihHome',
extra: AuthArguments(
true,
false,
),
);
FocusScope.of(context).unfocus();
},
);

View File

@@ -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<MihAccessTile> {
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(

View File

@@ -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<int> 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: <String, String>{
"Content-Type": "application/json; charset=UTF-8"
},
// business_id: str
// app_id: str
// status: str
// approved_by: str
body: jsonEncode(<String, dynamic>{
"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();
},
);
}
}