From 0098345d05a84b41a18cc49c2989a11380ea657a Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 15 Feb 2021 14:40:44 +0200 Subject: [PATCH 1/2] add Prescription Delivery Address Page amd fix the Authentication Pharmacy --- assets/images/pharmacy/shipping_image.png | Bin 0 -> 9300 bytes assets/images/pharmacy/shipping_image_ar.png | Bin 0 -> 8829 bytes .../customer_addresses_service.dart | 12 +-- lib/core/service/client/base_app_client.dart | 20 ++-- lib/pages/medical/medical_profile_page.dart | 2 +- .../PrescriptionIDeliveryAddressPage.dart | 99 ++++++++++++++++++ .../prescription_items_page.dart | 22 +++- lib/uitl/utils.dart | 47 ++++----- .../medical/medical_profile_item.dart | 51 ++++----- pubspec.yaml | 1 + 10 files changed, 180 insertions(+), 74 deletions(-) create mode 100644 assets/images/pharmacy/shipping_image.png create mode 100644 assets/images/pharmacy/shipping_image_ar.png create mode 100644 lib/pages/medical/prescriptions/PrescriptionIDeliveryAddressPage.dart diff --git a/assets/images/pharmacy/shipping_image.png b/assets/images/pharmacy/shipping_image.png new file mode 100644 index 0000000000000000000000000000000000000000..ba16e92c6eca69ec228c3164f13332cdf2ad4d40 GIT binary patch literal 9300 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 literal 0 HcmV?d00001 diff --git a/assets/images/pharmacy/shipping_image_ar.png b/assets/images/pharmacy/shipping_image_ar.png new file mode 100644 index 0000000000000000000000000000000000000000..cb623a62461af6e10689eefd81f67934c0295b1b GIT binary patch literal 8829 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 { childAspectRatio: MediaQuery.of(context) .size .width / - (MediaQuery.of(context).size.height / 2.40), + (MediaQuery.of(context).size.height / 2.20), ), itemCount: myMedicalList.length, itemBuilder: (BuildContext context, int index) { diff --git a/lib/pages/medical/prescriptions/PrescriptionIDeliveryAddressPage.dart b/lib/pages/medical/prescriptions/PrescriptionIDeliveryAddressPage.dart new file mode 100644 index 00000000..b33246de --- /dev/null +++ b/lib/pages/medical/prescriptions/PrescriptionIDeliveryAddressPage.dart @@ -0,0 +1,99 @@ +import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.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/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'; +import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart'; + +class PrescriptionDeliveryAddressPage extends StatelessWidget { + final Prescriptions prescriptions; + + const PrescriptionDeliveryAddressPage({Key key, this.prescriptions}) + : super(key: key); + + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + + return AppScaffold( + isShowAppBar: true, + appBarTitle: 'Delivery Address', + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 15, + ), + InkWell( + onTap: () {}, + child: Container( + margin: EdgeInsets.only(left: 10, right: 10, top: 15), + height: 50, + decoration: BoxDecoration( + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(7), + color: Colors.white, + shape: BoxShape.rectangle, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + child: Texts( + 'Selected Address', + variant: 'bodyText', + ), + margin: EdgeInsets.only(left: 10, right: 10), + ), + Icon( + Icons.arrow_drop_down, + size: 22, + color: Colors.grey, + ) + ], + ), + ), + ), + SizedBox( + height: 15, + ), + Container( + + child: Image.asset(projectViewModel.isArabic + ? 'assets/images/pharmacy/shipping_image_ar.png' + : 'assets/images/pharmacy/shipping_image.png',height: 300,), + ) + ], + ), + ), + bottomSheet: Container( + width: double.infinity, + height: MediaQuery.of(context).size.height * 0.25, + color: Colors.grey[100], + child: Column( + children: [ + Divider(), + Container( + width: MediaQuery.of(context).size.width * 0.8, + child: Button( + label: 'Add New Address'.toUpperCase(), + onTap: () {}, + ), + ), + Container( + width: MediaQuery.of(context).size.width * 0.8, + child: Button( + label: 'Continue'.toUpperCase(), + backgroundColor: Colors.green[200], + onTap: () {}, + )) + ], + ), + )); + } +} diff --git a/lib/pages/medical/prescriptions/prescription_items_page.dart b/lib/pages/medical/prescriptions/prescription_items_page.dart index 6fb07f68..864bdca2 100644 --- a/lib/pages/medical/prescriptions/prescription_items_page.dart +++ b/lib/pages/medical/prescriptions/prescription_items_page.dart @@ -7,6 +7,7 @@ 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'; import 'package:diplomaticquarterapp/widgets/buttons/button.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:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -14,12 +15,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../widgets/dialogs/confirm_send_email_dialog.dart'; +import 'PrescriptionIDeliveryAddressPage.dart'; class PrescriptionItemsPage extends StatelessWidget { final Prescriptions prescriptions; PrescriptionItemsPage({Key key, this.prescriptions}); - + //TODO @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); @@ -181,7 +183,7 @@ class PrescriptionItemsPage extends StatelessWidget { ), bottomSheet: Container( width: double.infinity, - height: MediaQuery.of(context).size.height * 0.14, + height: MediaQuery.of(context).size.height * 0.25, color: Colors.grey[100], child: Column( children: [ @@ -197,12 +199,22 @@ class PrescriptionItemsPage extends StatelessWidget { loading: model.state == ViewState.BusyLocal, ), ), - if (false) Container( width: MediaQuery.of(context).size.width * 0.8, - child: Button( + child: SecondaryButton( label: TranslationBase.of(context).resendOrder, - backgroundColor: Colors.green[200], + color: Colors.green[200], + onTap: (){ + var asd=""; + Navigator.push( + context, + FadePage( + page: PrescriptionDeliveryAddressPage( + prescriptions: prescriptions, + ), + ), + ); + }, )) ], ), diff --git a/lib/uitl/utils.dart b/lib/uitl/utils.dart index b2c52b2b..85e97429 100644 --- a/lib/uitl/utils.dart +++ b/lib/uitl/utils.dart @@ -206,33 +206,30 @@ class Utils { ); }, child: isLogin - ? Container( - height: 120, - child: Stack(children: [ - MedicalProfileItem( - title: TranslationBase.of(context).myAppointments, - imagePath: 'my_appointment_icon.png', - subTitle: TranslationBase.of(context).myAppointmentsList, - hasBadge: true, - ), - Positioned( - right: 0.0, - child: Badge( - toAnimate: false, - position: BadgePosition.topEnd(), - shape: BadgeShape.circle, - badgeColor: secondaryColor.withOpacity(1.0), - borderRadius: BorderRadius.circular(8), - badgeContent: Container( - padding: EdgeInsets.all(2.0), - child: Text(count.toString(), - style: - TextStyle(color: Colors.white, fontSize: 16.0)), - ), + ? Stack(children: [ + MedicalProfileItem( + title: TranslationBase.of(context).myAppointments, + imagePath: 'my_appointment_icon.png', + subTitle: TranslationBase.of(context).myAppointmentsList, + hasBadge: true, + ), + Positioned( + right: 0.0, + child: Badge( + toAnimate: false, + position: BadgePosition.topEnd(), + shape: BadgeShape.circle, + badgeColor: secondaryColor.withOpacity(1.0), + borderRadius: BorderRadius.circular(8), + badgeContent: Container( + padding: EdgeInsets.all(2.0), + child: Text(count.toString(), + style: + TextStyle(color: Colors.white, fontSize: 16.0)), ), ), - ]), - ) + ), + ]) : MedicalProfileItem( title: TranslationBase.of(context).myAppointments, imagePath: 'my_appointment_icon.png', diff --git a/lib/widgets/data_display/medical/medical_profile_item.dart b/lib/widgets/data_display/medical/medical_profile_item.dart index 1751e0e5..15a08218 100644 --- a/lib/widgets/data_display/medical/medical_profile_item.dart +++ b/lib/widgets/data_display/medical/medical_profile_item.dart @@ -22,31 +22,32 @@ class MedicalProfileItem extends StatelessWidget { @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); - return RoundedContainer( - showBorder: true, - borderWidth: 0, - margin: 4, - child: Container( - padding: EdgeInsets.all(10), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts(title, - fontSize: 1.5 * SizeConfig.textMultiplier, - color: secondaryColor, - fontWeight: FontWeight.bold), - Texts(subTitle,fontSize: 1.4 * SizeConfig.textMultiplier,), - Align( - alignment:projectViewModel.isArabic ? Alignment.bottomLeft : Alignment.bottomRight, - child: Image.asset( - "assets/images/medical/$imagePath", - height: SizeConfig.heightMultiplier * 5, - width: SizeConfig.heightMultiplier * 5, - ), - ) - ], - ), + return Container( + height: 180, + margin: EdgeInsets.all(5), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white + ), + padding: EdgeInsets.all(10), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts(title, + fontSize: 1.5 * SizeConfig.textMultiplier, + color: secondaryColor, + fontWeight: FontWeight.bold), + Texts(subTitle,fontSize: 1.4 * SizeConfig.textMultiplier,), + Align( + alignment:projectViewModel.isArabic ? Alignment.bottomLeft : Alignment.bottomRight, + child: Image.asset( + "assets/images/medical/$imagePath", + height: SizeConfig.heightMultiplier * 5, + width: SizeConfig.heightMultiplier * 5, + ), + ) + ], ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index b891a671..2c07d0c9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,6 +49,7 @@ dependencies: shared_preferences: ^0.5.8 flutter_flexible_toast: ^0.1.4 firebase_messaging: ^7.0.3 + cloud_firestore: ^0.14.3 android_intent: ^0.3.7+7 # Progress bar progress_hud_v2: ^2.0.0 From 0632af3fb56992f869b949859f8cd17e8eb91178 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 15 Feb 2021 14:56:25 +0200 Subject: [PATCH 2/2] Fix the Authentication Pharmacy --- lib/core/service/client/base_app_client.dart | 24 ++++++++++------- .../PrescriptionDeliveryViewModel.dart | 26 +++++++++++++++++++ lib/locator.dart | 2 ++ 3 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 lib/core/viewModels/PrescriptionDeliveryViewModel.dart diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index c7405608..429303bd 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -46,7 +46,10 @@ class BaseAppClient { //Map profile = await sharedPref.getObj(DOCTOR_PROFILE); var pharmacyToken = await sharedPref.getString(PHARMACY_AUTORZIE_TOKEN); var user = await sharedPref.getObject(USER_PROFILE); - + Map headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }; if (!isExternal) { String token = await sharedPref.getString(TOKEN); var languageID = @@ -104,7 +107,15 @@ class BaseAppClient { ? body['PatientID'] : user['PatientID']; body['PatientOutSA'] = user['OutSA']; - body['SessionID'] = SESSION_ID; //getSessionId(token); + body['SessionID'] = SESSION_ID; //getSe + headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': pharmacyToken, + 'Mobilenumber': user['MobileNumber'].toString(), + 'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9', + 'Username': user['PatientID'].toString(), + }; } } } @@ -115,14 +126,7 @@ class BaseAppClient { if (await Utils.checkConnection()) { final response = await http.post(url.trim(), body: json.encode(body), - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': pharmacyToken, - 'Mobilenumber': user['MobileNumber'].toString(), - 'Statictoken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9', - 'Username': user['PatientID'].toString(), - }); + headers: headers); final int statusCode = response.statusCode; print("statusCode :$statusCode"); if (statusCode < 200 || statusCode >= 400 || json == null) { diff --git a/lib/core/viewModels/PrescriptionDeliveryViewModel.dart b/lib/core/viewModels/PrescriptionDeliveryViewModel.dart new file mode 100644 index 00000000..e9731bae --- /dev/null +++ b/lib/core/viewModels/PrescriptionDeliveryViewModel.dart @@ -0,0 +1,26 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart'; +import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; + +import '../../locator.dart'; + +class PrescriptionDeliveryViewModel extends BaseViewModel{ + + CustomerAddressesService _customerAddressesService = locator(); + + List get addressesList => _customerAddressesService.addressesList; + + Future getCustomerAddresses() async { + setState(ViewState.Busy); + await _customerAddressesService.getCustomerAddresses( + ); + if (_customerAddressesService.hasError) { + error = _customerAddressesService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } + } + + +} \ No newline at end of file diff --git a/lib/locator.dart b/lib/locator.dart index 0dfca5af..4d7f1e50 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -69,6 +69,7 @@ import 'core/service/parmacyModule/parmacy_module_service.dart'; import 'core/service/offers_service.dart'; import 'core/service/pharmacy_categorise_service.dart'; import 'core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart'; +import 'core/viewModels/PrescriptionDeliveryViewModel.dart'; import 'core/viewModels/TermsConditionsViewModel.dart'; import 'core/viewModels/all_habib_medical_services/e_referral_view_model.dart'; import 'core/viewModels/appointment_rate_view_model.dart'; @@ -255,6 +256,7 @@ void setupLocator() { locator.registerFactory(() => EyeViewModel()); locator.registerFactory(() => ActiveMedicationsViewModel()); locator.registerFactory(() => AskDoctorViewModel()); + locator.registerFactory(() => PrescriptionDeliveryViewModel()); locator.registerFactory(() => AllergiesViewModel()); locator.registerFactory(() => HomeHealthCareViewModel());