From 732ab90b2f5ff35b07c28f30dd76b44bf812e5bc Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 27 Aug 2020 11:32:17 +0300 Subject: [PATCH] Book Appointment check login --- lib/pages/BookAppointment/DoctorProfile.dart | 45 ++++++++++++++++++-- lib/widgets/dialogs/alert_dialog.dart | 45 ++++++++++++++++++++ 2 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 lib/widgets/dialogs/alert_dialog.dart diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart index 42f2b3e8..b9f6e566 100644 --- a/lib/pages/BookAppointment/DoctorProfile.dart +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -1,7 +1,12 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; +import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/routes.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; import 'package:rating_bar/rating_bar.dart'; @@ -14,6 +19,8 @@ class DoctorProfile extends StatefulWidget { DoctorList doctor; DoctorProfileList docProfileList; + AuthenticatedUser authUser; + DoctorProfile({@required this.doctor, @required this.docProfileList}); @override @@ -28,6 +35,8 @@ class _DoctorProfileState extends State @override void initState() { _tabController = new TabController(length: 2, vsync: this); + widget.authUser = new AuthenticatedUser(); + getPatientData(); super.initState(); } @@ -175,13 +184,43 @@ class _DoctorProfileState extends State ); } + getPatientData() async { + AppSharedPreferences sharedPref = AppSharedPreferences(); + if (await sharedPref.getObject(USER_PROFILE) != null) { + var data = + AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + setState(() { + print(data); + widget.authUser = data; + }); + } + } + void goToBookConfirm() { - if (DocAvailableAppointments.areSlotsAvailable) - navigateToBookConfirm(context); - else + if (DocAvailableAppointments.areSlotsAvailable) { + if (widget.authUser.patientID != null) { + navigateToBookConfirm(context); + } else { + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: "You have to login to use this service", + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () => {navigateToLogin()}, + cancelFunction: () => {}); + dialog.showAlertDialog(context); + } + } else AppToast.showErrorToast(message: "Please select Time Slot to continue"); } + navigateToLogin() { + ConfirmDialog.closeAlertDialog(context); + Navigator.of(context).pushNamed( + WELCOME_LOGIN, + ); + } + Future navigateToBookConfirm(context) async { Navigator.push( context, diff --git a/lib/widgets/dialogs/alert_dialog.dart b/lib/widgets/dialogs/alert_dialog.dart new file mode 100644 index 00000000..81507326 --- /dev/null +++ b/lib/widgets/dialogs/alert_dialog.dart @@ -0,0 +1,45 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class AlertDialogBox { + final BuildContext context; + + final confirmMessage; + final okText; + final Function okFunction; + + AlertDialogBox( + {@required this.context, + @required this.confirmMessage, + @required this.okText, + @required this.okFunction}); + + showAlertDialog(BuildContext context) { + Widget continueButton = + FlatButton(child: Text(this.okText), onPressed: this.okFunction); + + // set up the AlertDialog + AlertDialog alert = AlertDialog( + title: Text(TranslationBase.of(context).confirm), + content: Text(this.confirmMessage), + actions: [ + continueButton, + ], + ); + + // show the dialog + showDialog( + barrierDismissible: false, + context: context, + builder: (BuildContext context) { + return alert; + }, + ); + } + + static closeAlertDialog(BuildContext context) { + Navigator.of(context).pop(); + } + +}