You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HMG_Patient_App/lib/widgets/drawer/app_drawer_widget.dart

839 lines
48 KiB
Dart

import 'dart:io' show Platform;
import 'package:auto_size_text/auto_size_text.dart';
4 years ago
import 'package:barcode_scan2/barcode_scan2.dart';
import 'package:diplomaticquarterapp/analytics/google-analytics.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
5 years ago
import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart';
4 years ago
import 'package:diplomaticquarterapp/core/service/privilege_service.dart';
5 years ago
import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
6 years ago
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
6 years ago
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
4 years ago
import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart';
import 'package:diplomaticquarterapp/models/InPatientServices/get_admission_info_response_model.dart';
import 'package:diplomaticquarterapp/models/InPatientServices/get_admission_request_info_response_model.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/Blood/user_agreement_page.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notifications_page.dart';
5 years ago
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
3 years ago
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
5 years ago
import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doctor.dart';
import 'package:diplomaticquarterapp/routes.dart';
4 years ago
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart';
4 years ago
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
4 years ago
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
4 years ago
import 'package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart';
3 years ago
import 'package:diplomaticquarterapp/uitl/LocalNotification.dart';
6 years ago
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
5 years ago
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
4 years ago
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
6 years ago
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
5 years ago
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
3 years ago
import 'package:flutter/services.dart';
3 years ago
// import 'package:flutter_amazonpaymentservices/environment_type.dart';
// import 'package:flutter_amazonpaymentservices/flutter_amazonpaymentservices.dart';
// import 'package:flutter_amazonpaymentservices/environment_type.dart';
// import 'package:flutter_amazonpaymentservices/flutter_amazonpaymentservices.dart';
// import 'package:flutter_amazonpaymentservices/flutter_amazonpaymentservices.dart';
import 'package:flutter_svg/flutter_svg.dart';
4 years ago
import 'package:in_app_review/in_app_review.dart';
6 years ago
import 'package:provider/provider.dart';
4 years ago
import 'package:url_launcher/url_launcher.dart';
import '../../config/size_config.dart';
import '../../locator.dart';
import 'drawer_item_widget.dart';
class AppDrawer extends StatefulWidget {
@override
_AppDrawerState createState() => _AppDrawerState();
}
class _AppDrawerState extends State<AppDrawer> {
4 years ago
final InAppReview _inAppReview = InAppReview.instance;
2 years ago
ProjectViewModel? projectProvider;
6 years ago
var sharedPref = new AppSharedPreferences();
var familyFileProvider = FamilyFilesProvider();
PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
2 years ago
AuthenticatedUser? user;
AuthenticatedUser? mainUser;
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
5 years ago
VitalSignService _vitalSignService = locator<VitalSignService>();
AppointmentRateViewModel appointmentRateViewModel = locator<AppointmentRateViewModel>();
4 years ago
PrivilegeService _privilegeService = locator<PrivilegeService>();
2 years ago
ToDoCountProviderModel? toDoProvider;
String? booldType;
String? notificationCount;
final authService = new AuthProvider();
String pharmacyLiveCareQRCode = "";
4 years ago
2 years ago
@override
void initState() {
super.initState();
checkUserData();
}
@override
Widget build(BuildContext context) {
6 years ago
projectProvider = Provider.of(context);
4 years ago
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
5 years ago
return Container(
width: MediaQuery.of(context).size.width * 0.75,
color: Theme.of(context).scaffoldBackgroundColor,
child: Container(
5 years ago
color: Colors.white,
5 years ago
child: Theme(
data: Theme.of(context).copyWith(canvasColor: Theme.of(context).scaffoldBackgroundColor),
5 years ago
child: Drawer(
child: Column(
children: <Widget>[
Expanded(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
Container(
2 years ago
height: SizeConfig.screenHeight! * .30,
5 years ago
child: InkWell(
child: Padding(
padding: const EdgeInsets.all(14.0),
5 years ago
child: Column(
children: <Widget>[
Container(
width: double.infinity,
padding: EdgeInsets.only(top: 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
4 years ago
SvgPicture.asset(
"assets/images/new/logo.svg",
height: 60,
width: 60,
),
IconButton(
icon: Icon(Icons.clear),
onPressed: () {
Navigator.pop(context);
},
)
],
),
5 years ago
),
mHeight(12),
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
(user != null && projectProvider!.isLogin) ? user!.firstName! + ' ' + user!.lastName! : TranslationBase.of(context).cantSeeProfile,
4 years ago
style: TextStyle(color: Color(0xff2E303A), fontWeight: FontWeight.bold, fontSize: 20, letterSpacing: -1.2, height: 35 / 20),
),
AutoSizeText(
2 years ago
(user != null && projectProvider!.isLogin)
? TranslationBase.of(context).fileNumber + ": " + user!.patientID.toString()
: TranslationBase.of(context).loginRegisterNow,
maxLines: 1,
minFontSize: 10,
style: TextStyle(
fontSize: SizeConfig.textMultiplier! * 1.6,
fontWeight: FontWeight.w600,
letterSpacing: -0.39,
height: 0.8,
),
),
// Text(
// (user != null && projectProvider!.isLogin)
// ? TranslationBase.of(context).fileNumber + ": " + user!.patientID.toString()
// : TranslationBase.of(context).loginRegisterNow,
// style: TextStyle(
// color: Color(0xff2E303A),
// fontSize: 16,
// letterSpacing: -0.96,
// height: 1,
// ),
// ),
mHeight(20.0),
(user != null && projectProvider!.isLogin)
1 year ago
? Image.network("https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${user!.patientID.toString()}", fit: BoxFit.fill, height: 70, width: 70)
: Container(),
],
),
),
5 years ago
],
),
),
),
),
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
2 years ago
(user != null && projectProvider!.isLogin)
? Container()
: InkWell(
child: DrawerItem(
TranslationBase.of(context).arabicChange,
Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.all(3)),
isImageIcon: true,
bottomLine: false,
projectProvider: projectProvider,
),
onTap: () {
2 years ago
sharedPref.setBool(IS_ROBOT_INIT, false);
4 years ago
sharedPref.remove(CLINICS_LIST);
2 years ago
if (projectProvider!.isArabic) {
projectProvider!.changeLanguage('en');
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('change language to english');
} else {
2 years ago
projectProvider!.changeLanguage('ar');
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('change language to arabic');
}
var themeNotifier = Provider.of<ThemeNotifier>(context, listen: false);
2 years ago
themeNotifier.setTheme(defaultTheme(fontName: projectProvider!.isArabic ? 'Cairo' : 'Poppins'));
},
),
2 years ago
(user != null && projectProvider!.isLogin)
5 years ago
? Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
2 years ago
(user!.isFamily == null || user!.isFamily == false)
5 years ago
? InkWell(
child: DrawerItem(TranslationBase.of(context).family, SvgPicture.asset("assets/images/new/family_files.svg"),
isImageIcon: true,
bottomLine: false,
textColor: CustomColors.black,
iconColor: CustomColors.black,
sideArrow: true,
letterSpacing: -0.84,
projectProvider: projectProvider),
5 years ago
onTap: () {
5 years ago
Navigator.of(context).pop();
5 years ago
Navigator.of(context).pushNamed(
MY_FAMILIY,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('my family');
5 years ago
},
)
: SizedBox(),
FutureBuilder(
future: getFamilyFiles(), // async work
Merge branch 'development_v3.3' of http://34.17.52.79/Haroon6138/diplomatic-quarter into dev_v3.13.6 # Conflicts: # lib/config/config.dart # lib/core/model/labs/patient_lab_orders.dart # lib/core/model/labs/request_patient_lab_special_result.dart # lib/core/model/labs/request_send_lab_report_email.dart # lib/core/model/radiology/final_radiology.dart # lib/core/model/radiology/request_send_rad_report_email.dart # lib/core/model/rate/appoitment_rated.dart # lib/core/service/client/base_app_client.dart # lib/core/service/medical/labs_service.dart # lib/core/service/medical/radiology_service.dart # lib/core/viewModels/medical/labs_view_model.dart # lib/core/viewModels/medical/radiology_view_model.dart # lib/models/Authentication/check_activation_code_request.dart # lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart # lib/pages/BookAppointment/BookSuccess.dart # lib/pages/BookAppointment/QRCode.dart # lib/pages/DrawerPages/family/my-family.dart # lib/pages/DrawerPages/notifications/notification_details_page.dart # lib/pages/MyAppointments/AppointmentDetails.dart # lib/pages/MyAppointments/MyAppointments.dart # lib/pages/MyAppointments/widgets/AppointmentActions.dart # lib/pages/ToDoList/ToDo.dart # lib/pages/landing/landing_page.dart # lib/pages/livecare/widgets/clinic_list.dart # lib/pages/login/confirm-login.dart # lib/pages/login/login.dart # lib/pages/medical/labs/laboratory_result_page.dart # lib/pages/medical/radiology/radiology_details_page.dart # lib/services/authentication/auth_provider.dart # lib/splashPage.dart # lib/uitl/push-notification-handler.dart # lib/widgets/drawer/app_drawer_widget.dart
2 years ago
builder: (BuildContext context, AsyncSnapshot<GetAllSharedRecordsByStatusResponse?> snapshot) {
5 years ago
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator());
5 years ago
default:
if (snapshot.hasError)
2 years ago
return Padding(padding: EdgeInsets.all(10), child: Text(snapshot.error.toString()));
5 years ago
else
return Container(
child: Column(
children: [
2 years ago
user!.isFamily == true
? Container(
padding: EdgeInsets.only(bottom: 5, left: 4),
child: InkWell(
onTap: () {
switchUser(mainUser, context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: SvgPicture.asset("assets/images/new/family_files.svg"),
),
Expanded(
flex: 7,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
mainUser!.firstName! + ' ' + mainUser!.lastName!,
4 years ago
color: Color(0xff2E303A), //Theme.of(context).textTheme.bodyText1.color,
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.33,
),
AppText(
2 years ago
TranslationBase.of(context).fileno + ": " + mainUser!.patientID.toString(),
4 years ago
color: Color(0xff989898),
fontSize: 12,
letterSpacing: -0.33,
),
4 years ago
Container(
height: 1,
margin: EdgeInsets.only(top: 7.5),
color: Color(0xffEDEDED),
),
],
),
),
],
),
),
)
: SizedBox(),
Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: snapshot.data!.getAllSharedRecordsByStatusList!.map<Widget>((result) {
return result.status == 3
? Container(
padding: EdgeInsets.only(bottom: 5),
child: InkWell(
5 years ago
onTap: () {
switchUser(result, context);
5 years ago
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
5 years ago
Expanded(
2 years ago
child: Icon(Icons.person, color: result.responseID == user!.patientID ? Colors.transparent : Colors.transparent),
5 years ago
),
Expanded(
flex: 7,
child: Padding(
padding: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
result.patientName!,
2 years ago
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff2B353E),
fontWeight: FontWeight.w600,
4 years ago
fontSize: 11,
letterSpacing: -0.33,
),
AppText(
TranslationBase.of(context).fileno + ": " + result.responseID.toString(),
2 years ago
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff989898),
4 years ago
fontSize: 11,
letterSpacing: -0.33,
),
Divider(
color: Colors.grey[400],
),
],
),
),
),
5 years ago
],
),
),
)
: SizedBox();
}).toList())
],
));
}
},
),
mHeight(20),
InkWell(
child: DrawerItem(TranslationBase.of(context).arabicChange,
2 years ago
Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.only(left: 3, right: 3, top: 3, bottom: projectProvider!.isArabic ? 3 : 0)),
isImageIcon: true,
bottomLine: false,
letterSpacing: -0.84,
fontSize: 14,
fontHeight: projectProvider!.isArabic ? 1 : 0.8,
projectProvider: projectProvider),
onTap: () {
4 years ago
sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL);
4 years ago
sharedPref.remove(CLINICS_LIST);
2 years ago
sharedPref.setBool(IS_ROBOT_INIT, false);
projectProvider!.setIsAllAppointmentsLoaded(false);
2 years ago
if (projectProvider!.isArabic) {
projectProvider!.changeLanguage('en');
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('change language to english');
} else {
2 years ago
projectProvider!.changeLanguage('ar');
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('change language to arabic');
5 years ago
}
},
),
// InkWell(
// child: DrawerItem(TranslationBase.of(context).pharmacyLiveCare, SvgPicture.asset("assets/images/new/Live_Care.svg"),
// isImageIcon: true,
// bottomLine: false,
// textColor: Theme.of(context).textTheme.bodyText1.color,
// iconColor: Theme.of(context).textTheme.bodyText1.color,
// sideArrow: true,
// letterSpacing: -0.84,
// projectProvider: projectProvider),
// onTap: () {
// readQRCode();
// },
// ),
5 years ago
InkWell(
child: Stack(
children: [
DrawerItem(
TranslationBase.of(context).notification,
SvgPicture.asset("assets/images/new/notifications.svg"),
isImageIcon: true,
bottomLine: false,
letterSpacing: -0.84,
fontSize: 14,
projectProvider: projectProvider,
2 years ago
count: toDoProvider!.notificationsCount != "0" && !projectProvider!.isLoginChild
5 years ago
? new Container(
padding: EdgeInsets.all(4),
5 years ago
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
4 years ago
color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20),
),
constraints: BoxConstraints(
5 years ago
minWidth: 20,
minHeight: 20,
),
5 years ago
child: new Text(
2 years ago
toDoProvider!.notificationsCount.toString(),
5 years ago
style: new TextStyle(
color: Colors.white,
2 years ago
fontSize: projectProvider!.isArabic ? 8 : 9,
5 years ago
),
textAlign: TextAlign.center,
5 years ago
),
// ),
)
: SizedBox(),
),
],
),
onTap: () {
//NotificationsPage
4 years ago
// Navigator.of(context).pop();
2 years ago
if (!projectProvider!.isLoginChild) Navigator.push(context, FadePage(page: NotificationsPage()));
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('notifications');
5 years ago
},
),
2 years ago
if (projectProvider!.havePrivilege(3))
5 years ago
InkWell(
child: DrawerItem(TranslationBase.of(context).appsetting, SvgPicture.asset("assets/images/new/app_setting.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
onTap: () {
Navigator.of(context).pushNamed(
5 years ago
SETTINGS,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('app settings');
},
5 years ago
),
5 years ago
InkWell(
child: DrawerItem(TranslationBase.of(context).rateApp, Icons.star, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
5 years ago
onTap: () {
4 years ago
openAppReviewDialog();
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('rate our app');
4 years ago
// if (Platform.isIOS) {
// launchUrl(Uri.parse("https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978"));
4 years ago
// } else {
// launchUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en"));
4 years ago
// }
5 years ago
},
),
InkWell(
child: DrawerItem(TranslationBase.of(context).logout, SvgPicture.asset("assets/images/new/logout.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
5 years ago
onTap: () {
logout();
},
)
],
)
: InkWell(
child: DrawerItem(TranslationBase.of(context).loginregister, SvgPicture.asset("assets/images/new/logout.svg"),
isImageIcon: true, letterSpacing: -0.84, fontSize: 14, bottomLine: false, projectProvider: projectProvider),
onTap: () {
5 years ago
login();
},
5 years ago
),
4 years ago
InkWell(
child: DrawerItem(TranslationBase.of(context).privacyPolicy, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
onTap: () {
2 years ago
if (projectProvider!.isArabic)
4 years ago
launch("https://hmg.com/ar/Pages/Privacy.aspx");
else
launch("https://hmg.com/en/Pages/Privacy.aspx");
},
),
InkWell(
child: DrawerItem(TranslationBase.of(context).termsConditions, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
onTap: () {
Navigator.of(context).push(FadePage(page: UserAgreementPage()));
},
)
5 years ago
],
))
6 years ago
],
5 years ago
),
),
mHeight(12),
InkWell(
3 years ago
onTap: () async {
// var deviceId = await FlutterAmazonpaymentservices.getUDID;
// var signatureValue = "asD123@saereaccess_code=BsM6He4FMBaZ86W64kjZdevice_id=$deviceId" + "language=enmerchant_identifier=ipxnRXXqservice_command=SDK_TOKENasD123@saere";
// var signatureValueSHA = signatureValue.toSha256;
//
3 years ago
// GifLoaderDialogUtils.showMyDialog(context);
3 years ago
// DoctorsListService service = new DoctorsListService();
// service.getPayfortSDKTokenForPayment(deviceId, signatureValueSHA, isTest: true).then((res) {
// GifLoaderDialogUtils.hideDialog(context);
// print(res);
// startPaymentProcess(res['sdk_token']);
// }).catchError((err) {
// print(err);
// AppToast.showErrorToast(message: err);
// GifLoaderDialogUtils.hideDialog(context);
// });
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
TranslationBase.of(context).poweredBy,
style: TextStyle(
color: Color(0xFF989898),
fontSize: 13,
letterSpacing: -0.54,
fontWeight: FontWeight.w600,
),
),
mWidth(2),
Text(
"Cloud Solutions",
style: TextStyle(
color: Color(0xff2E303A),
fontSize: 13,
letterSpacing: -0.54,
fontWeight: FontWeight.w600,
),
),
mWidth(16),
SvgPicture.asset("assets/images/new/cloud_logo.svg"),
],
),
),
mHeight(12),
5 years ago
],
),
),
),
5 years ago
));
}
3 years ago
startPaymentProcess(String sdkToken) async {
// Map<String, String> requestParam = {};
// requestParam = {
// "amount": "100",
// "command": "PURCHASE",
// "currency": "SAR",
// "order_description": "Advance Payment",
// "customer_email": projectProvider.user.emailAddress,
// "customer_name": projectProvider.user.firstName + " " + projectProvider.user.lastName,
// "phone_number": projectProvider.user.mobileNumber,
// "language": projectProvider.isArabic ? "ar" : "en",
// "merchant_reference": DateTime.now().millisecondsSinceEpoch.toString(),
// "sdk_token": sdkToken,
// };
// try {
// await FlutterAmazonpaymentservices.normalPay(requestParam, EnvironmentType.sandbox, isShowResponsePage: false).then((value) {
// if (value["status"] == 14) {
// AppToast.showSuccessToast(message: "Payment has been successful");
// } else {
// AppToast.showErrorToast(message: value['response_message']);
// }
// });
// } on PlatformException catch (e) {
// AppToast.showErrorToast(message: e.message);
// return;
// }
}
4 years ago
readQRCode() async {
2 years ago
pharmacyLiveCareQRCode = (await BarcodeScanner.scan()).rawContent;
print(pharmacyLiveCareQRCode);
4 years ago
GifLoaderDialogUtils.showMyDialog(context);
LiveCareService service = new LiveCareService();
service.getPatientInfoByQR(pharmacyLiveCareQRCode, context).then((res) {
4 years ago
GifLoaderDialogUtils.hideDialog(context);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err);
3 years ago
Navigator.pop(context);
startPharmacyLiveCareProcess();
4 years ago
});
}
3 years ago
startPharmacyLiveCareProcess() {
sharedPref.setString(LIVECARE_CLINIC_DATA, "Pharmacy LiveCare" + "-" + "501" + "-" + "7");
3 years ago
Navigator.push(
context,
FadePage(
page: LiveCareHome(
isPharmacyLiveCare: true,
pharmacyLiveCareQRCode: pharmacyLiveCareQRCode,
)));
3 years ago
}
drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName);
}
6 years ago
checkUserData() async {
6 years ago
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE));
var data2 = AuthenticatedUser.fromJson(await this.sharedPref.getObject(MAIN_USER));
6 years ago
setState(() {
this.user = data;
this.mainUser = data2;
6 years ago
});
}
4 years ago
notificationCount = await sharedPref.getString(NOTIFICATION_COUNT);
6 years ago
}
logout() async {
4 years ago
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: TranslationBase.of(context).signoutMessage,
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () async {
authenticatedUserObject.logout();
2 years ago
projectProvider!.isLogin = false;
4 years ago
await authenticatedUserObject.getUser();
_vitalSignService.heightCm = "";
_vitalSignService.weightKg = "";
await _privilegeService.getPrivilege();
2 years ago
projectProvider!.setPrivilegeModelList(privilege: _privilegeService.privilegeModelList);
projectProvider!.setIsPatientAdmitted(false);
projectProvider!.setPatientHasAdmissionRequest(false);
projectProvider!.setInPatientProjectID(0);
4 years ago
var appLanguage = await sharedPref.getString(APP_LANGUAGE);
await sharedPref.clear();
await sharedPref.setString(APP_LANGUAGE, appLanguage);
await sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL);
projectProvider!.setIsAllAppointmentsLoaded(false);
4 years ago
this.user = null;
Navigator.of(context).pushNamed(HOME);
4 years ago
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('logout');
4 years ago
},
cancelFunction: () => {});
dialog.showAlertDialog(context);
6 years ago
}
6 years ago
login() async {
var data = await sharedPref.getObject(IMEI_USER_DATA);
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN);
6 years ago
if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
GifLoaderDialogUtils.showMyDialog(context);
Merge branch 'development_v3.3' of http://34.17.52.79/Haroon6138/diplomatic-quarter into dev_v3.13.6 # Conflicts: # lib/config/config.dart # lib/core/model/labs/patient_lab_orders.dart # lib/core/model/labs/request_patient_lab_special_result.dart # lib/core/model/labs/request_send_lab_report_email.dart # lib/core/model/radiology/final_radiology.dart # lib/core/model/radiology/request_send_rad_report_email.dart # lib/core/model/rate/appoitment_rated.dart # lib/core/service/client/base_app_client.dart # lib/core/service/medical/labs_service.dart # lib/core/service/medical/radiology_service.dart # lib/core/viewModels/medical/labs_view_model.dart # lib/core/viewModels/medical/radiology_view_model.dart # lib/models/Authentication/check_activation_code_request.dart # lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart # lib/pages/BookAppointment/BookSuccess.dart # lib/pages/BookAppointment/QRCode.dart # lib/pages/DrawerPages/family/my-family.dart # lib/pages/DrawerPages/notifications/notification_details_page.dart # lib/pages/MyAppointments/AppointmentDetails.dart # lib/pages/MyAppointments/MyAppointments.dart # lib/pages/MyAppointments/widgets/AppointmentActions.dart # lib/pages/ToDoList/ToDo.dart # lib/pages/landing/landing_page.dart # lib/pages/livecare/widgets/clinic_list.dart # lib/pages/login/confirm-login.dart # lib/pages/login/login.dart # lib/pages/medical/labs/laboratory_result_page.dart # lib/pages/medical/radiology/radiology_details_page.dart # lib/services/authentication/auth_provider.dart # lib/splashPage.dart # lib/uitl/push-notification-handler.dart # lib/widgets/drawer/app_drawer_widget.dart
2 years ago
authService.selectDeviceImei(DEVICE_TOKEN).then((SelectDeviceIMEIRES? value) {
GifLoaderDialogUtils.hideDialog(context);
if (value != null) {
setUserValues(value);
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
});
6 years ago
}
locator<GAnalytics>().loginRegistration.login_register_initiate();
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('login');
6 years ago
}
Merge branch 'development_v3.3' of http://34.17.52.79/Haroon6138/diplomatic-quarter into dev_v3.13.6 # Conflicts: # lib/config/config.dart # lib/core/model/labs/patient_lab_orders.dart # lib/core/model/labs/request_patient_lab_special_result.dart # lib/core/model/labs/request_send_lab_report_email.dart # lib/core/model/radiology/final_radiology.dart # lib/core/model/radiology/request_send_rad_report_email.dart # lib/core/model/rate/appoitment_rated.dart # lib/core/service/client/base_app_client.dart # lib/core/service/medical/labs_service.dart # lib/core/service/medical/radiology_service.dart # lib/core/viewModels/medical/labs_view_model.dart # lib/core/viewModels/medical/radiology_view_model.dart # lib/models/Authentication/check_activation_code_request.dart # lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart # lib/pages/BookAppointment/BookSuccess.dart # lib/pages/BookAppointment/QRCode.dart # lib/pages/DrawerPages/family/my-family.dart # lib/pages/DrawerPages/notifications/notification_details_page.dart # lib/pages/MyAppointments/AppointmentDetails.dart # lib/pages/MyAppointments/MyAppointments.dart # lib/pages/MyAppointments/widgets/AppointmentActions.dart # lib/pages/ToDoList/ToDo.dart # lib/pages/landing/landing_page.dart # lib/pages/livecare/widgets/clinic_list.dart # lib/pages/login/confirm-login.dart # lib/pages/login/login.dart # lib/pages/medical/labs/laboratory_result_page.dart # lib/pages/medical/radiology/radiology_details_page.dart # lib/services/authentication/auth_provider.dart # lib/splashPage.dart # lib/uitl/push-notification-handler.dart # lib/widgets/drawer/app_drawer_widget.dart
2 years ago
Future<GetAllSharedRecordsByStatusResponse?> getFamilyFiles() async {
5 years ago
if (user != null) {
if (await sharedPref.getObject(FAMILY_FILE) != null) {
// print(await sharedPref.getObject(FAMILY_FILE));
return Future.value(GetAllSharedRecordsByStatusResponse.fromJson(await sharedPref.getObject(FAMILY_FILE)));
5 years ago
} else {
int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
return familyFileProvider.getSharedRecordByStatus(languageID);
5 years ago
}
}
}
switchUser(user, context) {
int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
GifLoaderDialogUtils.showMyDialog(context);
sharedPref.remove(BLOOD_TYPE);
this.familyFileProvider.silentLoggin(user is AuthenticatedUser ? null : user, languageID, mainUser: user is AuthenticatedUser).then((value) {
4 years ago
// GifLoaderDialogUtils.hideDialog(context);
// Navigator.of(context).pop();
loginAfter(value, context, user is AuthenticatedUser);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('switch to my family account');
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
5 years ago
print(err);
2 years ago
// AppToast.showErrorToast(message: err.toString());
5 years ago
Navigator.of(context).pop();
});
}
checkIfIsInPatient(BuildContext context) {
bool isAdmitted = false;
bool hasAdmissionRequest = false;
GetAdmissionInfoResponseModel getAdmissionInfoResponseModel;
GetAdmissionRequestInfoResponseModel getAdmissionRequestInfoResponseModel;
ClinicListService service = new ClinicListService();
service.checkIfInPatientAPI(context).then((res) {
if (res['MessageStatus'] == 1) {
isAdmitted = res['isAdmitted'];
hasAdmissionRequest = res['hasAdmissionRequests'];
print("IS ADMITTED: $isAdmitted");
print("Has Admission Request: $hasAdmissionRequest");
if (isAdmitted) {
if (res['PatientAdmittedInformation'].length != 0) {
getAdmissionInfoResponseModel = GetAdmissionInfoResponseModel.fromJson(res['PatientAdmittedInformation'][0]);
projectProvider?.setInPatientProjectID(res['PatientAdmittedInformation'][0]['ProjectID']);
projectProvider?.setInPatientAdmissionInfo(getAdmissionInfoResponseModel);
projectProvider?.setIsPatientAdmitted(true);
}
}
if (hasAdmissionRequest) {
if (res['MedicalInstruction'].length != 0) {
getAdmissionRequestInfoResponseModel = GetAdmissionRequestInfoResponseModel.fromJson(res['MedicalInstruction'][0]);
// projectViewModel.setInPatientProjectID(res['MedicalInstruction'][0]['ProjectID']);
projectProvider?.setInPatientProjectID(res['MedicalInstruction'][0]['projectId']);
projectProvider?.setInPatientAdmissionRequest(getAdmissionRequestInfoResponseModel);
projectProvider?.setPatientHasAdmissionRequest(true);
}
}
} else {}
}).catchError((err) {
projectProvider?.setIsPatientAdmitted(false);
projectProvider?.setPatientHasAdmissionRequest(false);
});
}
loginAfter(result, context, isMainUser) async {
Utils.hideProgressDialog();
String APNSToken = "";
Provider.of<ProjectViewModel>(context, listen: false).setPrivilege(privilegeList: result, isLoginChild: !isMainUser);
result = CheckActivationCode.fromJson(result);
var bloodType = await sharedPref.getString(BLOOD_TYPE);
var familyFile = await sharedPref.getObject(FAMILY_FILE);
var currentLang = await sharedPref.getString(APP_LANGUAGE);
var mainUser = await sharedPref.getObject(MAIN_USER);
var loginType = await sharedPref.getInt(LAST_LOGIN);
2 years ago
// this.sharedPref.clear();
5 years ago
if (mainUser["PatientID"] != result.list.patientID) {
result.list.isFamily = true;
} else {
result.list.isFamily = false;
}
5 years ago
// result.list.cRSVerificationStatus = result['CRSVerificationStatus'];
2 years ago
await this.sharedPref.setString(APP_LANGUAGE, currentLang);
await this.sharedPref.setString(BLOOD_TYPE, bloodType);
1 year ago
await this.sharedPref.setInt(LAST_LOGIN, loginType ?? 1);
await this.sharedPref.setObject(MAIN_USER, mainUser);
await this.sharedPref.setObject(USER_PROFILE, result.list);
await this.sharedPref.setObject(FAMILY_FILE, familyFile);
await this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID);
await this.sharedPref.setString(TOKEN, result.authenticationTokenID);
2 years ago
5 years ago
// Navigator.of(context).pop();
Provider.of<ProjectViewModel>(context, listen: false).user = result.list;
Provider.of<ProjectViewModel>(context, listen: false).setUser(result.list);
2 years ago
Provider.of<ProjectViewModel>(context, listen: false).authenticatedUserObject.user = result.list;
// await pharmacyModuleViewModel.generatePharmacyToken();
_vitalSignService.heightCm = "";
_vitalSignService.weightKg = "";
4 years ago
// if (pharmacyModuleViewModel.error.isNotEmpty) await pharmacyModuleViewModel.createUser();
int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
await this.sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL);
checkIfIsInPatient(context);
5 years ago
appointmentRateViewModel
.getIsLastAppointmentRatedList(languageID)
5 years ago
.then((value) => {
4 years ago
getToDoCount(),
5 years ago
//Utils.hideProgressDialog(),
5 years ago
if (appointmentRateViewModel.isHaveAppointmentNotRate)
{
Navigator.pushAndRemoveUntil(
context,
FadePage(
page: RateAppointmentDoctor(),
),
(r) => false)
}
else
{
Navigator.pushAndRemoveUntil(
context,
FadePage(
page: LandingPage(),
),
(r) => false)
}
})
.catchError((err) {
print(err);
5 years ago
//Utils.hideProgressDialog();
5 years ago
// GifLoaderDialogUtils.hideDialog(context);
});
}
4 years ago
openAppReviewDialog() async {
if (await _inAppReview.isAvailable()) {
_inAppReview.requestReview();
}
}
void setUserValues(value) async {
if (value != null) sharedPref.setObject(IMEI_USER_DATA, value);
}
4 years ago
getToDoCount() {
toDoProvider!.setState(0, 0, true, toDoProvider!.notificationsCount);
4 years ago
ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1 && res['AppointmentActiveNumber'] != null) {
2 years ago
// toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
toDoProvider!.setState(res['AppointmentActiveNumber'], res['AncillaryOrderListCount'], true, toDoProvider!.notificationsCount);
4 years ago
} else {}
}).catchError((err) {
print(err);
});
}
}