From 0df21618794381d29d5528f96ed3886c288b390c Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Sun, 7 Apr 2024 13:29:01 +0200 Subject: [PATCH] Change made to cater to pass User email from home page. --- .../lib/components/homeTileGrid.dart | 12 ++-- Frontend/patient_manager/lib/pages/home.dart | 45 ++++++++---- .../lib/pages/patientManager.dart | 69 ++++++++++--------- .../lib/router/routeGenerator.dart | 23 ++++++- 4 files changed, 95 insertions(+), 54 deletions(-) diff --git a/Frontend/patient_manager/lib/components/homeTileGrid.dart b/Frontend/patient_manager/lib/components/homeTileGrid.dart index 499d9298..21845d95 100644 --- a/Frontend/patient_manager/lib/components/homeTileGrid.dart +++ b/Frontend/patient_manager/lib/components/homeTileGrid.dart @@ -2,9 +2,8 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/homeTile.dart'; class HomeTileGrid extends StatelessWidget { - void navigateToPage() {} - - const HomeTileGrid({super.key}); + final String userEmail; + const HomeTileGrid({super.key, required this.userEmail}); @override Widget build(BuildContext context) { @@ -20,20 +19,21 @@ class HomeTileGrid extends StatelessWidget { children: [ HomeTile( onTap: () { - Navigator.of(context).pushNamed('/patient-manager'); + Navigator.of(context) + .pushNamed('/patient-manager', arguments: userEmail); }, tileName: "Patient Manager", tileDescription: "This is a digital solution for doctors Offices to manage their patients", ), HomeTile( - onTap: navigateToPage, + onTap: () {}, tileName: "Test", tileDescription: "This is a digital solution for doctors Offices to manage their patients", ), HomeTile( - onTap: navigateToPage, + onTap: () {}, tileName: "Test 1", tileDescription: "This is a digital solution for doctors Offices to manage their patients", diff --git a/Frontend/patient_manager/lib/pages/home.dart b/Frontend/patient_manager/lib/pages/home.dart index 733d4cc6..fa9e6f8e 100644 --- a/Frontend/patient_manager/lib/pages/home.dart +++ b/Frontend/patient_manager/lib/pages/home.dart @@ -32,19 +32,38 @@ class _HomeState extends State { @override Widget build(BuildContext context) { - return Scaffold( - appBar: MyAppBar(barTitle: "Mzanzi Innovation Hub"), - body: HomeTileGrid(), - drawer: FutureBuilder( - future: getUserEmail(), - builder: (contexts, snapshot) { - if (snapshot.connectionState == ConnectionState.done) { - return MyAppDrawer(drawerTitle: useremail); - } else { - return Center(child: CircularProgressIndicator()); - } - }, - ), + return FutureBuilder( + future: getUserEmail(), + builder: (contexts, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return Scaffold( + appBar: MyAppBar(barTitle: "Mzanzi Innovation Hub"), + drawer: MyAppDrawer( + drawerTitle: useremail, + ), + body: HomeTileGrid( + userEmail: useremail, + ), + ); + } else { + return Center(child: CircularProgressIndicator()); + } + }, ); + + // Scaffold( + // appBar: MyAppBar(barTitle: "Mzanzi Innovation Hub"), + // body: HomeTileGrid(), + // drawer: FutureBuilder( + // future: getUserEmail(), + // builder: (contexts, snapshot) { + // if (snapshot.connectionState == ConnectionState.done) { + // return MyAppDrawer(drawerTitle: useremail); + // } else { + // return Center(child: CircularProgressIndicator()); + // } + // }, + // ), + // ); } } diff --git a/Frontend/patient_manager/lib/pages/patientManager.dart b/Frontend/patient_manager/lib/pages/patientManager.dart index 097b390c..ecc606b4 100644 --- a/Frontend/patient_manager/lib/pages/patientManager.dart +++ b/Frontend/patient_manager/lib/pages/patientManager.dart @@ -10,9 +10,9 @@ import 'package:http/http.dart' as http; import 'package:mysql_client/mysql_client.dart'; import 'package:patient_manager/objects/patients.dart'; -Future> fetchPatients() async { +Future> fetchPatients(String endpoint) async { print("fetch patients"); - final response = await http.get(Uri.parse('http://localhost:80/patients/')); + final response = await http.get(Uri.parse(endpoint)); //print("Status Code: " + response.statusCode.toString()); if (response.statusCode == 200) { Iterable l = jsonDecode(response.body); @@ -30,54 +30,57 @@ Future> fetchPatients() async { } class PatientManager extends StatefulWidget { - const PatientManager({super.key}); + final String userEmail; + + const PatientManager({ + super.key, + required this.userEmail, + }); @override State createState() => _PatientManagerState(); } class _PatientManagerState extends State { - String useremail = ""; - String endpoint = "http://localhost:80/patients/"; + //String useremail = ""; + String endpoint = "http://localhost:80/patients/user/"; late MySQLConnection conn; String resultsofDB = ""; late Future> futurePatients; - Future getuserEmail() async { - final res = await client.auth.getUser(); - //final response = await http.get(Uri.parse(endpoint)); - //print(json.decode(response.body)); - if (res.user!.email != null) { - print("User: " + res.user!.email.toString()); - useremail = res.user!.email!; - print(useremail); - } - } + // Future getuserEmail() async { + // final res = await client.auth.getUser(); + // //final response = await http.get(Uri.parse(endpoint)); + // //print(json.decode(response.body)); + // if (res.user!.email != null) { + // //print("User: " + res.user!.email.toString()); + // useremail = res.user!.email!; - @override - void initState() { - print("init now"); - getuserEmail(); - futurePatients = fetchPatients(); - super.initState(); - } + // //print(useremail); + // return useremail; + // } + // return ""; + // } + + // @override + // void initState() { + // // String endpoint = "http://localhost:80/patients/"; + // print("init now"); + // print("Endpoint 1: " + endpoint); + // //print(getuserEmail()); + // endpoint += userEmail; + // print("Endpoint 1: " + endpoint); + // futurePatients = fetchPatients(endpoint); + // super.initState(); + // } @override Widget build(BuildContext context) { return Scaffold( appBar: const MyAppBar(barTitle: "Patient Manager"), - drawer: FutureBuilder( - future: getuserEmail(), - builder: (context, snapshot) { - if (snapshot.hasData) { - return MyAppDrawer(drawerTitle: useremail); - } else { - return const MyAppDrawer(drawerTitle: "Error pulling email"); - } - }, - ), + drawer: MyAppDrawer(drawerTitle: widget.userEmail), body: FutureBuilder( - future: futurePatients, + future: fetchPatients(endpoint + widget.userEmail), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const CircularProgressIndicator(); diff --git a/Frontend/patient_manager/lib/router/routeGenerator.dart b/Frontend/patient_manager/lib/router/routeGenerator.dart index 1fac5261..6aa98f06 100644 --- a/Frontend/patient_manager/lib/router/routeGenerator.dart +++ b/Frontend/patient_manager/lib/router/routeGenerator.dart @@ -1,13 +1,14 @@ // ignore: file_names import 'package:flutter/material.dart'; import 'package:patient_manager/Authentication/authCheck.dart'; +import 'package:patient_manager/components/myAppBar.dart'; import 'package:patient_manager/components/signInOrRegister.dart'; import 'package:patient_manager/pages/home.dart'; import 'package:patient_manager/pages/patientManager.dart'; class RouteGenerator { static Route generateRoute(RouteSettings settings) { - //final args = settings.arguments; + final args = settings.arguments; switch (settings.name) { case '/': @@ -15,7 +16,14 @@ class RouteGenerator { case '/home': return MaterialPageRoute(builder: (_) => const Home()); case '/patient-manager': - return MaterialPageRoute(builder: (_) => const PatientManager()); + if (args is String) { + return MaterialPageRoute( + builder: (_) => PatientManager( + userEmail: args, + ), + ); + } + return _errorRoute(); case '/signin': return MaterialPageRoute(builder: (_) => const SignInOrRegister()); // //case '/signIn': @@ -26,3 +34,14 @@ class RouteGenerator { throw ''; } } + +Route _errorRoute() { + return MaterialPageRoute(builder: (_) { + return const Scaffold( + appBar: MyAppBar(barTitle: "Error"), + body: Center( + child: Text("Error"), + ), + ); + }); +}