From 952e106531cbaa76f0b15957b33d12d6eaac1b21 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Wed, 6 Jan 2021 14:29:25 +0200 Subject: [PATCH] return privilege --- .../all_habib_medical_service_page.dart | 10 +++++++- lib/pages/DrawerPages/family/my-family.dart | 1 + lib/pages/landing/landing_page.dart | 16 ++++--------- lib/pages/login/confirm-login.dart | 3 ++- lib/pages/login/login.dart | 2 +- lib/pages/medical/eye/ContactLensPage.dart | 4 ++++ .../prescription_items_page.dart | 5 +++- .../radiology/radiology_details_page.dart | 12 +++++++--- .../medical/reports/report_home_page.dart | 7 ++++-- lib/pages/paymentService/payment_service.dart | 2 ++ lib/pages/vaccine/my_vaccines_screen.dart | 4 ++++ lib/splashPage.dart | 23 ++++++++++++------- .../bottom_navigation/bottom_nav_bar.dart | 7 ++++-- .../data_display/medical/doctor_card.dart | 2 +- lib/widgets/drawer/app_drawer_widget.dart | 10 +++++--- 15 files changed, 73 insertions(+), 35 deletions(-) diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart index bc7584cd..1359ab8d 100644 --- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart +++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/weather_service.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/%E2%80%8B%20health_calculators.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/e_referral_index_page.dart'; @@ -33,6 +34,7 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class AllHabibMedicalService extends StatefulWidget { @@ -66,6 +68,7 @@ class _AllHabibMedicalServiceState extends State { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( isShowAppBar: true, appBarTitle: TranslationBase.of(context).alhabiServices, @@ -258,6 +261,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/new-design/family_menu_icon_red.png', title: 'My Family', ), + if(projectViewModel.havePrivilege(35)) ServicesContainer( onTap: () => Navigator.push( context, @@ -278,6 +282,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/new-design/upcoming_icon_bottom_bar.png', title: TranslationBase.of(context).todoList, ), + if(projectViewModel.havePrivilege(42)) ServicesContainer( onTap: () => Navigator.push( context, @@ -285,7 +290,8 @@ class _AllHabibMedicalServiceState extends State { ), imageLocation: 'assets/images/new-design/body_icon.png', title: 'Symptom Checker'), - ServicesContainer( + if(projectViewModel.havePrivilege(36)) + ServicesContainer( onTap: () => Navigator.push( context, FadePage(page: BloodDonationPage()), @@ -315,6 +321,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/new-design/health_convertor_icon.png', title: 'Health Converter', ), + if(projectViewModel.havePrivilege(38)) ServicesContainer( onTap: () => Navigator.push( context, @@ -325,6 +332,7 @@ class _AllHabibMedicalServiceState extends State { imageLocation: 'assets/images/new-design/water_icon.png', title: 'H2O', ), + if(projectViewModel.havePrivilege(41)) ServicesContainer( onTap: () => Navigator.push( context, diff --git a/lib/pages/DrawerPages/family/my-family.dart b/lib/pages/DrawerPages/family/my-family.dart index 84ecb516..d1c0af58 100644 --- a/lib/pages/DrawerPages/family/my-family.dart +++ b/lib/pages/DrawerPages/family/my-family.dart @@ -708,6 +708,7 @@ class _MyFamily extends State with TickerProviderStateMixin { loginAfter(result, context) async { //GifLoaderDialogUtils.hideDialog(context); + Provider.of(context, listen: false).setPrivilege(privilegeList: result,isLoginChild: true); var currentLang = await sharedPref.getString(APP_LANGUAGE); result = list.CheckActivationCode.fromJson(result); var familyFile = await sharedPref.getObject(FAMILY_FILE); diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index 8c8f17fb..e1dd6b63 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -612,21 +612,13 @@ class _LandingPageState extends State with WidgetsBindingObserver { getText(currentTab) { switch (currentTab) { case 0: - return TranslationBase - .of(context) - .home; + return TranslationBase.of(context).home; case 1: - return TranslationBase - .of(context) - .medicalProfile; + return TranslationBase.of(context).medicalProfile; case 2: - return TranslationBase - .of(context) - .mySchedule; + return TranslationBase.of(context).bookAppo; case 3: - return TranslationBase - .of(context) - .services; + return TranslationBase.of(context).services; case 4: return TranslationBase .of(context) diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 8dbf27f4..646158db 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -510,7 +510,8 @@ class _ConfirmLogin extends State { .then((result) => { if (result is Map) { - result = CheckActivationCode.fromJson(result), + projectViewModel.setPrivilege(privilegeList: result), + result = CheckActivationCode.fromJson(result), if (this.registerd_data != null && this.registerd_data.isRegister == true) { diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index 97884596..c2a943d2 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -243,7 +243,7 @@ class _Login extends State { sharedPref.remove(FAMILY_FILE); // Register GeoZones after login registerGeoZones(); - + projectViewModel.setPrivilege(privilegeList: result); result = CheckActivationCode.fromJson(result); result.list.isFamily = false; // this.sharedPref.setString(BLOOD_TYPE, result['PatientBloodType']), diff --git a/lib/pages/medical/eye/ContactLensPage.dart b/lib/pages/medical/eye/ContactLensPage.dart index 26503c89..373c3c79 100644 --- a/lib/pages/medical/eye/ContactLensPage.dart +++ b/lib/pages/medical/eye/ContactLensPage.dart @@ -1,10 +1,12 @@ import 'package:diplomaticquarterapp/core/model/eye/AppoimentAllHistoryResult.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class ContactLensPage extends StatelessWidget { final ListHISGetContactLensPerscription listHISGetContactLensPerscription; @@ -14,6 +16,7 @@ class ContactLensPage extends StatelessWidget { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( body: SingleChildScrollView( child: Container( @@ -82,6 +85,7 @@ class ContactLensPage extends StatelessWidget { SizedBox( height: 17, ), + if(projectViewModel.havePrivilege(15)) Container( width: double.infinity, child: SecondaryButton( diff --git a/lib/pages/medical/prescriptions/prescription_items_page.dart b/lib/pages/medical/prescriptions/prescription_items_page.dart index 62fb1c64..6fb07f68 100644 --- a/lib/pages/medical/prescriptions/prescription_items_page.dart +++ b/lib/pages/medical/prescriptions/prescription_items_page.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -11,7 +12,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - +import 'package:provider/provider.dart'; import '../../../widgets/dialogs/confirm_send_email_dialog.dart'; class PrescriptionItemsPage extends StatelessWidget { @@ -21,6 +22,7 @@ class PrescriptionItemsPage extends StatelessWidget { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => model.getPrescriptionReport(prescriptions: prescriptions), @@ -184,6 +186,7 @@ class PrescriptionItemsPage extends StatelessWidget { child: Column( children: [ Divider(), + if(projectViewModel.havePrivilege(13)) Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( diff --git a/lib/pages/medical/radiology/radiology_details_page.dart b/lib/pages/medical/radiology/radiology_details_page.dart index f3f08cce..742e3ddf 100644 --- a/lib/pages/medical/radiology/radiology_details_page.dart +++ b/lib/pages/medical/radiology/radiology_details_page.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/radiology_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; @@ -10,6 +11,7 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.d import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class RadiologyDetailsPage extends StatelessWidget { @@ -19,6 +21,7 @@ class RadiologyDetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => model.getRadImageURL( projectId: finalRadiology.projectID, @@ -51,7 +54,9 @@ class RadiologyDetailsPage extends StatelessWidget { ], ), ), - bottomSheet: Container( + bottomSheet: (projectViewModel.havePrivilege(9) || + projectViewModel.havePrivilege(8)) + ? Container( width: double.infinity, height: finalRadiology.dIAPACSURL != "" ? MediaQuery.of(context).size.height * 0.25 @@ -61,7 +66,7 @@ class RadiologyDetailsPage extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Divider(), - if (finalRadiology.dIAPACSURL != "") + if (finalRadiology.dIAPACSURL != "" && projectViewModel.havePrivilege(9)) Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( @@ -72,6 +77,7 @@ class RadiologyDetailsPage extends StatelessWidget { backgroundColor: Colors.grey[800], ), ), + if (projectViewModel.havePrivilege(8)) Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( @@ -86,7 +92,7 @@ class RadiologyDetailsPage extends StatelessWidget { ) ], ), - )), + ):Container()), ); } diff --git a/lib/pages/medical/reports/report_home_page.dart b/lib/pages/medical/reports/report_home_page.dart index 7a367a32..c57dd3e9 100644 --- a/lib/pages/medical/reports/report_home_page.dart +++ b/lib/pages/medical/reports/report_home_page.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/reports_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_list_widget.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/reports_page.dart'; @@ -12,6 +13,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class HomeReportPage extends StatefulWidget { @override @@ -37,6 +39,7 @@ class _HomeReportPageState extends State @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); imagesInfo.add(ImagesInfo( imageEn: 'https://hmgwebservices.com/Images/MobileAppDq/imges-info/medical-reorts/en/0.png', @@ -169,7 +172,7 @@ class _HomeReportPageState extends State ) ], ), - bottomSheet: Container( + bottomSheet: projectViewModel.havePrivilege(21) ?Container( width: double.infinity, height: 90, margin: EdgeInsets.all(8.0), @@ -183,7 +186,7 @@ class _HomeReportPageState extends State ), ), ), - ), + ):null, ), ), ); diff --git a/lib/pages/paymentService/payment_service.dart b/lib/pages/paymentService/payment_service.dart index 415e05d0..c3a19917 100644 --- a/lib/pages/paymentService/payment_service.dart +++ b/lib/pages/paymentService/payment_service.dart @@ -74,6 +74,7 @@ class PaymentService extends StatelessWidget { ), ), ), + if(!projectViewModel.havePrivilege(33)) Expanded( child: InkWell( onTap: () => navigateToToDoPage(context), @@ -116,6 +117,7 @@ class PaymentService extends StatelessWidget { ) ], ), + if(!projectViewModel.havePrivilege(33)) Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/vaccine/my_vaccines_screen.dart b/lib/pages/vaccine/my_vaccines_screen.dart index 02d67cac..3e81c41c 100644 --- a/lib/pages/vaccine/my_vaccines_screen.dart +++ b/lib/pages/vaccine/my_vaccines_screen.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; @@ -6,6 +7,7 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; import '../base/base_view.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/core/viewModels/vaccine_view_model.dart'; @@ -22,6 +24,7 @@ class MyVaccines extends StatefulWidget { class _MyVaccinesState extends State { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => model.getVaccine(), builder: (BuildContext context, VaccineViewModel model, Widget child) => @@ -171,6 +174,7 @@ class _MyVaccinesState extends State { Navigator.push(context, FadePage(page: MyVaccinesItemPage())), ), ), + if(projectViewModel.havePrivilege(27)) Container( width: double.infinity, // height: 80.0, diff --git a/lib/splashPage.dart b/lib/splashPage.dart index 8d69c330..20da2ba6 100644 --- a/lib/splashPage.dart +++ b/lib/splashPage.dart @@ -9,6 +9,7 @@ import 'package:provider/provider.dart'; import 'config/shared_pref_kay.dart'; import 'config/size_config.dart'; import 'core/service/AuthenticatedUserObject.dart'; +import 'core/service/privilege_service.dart'; import 'core/viewModels/project_view_model.dart'; import 'locator.dart'; import 'models/Authentication/authenticated_user.dart'; @@ -24,23 +25,29 @@ class SplashScreen extends StatefulWidget { } class _SplashScreenState extends State { - //Provider.of(context, listen: false).isLogin + PrivilegeService _privilegeService = locator(); @override void initState() { super.initState(); Timer( - Duration(seconds: 1, milliseconds: 800), - () { - Provider.of(context, listen: false).loadSharedPrefLanguage().then((value) { - Navigator.of(context).pushReplacement(FadePage(page: LandingPage())); + Duration(seconds: 1, milliseconds: 500), + () { + loadPrivilege().then((value) { + Navigator.of(context).pushReplacement( + MaterialPageRoute( + builder: (BuildContext context) => LandingPage(), + ), + ); + }); - }); }, ); } - Future getUserData() async { - Provider.of(context, listen: false).loadSharedPrefLanguage(); + /// load the Privilege from service + Future loadPrivilege() async { + await _privilegeService.getPrivilege(); + Provider.of(context, listen: false).setPrivilegeModelList(privilege: _privilegeService.privilegeModelList); } @override diff --git a/lib/widgets/bottom_navigation/bottom_nav_bar.dart b/lib/widgets/bottom_navigation/bottom_nav_bar.dart index 01a50757..66a83224 100644 --- a/lib/widgets/bottom_navigation/bottom_nav_bar.dart +++ b/lib/widgets/bottom_navigation/bottom_nav_bar.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; @@ -49,6 +50,7 @@ class _BottomNavBarState extends State { @override Widget build(BuildContext context) { model = Provider.of(context); + ProjectViewModel projectViewModel = Provider.of(context); return BottomAppBar( elevation: 4, shape: CircularNotchedRectangle(), @@ -75,7 +77,7 @@ class _BottomNavBarState extends State { currentIndex: 1, name: TranslationBase.of(context).medicalProfile, ), - if(widget.index == 0) + if(widget.index == 0 && projectViewModel.havePrivilege(34)) Expanded( child: SizedBox( height: 50, @@ -88,7 +90,7 @@ class _BottomNavBarState extends State { ), ), ), - if(widget.index != 0) + if(widget.index != 0 && projectViewModel.havePrivilege(34)) BottomNavigationItem( icon: EvaIcons.calendar, activeIcon: EvaIcons.calendar, @@ -106,6 +108,7 @@ class _BottomNavBarState extends State { currentIndex: 3, name: TranslationBase.of(context).myFamily, ), + if(projectViewModel.havePrivilege(51)) BottomNavigationItem( icon: EvaIcons.calendar, activeIcon: EvaIcons.calendar, diff --git a/lib/widgets/data_display/medical/doctor_card.dart b/lib/widgets/data_display/medical/doctor_card.dart index 0e0b27ae..23e754fb 100644 --- a/lib/widgets/data_display/medical/doctor_card.dart +++ b/lib/widgets/data_display/medical/doctor_card.dart @@ -151,7 +151,7 @@ class DoctorCard extends StatelessWidget { ), ), ), - if (onEmailTap != null) + if (onEmailTap != null && projectViewModel.havePrivilege(17)) InkWell( onTap: onEmailTap, child: Icon( diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index fcc06c24..332db82e 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -155,8 +155,8 @@ class _AppDrawerState extends State { ? Column( mainAxisAlignment: MainAxisAlignment.start, children: [ - user.isFamily == null || - user.isFamily == false + (user.isFamily == null || + user.isFamily == false)&& projectProvider.havePrivilege(2) ? InkWell( child: DrawerItem( TranslationBase.of(context).family, @@ -292,7 +292,9 @@ class _AppDrawerState extends State { } }, ), - InkWell( + if(projectProvider.havePrivilege(1)) + + InkWell( child: DrawerItem( TranslationBase.of(context) .arabicChange, @@ -353,6 +355,7 @@ class _AppDrawerState extends State { NotificationsPage())); }, ), + if(projectProvider.havePrivilege(3)) InkWell( child: DrawerItem( TranslationBase.of(context).appsetting, @@ -567,6 +570,7 @@ class _AppDrawerState extends State { loginAfter(result, context) async { result = CheckActivationCode.fromJson(result); + Provider.of(context, listen: false).setPrivilege(privilegeList: result,isLoginChild: true); var familyFile = await sharedPref.getObject(FAMILY_FILE); var currentLang = await sharedPref.getString(APP_LANGUAGE); var mainUser = await sharedPref.getObject(MAIN_USER);