From 4ac77593adb30e277c696553b1218ad3a331ccb0 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 14 Sep 2020 12:54:05 +0300 Subject: [PATCH] add payment service page and translations --- lib/config/localized_values.dart | 28 +++ lib/pages/landing/home_page.dart | 168 ++++++++++-------- .../medical/balance/advance_payment_page.dart | 31 ++-- .../medical/balance/confirm_payment_page.dart | 17 +- .../balance/dialogs/ConfirmSMSDialog.dart | 12 +- .../dialogs/SelectBeneficiaryDialog.dart | 11 +- .../balance/dialogs/SelectHospitalDialog.dart | 5 +- .../dialogs/SelectPatientFamilyDialog.dart | 5 +- .../dialogs/SelectPatientInfoDialog.dart | 5 +- .../balance/dialogs/show_timer_text.dart | 89 ---------- .../medical/balance/my_balance_page.dart | 9 +- lib/pages/paymentService/payment_service.dart | 151 ++++++++++++++++ lib/uitl/translations_delegate_base.dart | 26 +++ 13 files changed, 345 insertions(+), 212 deletions(-) delete mode 100644 lib/pages/medical/balance/dialogs/show_timer_text.dart create mode 100644 lib/pages/paymentService/payment_service.dart diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 0cb3fa2b..baf3cc69 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -461,4 +461,32 @@ const Map> localizedValues = { "UpdateSuccessfully":{"en":"Update Successfully","ar":"تم التحديث بنجاح"}, "CHECK_VACCINE_AVAILABILITY":{"en":"CHECK VACCINE AVAILABILITY","ar":"تحقق من توافر اللقاح"}, "MyVaccinesAvailability":{"en":"MyVaccinesAvailability","ar":"توفر لقاحي"}, + "PaymentService":{"en":"Payment Service","ar":"خدمة المدفوعات"}, + "PaymentOnline":{"en":"Service","ar":"الالكتروني"}, + "OnlineCheckIn":{"en":"Online Check-In","ar":"مدفوعات معلقة"}, + "MyBalances":{"en":"My Balances","ar":"رصيدي"}, + "BalanceAmount":{"en":"Balance Amount","ar":"رصيدالحساب"}, + "TotalBalance":{"en":"Total Balance","ar":"الرصيد الكلي"}, + "CreateAdvancedPayment":{"en":"Create Advanced Payment","ar":"إنشاء دفعة مقدمة"}, + "AdvancePayment":{"en":"Advance Payment","ar":"الدفع مقدما"}, + "AdvancePaymentLabel":{ + "en":"You can create and add an Advanced Payment for you account or other accounts.", + "ar":"يمكنك تحويل مبلغ لحسابك لدى المجموعة أو لحساب احد المراجعين"}, + "FileNumber":{"en":"File Number","ar":"رقم الملف"}, + "Amount":{"en":"Amount *","ar":"المبلغ *"}, + "DepositorEmail":{"en":"Depositor Email *","ar":"البريد الإلكتروني للمودع *"}, + "Notes":{"en":"Notes","ar":"ملاحظات"}, + "SelectPatientName":{"en":"Select Patient Name","ar":"اختر اسم المريض"}, + "SelectFamilyPatientName":{"en":"Family Members","ar":"أفراد الأسرة"}, + "SelectHospital":{"en":"Select Hospital","ar":"اختر المستشفى"}, + "MyAccount":{"en":"My Account","ar":"حسابي"}, + "OtherAccount":{"en":"Other Account","ar":"حساب آخر"}, + "SelectBeneficiary":{"en":"Select Beneficiary","ar":"حدد المستفيد"}, + "ConfirmThePayment":{"en":"Confirm The Payment","ar":"تأكيد عملية الدفع"}, + "DepositorName":{"en":"Depositor Name","ar":"اسم المودع *"}, + "MobileNumber":{"en":"Mobile Number","ar":"رقم الجوال"}, + "Ok":{"en":"Ok","ar":"حسنا"}, + "TheVerificationCodeExpiresIn":{"en":"The Verification Code Expires In","ar":"تنتهي صلاحية رمز التحقق في"}, + "PleaseEnterTheVerificationCode":{"en":"Please enter the verification code send to","ar":"الرجاء إدخال رمز التحقق المرسل إلى"}, + }; diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index da9d9348..f4692394 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/all_habib_medic import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart'; +import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; @@ -443,52 +444,23 @@ class _HomePageState extends State { SizedBox( height: 8, ), - Container( - margin: EdgeInsets.only(left: 15, right: 15), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Container( - width: MediaQuery.of(context).size.width * 0.29, - child: Center( - child: Padding( - padding: const EdgeInsets.all(15.0), - child: Column( - children: [ - Image.asset( - 'assets/images/al-habib_online_payment_service_icon.png', - height: 55, - ), - SizedBox( - height: 15, - ), - Texts( - TranslationBase.of(context) - .onlinePaymentService, - textAlign: TextAlign.center, - color: Colors.black87, - bold: false, - fontSize: SizeConfig.textMultiplier * 2, - ) - ], - ), - ), - ), - height: MediaQuery.of(context).size.width * 0.4, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6.0), - color: Colors.white, - ), - ), - Container( + InkWell( + onTap: () => Navigator.push( + context, FadePage(page: PaymentService())), + child: Container( + margin: EdgeInsets.only(left: 15, right: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: MediaQuery.of(context).size.width * 0.29, child: Center( child: Padding( padding: const EdgeInsets.all(15.0), child: Column( children: [ Image.asset( - 'assets/images/ereferral_service_icon.png', - width: 50, + 'assets/images/al-habib_online_payment_service_icon.png', height: 55, ), SizedBox( @@ -496,7 +468,7 @@ class _HomePageState extends State { ), Texts( TranslationBase.of(context) - .offersAndPackages, + .onlinePaymentService, textAlign: TextAlign.center, color: Colors.black87, bold: false, @@ -506,49 +478,87 @@ class _HomePageState extends State { ), ), ), - width: MediaQuery.of(context).size.width * 0.29, height: MediaQuery.of(context).size.width * 0.4, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), color: Colors.white, - )), - Container( - width: MediaQuery.of(context).size.width * 0.29, - child: InkWell( - onTap: ()=>Navigator.push(context, - FadePage(page: ErOptions(isAppbar: true,))), - child: Center( - child: Padding( - padding: const EdgeInsets.all(15.0), - child: Column( - children: [ - Image.asset( - 'assets/images/Dr_Schedule_report.png', - width: 50, - height: 50, - ), - SizedBox( - height: 15, - ), - Texts( - TranslationBase.of(context).emergencyServices, - textAlign: TextAlign.center, - color: Colors.black87, - bold: false, - fontSize: SizeConfig.textMultiplier * 2.0, - ) - ], + ), + ), + Container( + child: Center( + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + children: [ + Image.asset( + 'assets/images/ereferral_service_icon.png', + width: 50, + height: 55, + ), + SizedBox( + height: 15, + ), + Texts( + TranslationBase.of(context) + .offersAndPackages, + textAlign: TextAlign.center, + color: Colors.black87, + bold: false, + fontSize: SizeConfig.textMultiplier * 2, + ) + ], + ), + ), + ), + width: MediaQuery.of(context).size.width * 0.29, + height: MediaQuery.of(context).size.width * 0.4, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6.0), + color: Colors.white, + )), + Container( + width: MediaQuery.of(context).size.width * 0.29, + child: InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: ErOptions( + isAppbar: true, + ))), + child: Center( + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + children: [ + Image.asset( + 'assets/images/Dr_Schedule_report.png', + width: 50, + height: 50, + ), + SizedBox( + height: 15, + ), + Texts( + TranslationBase.of(context) + .emergencyServices, + textAlign: TextAlign.center, + color: Colors.black87, + bold: false, + fontSize: SizeConfig.textMultiplier * 2.0, + ) + ], + ), ), ), ), + height: MediaQuery.of(context).size.width * 0.4, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6.0), + color: Colors.white, + ), ), - height: MediaQuery.of(context).size.width * 0.4, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6.0), - color: Colors.white, - ), - ), - ], + ], + ), ), ), SizedBox( @@ -598,9 +608,9 @@ class _HomePageState extends State { context, FadePage(page: AllHabibMedicalService())), ), DashboardItem( - onTap: (){ - Navigator.push(context, FadePage(page: FeedbackHomePage())); - + onTap: () { + Navigator.push( + context, FadePage(page: FeedbackHomePage())); }, child: Container( width: double.infinity, diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart index 14f9b664..2b2aad4f 100644 --- a/lib/pages/medical/balance/advance_payment_page.dart +++ b/lib/pages/medical/balance/advance_payment_page.dart @@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; @@ -53,7 +54,7 @@ class _AdvancePaymentPageState extends State { onModelReady: (model) => model.getHospitals(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Advance Payment', + appBarTitle: TranslationBase.of(context).advancePayment, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( @@ -62,7 +63,7 @@ class _AdvancePaymentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( - 'You can create and add an Advanced Payment for you account or other accounts.', + TranslationBase.of(context).advancePaymentLabel, textAlign: TextAlign.center, ), SizedBox( @@ -121,7 +122,7 @@ class _AdvancePaymentPageState extends State { height: 12, ), NewTextFields( - hintText: 'File Number', + hintText: TranslationBase.of(context).fileNumber, controller: _fileTextController, ), if (beneficiaryType == BeneficiaryType.OtherAccount) @@ -186,7 +187,7 @@ class _AdvancePaymentPageState extends State { height: 12, ), NewTextFields( - hintText: 'Amount*', + hintText: TranslationBase.of(context).amount, keyboardType: TextInputType.number, onChanged: (value) { setState(() { @@ -198,7 +199,7 @@ class _AdvancePaymentPageState extends State { height: 12, ), NewTextFields( - hintText: 'Depositor Email*', + hintText: TranslationBase.of(context).depositorEmail, initialValue: model.user.emailAddress, onChanged: (value) { email = value; @@ -208,7 +209,7 @@ class _AdvancePaymentPageState extends State { height: 12, ), NewTextFields( - hintText: 'Notes', + hintText: TranslationBase.of(context).notes, controller: _notesTextController, ), SizedBox( @@ -224,7 +225,7 @@ class _AdvancePaymentPageState extends State { padding: EdgeInsets.all(12), child: SecondaryButton( textColor: Colors.white, - label: 'Submit', + label: TranslationBase.of(context).submit, disabled: amount.isEmpty || _fileTextController.text.isEmpty || _selectedHospital == null, @@ -341,37 +342,37 @@ class _AdvancePaymentPageState extends State { String getBeneficiaryType() { switch (beneficiaryType) { case BeneficiaryType.MyAccount: - return "My Account"; + return TranslationBase.of(context).myAccount; case BeneficiaryType.MyFamilyFiles: - return "My Family Files"; + return TranslationBase.of(context).myFamilyFiles; break; case BeneficiaryType.OtherAccount: - return "Other Account"; + return TranslationBase.of(context).otherAccount; break; case BeneficiaryType.NON: - return "Select Beneficiary"; + return TranslationBase.of(context).selectBeneficiary; } - return ""; + return TranslationBase.of(context).selectBeneficiary; } String getHospitalName() { if (_selectedHospital != null) return _selectedHospital.name; else - return "Select Hospital"; + return TranslationBase.of(context).selectHospital; } String getPatientName() { if (_selectedPatientInfo != null) return _selectedPatientInfo.fullName; else - return "Select Patient Name"; + return TranslationBase.of(context).selectPatientName; } String getFamilyMembersName() { if (selectedPatientFamily != null) return selectedPatientFamily.patientName; else - return "Select Patient Name"; + return TranslationBase.of(context).selectFamilyPatientName; } } diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart index d865dd2d..c7ce32fa 100644 --- a/lib/pages/medical/balance/confirm_payment_page.dart +++ b/lib/pages/medical/balance/confirm_payment_page.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobi import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.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'; @@ -39,7 +40,7 @@ class ConfirmPaymentPage extends StatelessWidget { return BaseView( builder: (_, model, w) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Advance Payment', + appBarTitle: TranslationBase.of(context).advancePayment, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( @@ -48,7 +49,7 @@ class ConfirmPaymentPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( - 'Confirm the Payment', + TranslationBase.of(context).confirmThePayment, textAlign: TextAlign.center, fontWeight: FontWeight.w500, fontSize: 24, @@ -81,7 +82,7 @@ class ConfirmPaymentPage extends StatelessWidget { child: Container( margin: EdgeInsets.all(3), child: NewTextFields( - hintText: 'File Number', + hintText: TranslationBase.of(context).fileNumber, initialValue: advanceModel.fileNumber, isEnabled: false, ), @@ -91,7 +92,7 @@ class ConfirmPaymentPage extends StatelessWidget { child: Container( margin: EdgeInsets.all(3), child: NewTextFields( - hintText: 'Name', + hintText: TranslationBase.of(context).name, initialValue: patientInfoAndMobileNumber.firstName, isEnabled: false, ), @@ -103,7 +104,7 @@ class ConfirmPaymentPage extends StatelessWidget { height: 12, ), NewTextFields( - hintText: 'Mobile Number', + hintText: TranslationBase.of(context).mobileNumber, initialValue: patientInfoAndMobileNumber.mobileNumber, isEnabled: false, ), @@ -111,7 +112,7 @@ class ConfirmPaymentPage extends StatelessWidget { height: 12, ), NewTextFields( - hintText: 'Depositor Name', + hintText: TranslationBase.of(context).depositorName, initialValue: advanceModel.depositorName, isEnabled: false, ), @@ -119,7 +120,7 @@ class ConfirmPaymentPage extends StatelessWidget { height: 12, ), NewTextFields( - hintText: 'Note', + hintText: TranslationBase.of(context).notes, initialValue: advanceModel.note, isEnabled: false, ), @@ -133,7 +134,7 @@ class ConfirmPaymentPage extends StatelessWidget { padding: EdgeInsets.all(12), child: SecondaryButton( textColor: Colors.white, - label: 'CONFIRM', + label: TranslationBase.of(context).confirm.toUpperCase(), disabled: model.state == ViewState.Busy, onTap: () { model diff --git a/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart b/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart index 7983d204..462cc698 100644 --- a/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart +++ b/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart @@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.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:flutter/cupertino.dart'; @@ -108,7 +109,7 @@ class _ConfirmSMSDialogState extends State { flex: 4, child: Center( child: Texts( - 'SMS', + 'SMS', color: Colors.white, textAlign: TextAlign.center, ))), @@ -139,7 +140,7 @@ class _ConfirmSMSDialogState extends State { Padding( padding: const EdgeInsets.all(8.0), child: Texts( - 'Please enter the Verification code send to [${widget.phoneNumber}]', + TranslationBase.of(context).pleaseEnterTheVerificationCode+'[${widget.phoneNumber}]', textAlign: TextAlign.center, ), ), @@ -289,7 +290,7 @@ class _ConfirmSMSDialogState extends State { Padding( padding: const EdgeInsets.all(8.0), child: Texts( - 'The verification code expires in $timerText', + TranslationBase.of(context).theVerificationCodeExpiresIn+' $timerText', textAlign: TextAlign.center, ), ), @@ -300,7 +301,7 @@ class _ConfirmSMSDialogState extends State { padding: EdgeInsets.all(12), child: SecondaryButton( textColor: Colors.white, - label: 'SUBMIT', + label: TranslationBase.of(context).submit.toUpperCase(), onTap: () { submit(model); }, @@ -332,9 +333,8 @@ class _ConfirmSMSDialogState extends State { String validateCodeDigit(value) { if (value.isEmpty) { - return 'Please enter your Password'; + return ''; } - return null; } diff --git a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart index efd907b7..17bee4b0 100644 --- a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -40,7 +41,7 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: const Text('My Account'), + title: Text(TranslationBase.of(context).myAccount), leading: Radio( value: BeneficiaryType.MyAccount, groupValue: beneficiaryType, @@ -70,7 +71,7 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: const Text('My Family Files'), + title: Text(TranslationBase.of(context).myFamilyFiles), leading: Radio( value: BeneficiaryType.MyFamilyFiles, groupValue: beneficiaryType, @@ -100,7 +101,7 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: const Text('Other Account'), + title: Text(TranslationBase.of(context).otherAccount), leading: Radio( value: BeneficiaryType.OtherAccount, groupValue: beneficiaryType, @@ -133,7 +134,7 @@ class _SelectBeneficiaryDialogState extends State { child: Container( child: Center( child: Texts( - 'CANCEL', + TranslationBase.of(context).cancel.toUpperCase(), color: Colors.red, ), ), @@ -157,7 +158,7 @@ class _SelectBeneficiaryDialogState extends State { padding: const EdgeInsets.all(8.0), child: Center( child: Texts( - 'Ok', + TranslationBase.of(context).ok, fontWeight: FontWeight.w400, ), ), diff --git a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart index 7957c800..9a4a359d 100644 --- a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -88,7 +89,7 @@ class _SelectHospitalDialogState extends State { child: Container( child: Center( child: Texts( - 'CANCEL', + TranslationBase.of(context).cancel.toUpperCase(), color: Colors.red, ), ), @@ -112,7 +113,7 @@ class _SelectHospitalDialogState extends State { padding: const EdgeInsets.all(8.0), child: Center( child: Texts( - 'Ok', + TranslationBase.of(context).ok, fontWeight: FontWeight.w400, )), ), diff --git a/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart b/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart index a21d753a..5808aed8 100644 --- a/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -89,7 +90,7 @@ class _SelectPatientFamilyDialogState extends State { child: Container( child: Center( child: Texts( - 'CANCEL', + TranslationBase.of(context).cancel.toUpperCase(), color: Colors.red, ), ), @@ -113,7 +114,7 @@ class _SelectPatientFamilyDialogState extends State { padding: const EdgeInsets.all(8.0), child: Center( child: Texts( - 'Ok', + TranslationBase.of(context).ok, fontWeight: FontWeight.w400, )), ), diff --git a/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart b/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart index af6c02e1..bea4f694 100644 --- a/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -89,7 +90,7 @@ class _SelectPatientInfoDialogState extends State { child: Container( child: Center( child: Texts( - 'CANCEL', + TranslationBase.of(context).cancel.toUpperCase(), color: Colors.red, ), ), @@ -113,7 +114,7 @@ class _SelectPatientInfoDialogState extends State { padding: const EdgeInsets.all(8.0), child: Center( child: Texts( - 'Ok', + TranslationBase.of(context).ok, fontWeight: FontWeight.w400, )), ), diff --git a/lib/pages/medical/balance/dialogs/show_timer_text.dart b/lib/pages/medical/balance/dialogs/show_timer_text.dart deleted file mode 100644 index b2cd936b..00000000 --- a/lib/pages/medical/balance/dialogs/show_timer_text.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'dart:async'; - -import 'package:diplomaticquarterapp/config/config.dart'; -import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:flutter/material.dart'; -import 'package:hexcolor/hexcolor.dart'; -import 'package:provider/provider.dart'; - -class ShowTimerText extends StatefulWidget { - ShowTimerText({Key key, this.model}); - final model; - - @override - _ShowTimerTextState createState() => _ShowTimerTextState(); -} - -class _ShowTimerTextState extends State { - String timerText = (TIMER_MIN - 1).toString() + ':59'; - int min = TIMER_MIN - 1; - int sec = 59; - Timer _timer; - -// AuthProvider authProv; - - resendCode() { - min = TIMER_MIN - 1; - sec = 59; - _timer = Timer.periodic(Duration(seconds: 1), (Timer timer) { - if (min <= 0 && sec <= 0) { - timer.cancel(); - } else { - setState(() { - sec = sec - 1; - if (sec == 0 && min == 0) { - //TODO - - min = 0; - sec = 0; - } else if (sec == 0) { - min = min - 1; - sec = 59; - } - timerText = min.toString() + ':' + sec.toString(); - }); - } - }); - } - - @override - void initState() { - super.initState(); - resendCode(); - } - - @override - void dispose() { - _timer.cancel(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - onTap: min != 0 || sec != 0 - ? null - : () { - resendActivatioinCode(); - }, - child: Text( - timerText, - style: TextStyle( - fontSize: 3.0 * SizeConfig.textMultiplier, - color: Hexcolor('#B8382C'), - fontWeight: FontWeight.bold), - ), - ), - ], - ), - ); - } - - resendActivatioinCode() { - - } -} diff --git a/lib/pages/medical/balance/my_balance_page.dart b/lib/pages/medical/balance/my_balance_page.dart index 9e56dfee..446333cc 100644 --- a/lib/pages/medical/balance/my_balance_page.dart +++ b/lib/pages/medical/balance/my_balance_page.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.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'; @@ -18,14 +19,14 @@ class MyBalancePage extends StatelessWidget { builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, - appBarTitle: 'My Balances', + appBarTitle: TranslationBase.of(context).myBalances, body: Container( margin: EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( - 'Balance Amount', + TranslationBase.of(context).balanceAmount, color: Colors.black, bold: true, ), @@ -45,7 +46,7 @@ class MyBalancePage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Texts( - 'Total Balance', + TranslationBase.of(context).totalBalance, color: Colors.white, ), Texts( @@ -93,7 +94,7 @@ class MyBalancePage extends StatelessWidget { child: SecondaryButton( // color: Colors.grey[900], textColor: Colors.white, - label: ' Create Advanced Payment', + label: TranslationBase.of(context).createAdvancedPayment, onTap: () { Navigator.push(context, FadePage(page: AdvancePaymentPage())); diff --git a/lib/pages/paymentService/payment_service.dart b/lib/pages/paymentService/payment_service.dart new file mode 100644 index 00000000..15a1f699 --- /dev/null +++ b/lib/pages/paymentService/payment_service.dart @@ -0,0 +1,151 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/pages/medical/balance/advance_payment_page.dart'; +import 'package:diplomaticquarterapp/pages/medical/balance/my_balance_page.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:provider/provider.dart'; + +class PaymentService extends StatelessWidget { + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + return AppScaffold( + isShowAppBar: true, + appBarTitle: TranslationBase.of(context).paymentService, + body: SingleChildScrollView( + child: Container( + margin: EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: InkWell( + onTap: () => Navigator.push( + context, FadePage(page: AdvancePaymentPage())), + child: Container( + margin: EdgeInsets.all(5.0), + padding: EdgeInsets.all(9), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.0), + shape: BoxShape.rectangle), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + TranslationBase.of(context).payment, + color: Hexcolor('#B61422'), + bold: true, + ), + Texts( + TranslationBase.of(context).paymentOnline, + fontSize: 14, + fontWeight: FontWeight.normal, + ), + Image.asset( + 'assets/images/al-habib_online_payment_service_icon.png', + fit: BoxFit.fill, + height: 55, + width: double.infinity, + ), + ], + ), + ), + ), + ), + Expanded( + child: Container( + margin: EdgeInsets.all(5.0), + padding: EdgeInsets.all(9), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.0), + shape: BoxShape.rectangle), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + TranslationBase.of(context).onlineCheckIn, + color: Hexcolor('#B61422'), + bold: true, + ), + Texts( + TranslationBase.of(context).appointment, + fontSize: 14, + fontWeight: FontWeight.normal, + ), + Align( + alignment: projectViewModel.isArabic + ? Alignment.centerRight + : Alignment.centerLeft, + child: Image.asset( + 'assets/images/al-habib_online_payment_service_icon.png', + height: 55, + ), + ), + ], + ), + ), + ) + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: InkWell( + onTap: () => Navigator.push( + context, FadePage(page: MyBalancePage())), + child: Container( + margin: EdgeInsets.all(5.0), + padding: EdgeInsets.all(9), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.0), + shape: BoxShape.rectangle), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + 'My Balances', + color: Hexcolor('#B61422'), + bold: true, + ), + Texts( + TranslationBase.of(context).payment, + fontSize: 14, + fontWeight: FontWeight.normal, + ), + Align( + alignment: projectViewModel.isArabic + ? Alignment.centerRight + : Alignment.centerLeft, + child: Image.asset( + 'assets/images/al-habib_online_payment_service_icon.png', + height: 55, + ), + ), + ], + ), + ), + ), + ), + Expanded( + child: Container(), + ) + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index f8ead077..ba89fc2c 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -532,6 +532,32 @@ class TranslationBase { String get emailSentSuccessfully => localizedValues['EmailSentSuccessfully'][locale.languageCode]; String get checkVaccineAvailability => localizedValues['CHECK_VACCINE_AVAILABILITY'][locale.languageCode]; String get myVaccinesAvailability => localizedValues['MyVaccinesAvailability'][locale.languageCode]; + String get paymentService => localizedValues['PaymentService'][locale.languageCode]; + String get paymentOnline => localizedValues['PaymentOnline'][locale.languageCode]; + String get onlineCheckIn => localizedValues['OnlineCheckIn'][locale.languageCode]; + String get myBalances => localizedValues['MyBalances'][locale.languageCode]; + String get balanceAmount => localizedValues['BalanceAmount'][locale.languageCode]; + String get totalBalance => localizedValues['TotalBalance'][locale.languageCode]; + String get createAdvancedPayment => localizedValues['CreateAdvancedPayment'][locale.languageCode]; + String get advancePayment => localizedValues['AdvancePayment'][locale.languageCode]; + String get advancePaymentLabel => localizedValues['AdvancePaymentLabel'][locale.languageCode]; + String get fileNumber => localizedValues['FileNumber'][locale.languageCode]; + String get amount => localizedValues['Amount'][locale.languageCode]; + String get depositorEmail => localizedValues['DepositorEmail'][locale.languageCode]; + String get notes => localizedValues['Notes'][locale.languageCode]; + String get selectPatientName => localizedValues['SelectPatientName'][locale.languageCode]; + String get selectFamilyPatientName => localizedValues['SelectFamilyPatientName'][locale.languageCode]; + String get selectHospital => localizedValues['SelectHospital'][locale.languageCode]; + String get myAccount => localizedValues['MyAccount'][locale.languageCode]; + String get otherAccount => localizedValues['OtherAccount'][locale.languageCode]; + String get selectBeneficiary => localizedValues['SelectBeneficiary'][locale.languageCode]; + String get confirmThePayment => localizedValues['ConfirmThePayment'][locale.languageCode]; + String get depositorName => localizedValues['DepositorName'][locale.languageCode]; + String get mobileNumber => localizedValues['MobileNumber'][locale.languageCode]; + String get ok => localizedValues['Ok'][locale.languageCode]; + String get theVerificationCodeExpiresIn => localizedValues['TheVerificationCodeExpiresIn'][locale.languageCode]; + String get pleaseEnterTheVerificationCode => localizedValues['PleaseEnterTheVerificationCode'][locale.languageCode]; + } class TranslationBaseDelegate extends LocalizationsDelegate {