diff --git a/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index da4ea1e3..bc4dc3af 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -1,7 +1,10 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; +import 'package:go_router/go_router.dart'; import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_banner_ad.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; @@ -49,9 +52,9 @@ class _BuildLoyaltyCardListState extends State { final _formKey = GlobalKey(); void openscanner() async { - Navigator.of(context).pushNamed( - '/scanner', - arguments: _cardNumberController, + context.pushNamed( + "barcodeScanner", + extra: _cardNumberController, ); } @@ -136,18 +139,31 @@ class _BuildLoyaltyCardListState extends State { const SizedBox(height: 15), Center( child: MihButton( - onPressed: () { + onPressed: () async { if (_formKey.currentState!.validate()) { - MIHMzansiWalletApis.updateLoyaltyCardAPICall( + int statusCode = await MIHMzansiWalletApis + .updateLoyaltyCardAPICall( widget.signedInUser, widget.cardList[index].idloyalty_cards, widget.cardList[index].favourite, widget.cardList[index].priority_index, _nicknameController.text, _cardNumberController.text, - 0, ctxt, ); + if (statusCode == 200) { + context.pop(); + context.pop(); + context.goNamed( + "mzansiWallet", + extra: WalletArguments( + widget.signedInUser, + 0, + ), + ); + } else { + internetConnectionPopUp(); + } } else { MihAlertServices().formNotFilledCompletely(context); } @@ -184,13 +200,23 @@ class _BuildLoyaltyCardListState extends State { builder: (context) { return MIHDeleteMessage( deleteType: "Loyalty Card", - onTap: () { - MIHMzansiWalletApis.deleteLoyaltyCardAPICall( + onTap: () async { + int statusCode = + await MIHMzansiWalletApis.deleteLoyaltyCardAPICall( widget.signedInUser, widget.cardList[index].idloyalty_cards, - widget.navIndex, context, ); + if (statusCode == 200) { + setState(() { + widget.cardList.removeAt(index); + }); + context.pop(); + context.pop(); + } else { + context.pop(); + internetConnectionPopUp(); + } }); }, ); @@ -225,17 +251,30 @@ class _BuildLoyaltyCardListState extends State { height: 15, ), MihButton( - onPressed: () { - MIHMzansiWalletApis.updateLoyaltyCardAPICall( + onPressed: () async { + int statusCode = + await MIHMzansiWalletApis.updateLoyaltyCardAPICall( widget.signedInUser, widget.cardList[index].idloyalty_cards, "Yes", _noFavourites, widget.cardList[index].nickname, widget.cardList[index].card_number, - 1, ctxt, ); + if (statusCode == 200) { + context.pop(); + context.pop(); + context.goNamed( + "mzansiWallet", + extra: WalletArguments( + widget.signedInUser, + 1, + ), + ); + } else { + internetConnectionPopUp(); + } }, buttonColor: MihColors.getGreenColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), @@ -257,6 +296,17 @@ class _BuildLoyaltyCardListState extends State { ); } + void internetConnectionPopUp() { + showDialog( + context: context, + builder: (context) { + return const MIHErrorMessage( + errorType: "Internet Connection", + ); + }, + ); + } + void removeFromFavCardWindow(BuildContext ctxt, int index) { showDialog( context: context, @@ -286,17 +336,30 @@ class _BuildLoyaltyCardListState extends State { height: 15, ), MihButton( - onPressed: () { - MIHMzansiWalletApis.updateLoyaltyCardAPICall( + onPressed: () async { + int statusCode = + await MIHMzansiWalletApis.updateLoyaltyCardAPICall( widget.signedInUser, widget.cardList[index].idloyalty_cards, "", 0, widget.cardList[index].nickname, widget.cardList[index].card_number, - 0, ctxt, ); + if (statusCode == 200) { + context.pop(); + context.pop(); + context.goNamed( + "mzansiWallet", + extra: WalletArguments( + widget.signedInUser, + 0, + ), + ); + } else { + internetConnectionPopUp(); + } }, buttonColor: MihColors.getRedColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), diff --git a/Frontend/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart b/Frontend/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart index 74c2040e..23eb53c5 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; @@ -36,7 +37,7 @@ class _MihBarcodeScannerState extends State }); print(bcode.barcodes.first.rawValue); _scannerController.stop(); - Navigator.of(context).pop(); + context.pop(); } } @@ -123,7 +124,7 @@ class _MihBarcodeScannerState extends State child: MihButton( onPressed: () { _scannerController.stop(); - Navigator.of(context).pop(); + context.pop(); }, buttonColor: MihColors.getRedColor( MzansiInnovationHub.of(context)!.theme.mode == diff --git a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 24c85c74..12bdd067 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -1,3 +1,4 @@ +import 'package:go_router/go_router.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'; @@ -52,7 +53,13 @@ class _MihWalletState extends State { icon: const Icon(Icons.arrow_back), iconSize: 35, onTap: () { - Navigator.of(context).pop(); + context.goNamed( + 'home', + extra: AuthArguments( + true, + false, + ), + ); FocusScope.of(context).unfocus(); }, ); diff --git a/Frontend/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart b/Frontend/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart index 83e483aa..3df6a919 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_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'; @@ -25,10 +26,14 @@ class _MihWalletTileState extends State { Widget build(BuildContext context) { return MihPackageTile( onTap: () { - Navigator.of(context).pushNamed( - '/mzansi-wallet', - arguments: WalletArguments(widget.signedInUser, 0), + context.goNamed( + 'mzansiWallet', + extra: WalletArguments(widget.signedInUser, 0), ); + // Navigator.of(context).pushNamed( + // '/mzansi-wallet', + // arguments: WalletArguments(widget.signedInUser, 0), + // ); }, appName: "Mzansi Wallet", appIcon: Icon( diff --git a/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart b/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart index 0cd5b97a..93442c9b 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart @@ -1,6 +1,8 @@ import 'package:flutter_speed_dial/flutter_speed_dial.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_banner_ad.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_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; @@ -73,9 +75,9 @@ class _MihCardsState extends State { } void openscanner() async { - Navigator.of(context).pushNamed( - '/scanner', - arguments: cardNumberController, + context.pushNamed( + "barcodeScanner", + extra: cardNumberController, ); } @@ -87,6 +89,71 @@ class _MihCardsState extends State { } } + void successPopUp(String title, String message, int packageIndex) { + 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(); + }, + 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"), + ); + }, + ); + } + + void internetConnectionPopUp() { + showDialog( + context: context, + builder: (context) { + return const MIHErrorMessage( + errorType: "Internet Connection", + ); + }, + ); + } + void addCardWindow(BuildContext ctxt, double width) { showDialog( context: context, @@ -246,7 +313,7 @@ class _MihCardsState extends State { const SizedBox(height: 15), Center( child: MihButton( - onPressed: () { + onPressed: () async { if (_formKey.currentState!.validate()) { if (shopController.text == "") { showDialog( @@ -257,7 +324,8 @@ class _MihCardsState extends State { }, ); } else { - MIHMzansiWalletApis.addLoyaltyCardAPICall( + int statusCode = + await MIHMzansiWalletApis.addLoyaltyCardAPICall( widget.signedInUser, widget.signedInUser.app_id, shopController.text, @@ -265,9 +333,22 @@ class _MihCardsState extends State { "", 0, _nicknameController.text, - 0, context, ); + if (statusCode == 201) { + setState(() { + cardList = MIHMzansiWalletApis.getLoyaltyCards( + widget.signedInUser.app_id); + }); + context.pop(); + successPopUp( + "Successfully Added Card", + "The loyalty card has been added to your favourites.", + 0, + ); + } else { + internetConnectionPopUp(); + } } } else { MihAlertServices().formNotFilledCompletely(context); diff --git a/Frontend/lib/mih_services/mih_mzansi_wallet_services.dart b/Frontend/lib/mih_services/mih_mzansi_wallet_services.dart index acbdf2a1..01254196 100644 --- a/Frontend/lib/mih_services/mih_mzansi_wallet_services.dart +++ b/Frontend/lib/mih_services/mih_mzansi_wallet_services.dart @@ -1,7 +1,7 @@ import 'dart:convert'; +import 'package:go_router/go_router.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart'; -import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:flutter/material.dart'; @@ -22,22 +22,12 @@ class MIHMzansiWalletApis { static Future> getLoyaltyCards( String app_id, ) async { - //print("Patien manager page: $endpoint"); final response = await http.get(Uri.parse( "${AppEnviroment.baseApiUrl}/mzasni-wallet/loyalty-cards/$app_id")); - // print("Here"); - // print("Body: ${response.body}"); - // print("Code: ${response.statusCode}"); - // errorCode = response.statusCode.toString(); - // errorBody = response.body; if (response.statusCode == 200) { - //print("Here1"); Iterable l = jsonDecode(response.body); - //print("Here2"); List patientQueue = List.from( l.map((model) => MIHLoyaltyCard.fromJson(model))); - //print("Here3"); - //print(patientQueue); return patientQueue; } else { throw Exception('failed to fatch loyalty cards'); @@ -55,19 +45,10 @@ class MIHMzansiWalletApis { //print("Patien manager page: $endpoint"); final response = await http.get(Uri.parse( "${AppEnviroment.baseApiUrl}/mzasni-wallet/loyalty-cards/favourites/$app_id")); - // print("Here"); - // print("Body: ${response.body}"); - // print("Code: ${response.statusCode}"); - // errorCode = response.statusCode.toString(); - // errorBody = response.body; if (response.statusCode == 200) { - // print("Here1"); Iterable l = jsonDecode(response.body); - //print("Here2"); List patientQueue = List.from( l.map((model) => MIHLoyaltyCard.fromJson(model))); - //print("Here3"); - //print(patientQueue); return patientQueue; } else { throw Exception('failed to fatch loyalty cards'); @@ -82,10 +63,9 @@ class MIHMzansiWalletApis { /// BuildContext context, /// /// Returns VOID (TRIGGERS NOTIGICATIOPN ON SUCCESS) - static Future deleteLoyaltyCardAPICall( + static Future deleteLoyaltyCardAPICall( AppUser signedInUser, int idloyalty_cards, - int navIndex, BuildContext context, ) async { loadingPopUp(context); @@ -99,22 +79,24 @@ class MIHMzansiWalletApis { ); //print("Here4"); //print(response.statusCode); - if (response.statusCode == 200) { - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pushNamed( - '/mzansi-wallet', - arguments: WalletArguments(signedInUser, navIndex), - ); - String message = - "The loyalty card has been deleted successfully. This means it will no longer be visible in your Mzansi Wallet."; - successPopUp(message, context); - } else { - Navigator.pop(context); - internetConnectionPopUp(context); - } + context.pop(); + return response.statusCode; + // if (response.statusCode == 200) { + // Navigator.of(context).pop(); + // Navigator.of(context).pop(); + // Navigator.of(context).pop(); + // Navigator.of(context).pop(); + // Navigator.of(context).pushNamed( + // '/mzansi-wallet', + // arguments: WalletArguments(signedInUser, navIndex), + // ); + // String message = + // "The loyalty card has been deleted successfully. This means it will no longer be visible in your Mzansi Wallet."; + // successPopUp(message, context); + // } else { + // Navigator.pop(context); + // internetConnectionPopUp(context); + // } } /// This function is used to add a lopyalty card to users mzansi wallet. @@ -127,7 +109,7 @@ class MIHMzansiWalletApis { /// BuildContext context, /// /// Returns VOID (TRIGGERS SUCCESS pop up) - static Future addLoyaltyCardAPICall( + static Future addLoyaltyCardAPICall( AppUser signedInUser, String app_id, String shop_name, @@ -135,7 +117,6 @@ class MIHMzansiWalletApis { String favourite, int priority_index, String nickname, - int navIndex, BuildContext context, ) async { loadingPopUp(context); @@ -154,21 +135,23 @@ class MIHMzansiWalletApis { "nickname": nickname, }), ); - if (response.statusCode == 201) { - Navigator.pop(context); - String message = - "Your $shop_name Loyalty Card was successfully added to your Mzansi Wallet."; - Navigator.pop(context); - Navigator.pop(context); - Navigator.of(context).pushNamed( - '/mzansi-wallet', - arguments: WalletArguments(signedInUser, navIndex), - ); - successPopUp(message, context); - } else { - Navigator.pop(context); - internetConnectionPopUp(context); - } + context.pop(); + return response.statusCode; + // if (response.statusCode == 201) { + // // Navigator.pop(context); + // // String message = + // // "Your $shop_name Loyalty Card was successfully added to your Mzansi Wallet."; + // // Navigator.pop(context); + // // Navigator.pop(context); + // // Navigator.of(context).pushNamed( + // // '/mzansi-wallet', + // // arguments: WalletArguments(signedInUser, navIndex), + // // ); + // // successPopUp(message, context); + // } else { + // // Navigator.pop(context); + // // internetConnectionPopUp(context); + // } } /// This function is used to Update loyalty card from users mzansi wallet. @@ -179,14 +162,13 @@ class MIHMzansiWalletApis { /// BuildContext context, /// /// Returns VOID (TRIGGERS NOTIGICATIOPN ON SUCCESS) - static Future updateLoyaltyCardAPICall( + static Future updateLoyaltyCardAPICall( AppUser signedInUser, int idloyalty_cards, String favourite, int priority_index, String nickname, String card_number, - int navIndex, BuildContext context, ) async { loadingPopUp(context); @@ -204,23 +186,8 @@ class MIHMzansiWalletApis { "card_number": card_number, }), ); - //print("Here4"); - //print(response.statusCode); - if (response.statusCode == 200) { - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pop(); - Navigator.of(context).pushNamed( - '/mzansi-wallet', - arguments: WalletArguments(signedInUser, navIndex), - ); - String message = "The loyalty card has been added to your favourites."; - successPopUp(message, context); - } else { - Navigator.pop(context); - internetConnectionPopUp(context); - } + context.pop(); + return response.statusCode; } //================== POP UPS ==========================================================================