diff --git a/Frontend/patient_manager/lib/components/homeTileGrid.dart b/Frontend/patient_manager/lib/components/homeTileGrid.dart index bc8dd55d..35c8bfd8 100644 --- a/Frontend/patient_manager/lib/components/homeTileGrid.dart +++ b/Frontend/patient_manager/lib/components/homeTileGrid.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:google_nav_bar/google_nav_bar.dart'; import 'package:patient_manager/components/homeTile.dart'; @@ -9,6 +11,8 @@ import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/env/env.dart'; import 'package:patient_manager/main.dart'; import 'package:patient_manager/objects/appUser.dart'; +import 'package:patient_manager/objects/businessUser.dart'; +import 'package:supertokens_flutter/http.dart' as http; class HomeTileGrid extends StatefulWidget { final AppUser signedInUser; @@ -27,13 +31,40 @@ class _HomeTileGridState extends State { late List> devTileList = []; List>> pbswitch = []; int _selectedIndex = 0; + final baseAPI = AppEnviroment.baseApiUrl; + late Future futureBusinessUser; + BusinessUser? businessUser; + + Future getBusinessUserDetails() async { + //print("pat man drawer: " + endpointUserData + widget.userEmail); + //var uid = await SuperTokens.getUserId(); + var response = await http + .get(Uri.parse("$baseAPI/business-user/${widget.signedInUser.app_id}")); + + // print(response.statusCode); + // print(response.body); + if (response.statusCode == 200) { + // print("here"); + String body = response.body; + var decodedData = jsonDecode(body); + BusinessUser business_User = BusinessUser.fromJson(decodedData); + // print(u.email); + //setState(() { + //_widgetOptions = setLayout(u); + //}); + print("in api call: $business_User"); + return business_User; + } else { + return null; + } + } void setAppsNewPersonal(List> tileList) { if (widget.signedInUser.fname == "") { tileList.add( [ Icons.perm_identity, - "Update Profie", + "Setup Profie", () { Navigator.of(context) .pushNamed('/profile', arguments: widget.signedInUser); @@ -45,6 +76,23 @@ class _HomeTileGridState extends State { } } + void setAppsNewBusiness(List> tileList) { + tileList.add( + [ + Icons.add_business_outlined, + "Setup Business", + () { + Navigator.of(context).pushNamed( + '/business/add', + arguments: widget.signedInUser, + ); + // Navigator.popAndPushNamed(context, '/patient-manager', + // arguments: widget.userEmail); + } + ], + ); + } + void setAppsPersonal(List> tileList) { tileList.add( [ @@ -61,6 +109,18 @@ class _HomeTileGridState extends State { } void setAppsBusiness(List> tileList) { + tileList.add( + [ + Icons.business, + "Manage Bus", + () { + Navigator.of(context) + .pushNamed('/business-profile', arguments: widget.signedInUser); + // Navigator.popAndPushNamed(context, '/patient-manager', + // arguments: widget.userEmail); + } + ], + ); tileList.add( [ Icons.medication, @@ -104,7 +164,7 @@ class _HomeTileGridState extends State { showDialog( context: context, builder: (context) { - return const MyErrorMessage(errorType: "Invalid Email"); + return const MyErrorMessage(errorType: "Invalid Username"); }, ); } @@ -141,18 +201,27 @@ class _HomeTileGridState extends State { } } - void setApps(List> personalTileList, - List> businessTileList) { + Future setApps(List> personalTileList, + List> businessTileList) async { + print(businessUser); if (widget.signedInUser.fname == "") { + print("New personal user"); setAppsNewPersonal(personalTileList); } else if (widget.signedInUser.type == "personal") { + print("existing personal user"); setAppsPersonal(personalTileList); + } else if (businessUser == null) { + print("new business user"); + setAppsPersonal(personalTileList); + setAppsNewBusiness(businessTileList); } else { //business + print("existing business user"); setAppsPersonal(personalTileList); setAppsBusiness(businessTileList); } if (AppEnviroment.getEnv() == "Dev") { + print("Dev Enviroment"); setAppsDev(personalTileList); setAppsDev(businessTileList); } @@ -192,7 +261,15 @@ class _HomeTileGridState extends State { @override void initState() { - setApps(personalTileList, businessTileList); + futureBusinessUser = getBusinessUserDetails().then((results) { + //print(results); + setState(() { + businessUser = results; + setApps(personalTileList, businessTileList); + }); + return null; + }); + super.initState(); } @@ -202,66 +279,78 @@ class _HomeTileGridState extends State { double width = size.width; double height = size.height; - return Scaffold( - appBar: const MIHAppBar(barTitle: "Mzansi Innovation Hub"), - drawer: MIHAppDrawer( - signedInUser: widget.signedInUser, - logo: MzanziInnovationHub.of(context)!.theme.logoImage(), //logo, - ), - body: Container( - width: width, - height: height, - child: GridView.builder( - padding: EdgeInsets.fromLTRB(width / 6, height / 16, width / 6, - 0), //EdgeInsets.symmetric(horizontal: width / 6), - itemCount: pbswitch[_selectedIndex].length, - gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - maxCrossAxisExtent: 200), - //const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), - itemBuilder: (context, index) { - var tile = pbswitch[_selectedIndex][index]; - //setState(() {}); - return buildtile(tile); - }, - ), - ), - bottomNavigationBar: Visibility( - visible: isBusinessUser(widget.signedInUser), - child: Padding( - padding: const EdgeInsets.all(15.0), - child: GNav( - //hoverColor: Colors.lightBlueAccent, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - iconSize: 35.0, - activeColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), - tabBackgroundColor: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - //gap: 20, - //padding: EdgeInsets.all(15), - tabs: [ - GButton( - icon: Icons.perm_identity, - text: "Personal", - onPressed: () { - setState(() { - _selectedIndex = 0; - }); + return FutureBuilder( + future: futureBusinessUser, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return Scaffold( + appBar: const MIHAppBar(barTitle: "Mzansi Innovation Hub"), + drawer: MIHAppDrawer( + signedInUser: widget.signedInUser, + logo: MzanziInnovationHub.of(context)!.theme.logoImage(), //logo, + ), + body: Container( + width: width, + height: height, + child: GridView.builder( + padding: EdgeInsets.fromLTRB(width / 6, height / 16, width / 6, + 0), //EdgeInsets.symmetric(horizontal: width / 6), + itemCount: pbswitch[_selectedIndex].length, + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 200), + //const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), + itemBuilder: (context, index) { + var tile = pbswitch[_selectedIndex][index]; + //setState(() {}); + return buildtile(tile); }, ), - GButton( - icon: Icons.business, - text: "Business", - onPressed: () { - setState(() { - _selectedIndex = 1; - }); - }, + ), + bottomNavigationBar: Visibility( + visible: isBusinessUser(widget.signedInUser), + child: Padding( + padding: const EdgeInsets.all(15.0), + child: GNav( + //hoverColor: Colors.lightBlueAccent, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + iconSize: 35.0, + activeColor: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + tabBackgroundColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + //gap: 20, + //padding: EdgeInsets.all(15), + tabs: [ + GButton( + icon: Icons.perm_identity, + text: "Personal", + onPressed: () { + setState(() { + _selectedIndex = 0; + }); + }, + ), + GButton( + icon: Icons.business_center, + text: "Business", + onPressed: () { + setState(() { + _selectedIndex = 1; + }); + }, + ), + ], + selectedIndex: _selectedIndex, + ), ), - ], - selectedIndex: _selectedIndex, - ), - ), - ), + ), + ); + } + return const Center( + child: CircularProgressIndicator(), + ); + }, ); } }