import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/blooddonation/blood_groub_details.dart'; import 'package:diplomaticquarterapp/core/model/blooddonation/get_all_cities.dart'; //import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/core/service/blood/blood_details_servies.dart'; import 'package:diplomaticquarterapp/core/viewModels/blooddonation/blood_details_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; import 'package:diplomaticquarterapp/pages/Blood/user_agreement_page.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectCiteisDialog.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.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'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:giffy_dialog/giffy_dialog.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; //import '../../../core/model/my_balance/AdvanceModel.dart'; import 'confirm_payment_page.dart'; import 'dialogs/SelectBeneficiaryDialog.dart'; import 'dialogs/SelectBloodDialog.dart'; import 'dialogs/SelectGenderDialog.dart'; import 'dialogs/SelectPatientFamilyDialog.dart'; import 'dialogs/SelectPatientInfoDialog.dart'; import 'new_text_Field.dart'; enum BeneficiaryType { MyAccount, MyFamilyFiles, OtherAccount, NON } enum Gender{Male,Female,NON} enum Blood{Oplus,Ominus,Aplus,Aminus,Bplus,Bminus,ABplus,ABminus,NON} class BloodDonationPage extends StatefulWidget { @override _BloodDonationPageState createState() => _BloodDonationPageState(); } class _BloodDonationPageState extends State { TextEditingController _fileTextController = TextEditingController(); TextEditingController _notesTextController = TextEditingController(); BeneficiaryType beneficiaryType = BeneficiaryType.NON; Gender gender = Gender.Male;//Gender.NON; Blood blood = Blood.Aminus;//Blood.NON; //HospitalsModel _selectedHospital; CitiesModel _selectedHospital; List_BloodGroupDetailsModel _selectBlood; String amount = ""; String email; PatientInfo _selectedPatientInfo; AuthenticatedUser authenticatedUser; GetAllSharedRecordsByStatusList selectedPatientFamily; AdvanceModel advanceModel = AdvanceModel(); AppSharedPreferences sharedPref = AppSharedPreferences(); AuthenticatedUser authUser; var checkedValue = false; @override void initState() { super.initState(); getAuthUser(); } @override Widget build(BuildContext context) { return BaseView( onModelReady: (model) => model.getCities(),//model.getHospitals(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, appBarTitle: "Blood Donation",//TranslationBase.of(context).advancePayment, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( margin: EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( // TranslationBase.of(context).advancePaymentLabel, "Enter the required information, In order to register for Blood Donation Service", textAlign: TextAlign.center, ), SizedBox( height: 12, ), InkWell( onTap: () => confirmSelectHospitalDialog(model.CitiesModelList),//model.hospitals child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Texts(getHospitalName()), Icon(Icons.arrow_drop_down) ], ), ), ), SizedBox( height: 12, ), InkWell( //======Gender======== onTap: () => confirmSelectGenderDialog(),//confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ //Texts(getBeneficiaryType()), Texts(getGender()), Icon(Icons.arrow_drop_down) ], ), ), ), // if (beneficiaryType == BeneficiaryType.MyFamilyFiles) // SizedBox( // height: 12, // ), // if (beneficiaryType == BeneficiaryType.MyFamilyFiles) // InkWell( // onTap: () { // model.getFamilyFiles().then((value) { // confirmSelectFamilyDialog(model // .getAllSharedRecordsByStatusResponse // .getAllSharedRecordsByStatusList); // }).showProgressBar( // text: "Loading", // backgroundColor: Colors.blue.withOpacity(0.6)); // }, // child: Container( // padding: EdgeInsets.all(12), // width: double.infinity, // height: 65, // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(12), // color: Colors.white), // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Texts(getFamilyMembersName()), // Icon(Icons.arrow_drop_down) // ], // ), // ), // ), SizedBox( height: 12, ), InkWell( //======Gender======== onTap: () => confirmSelectBloodDialog(),//confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ //Texts(getBeneficiaryType()), Texts(getBlood()), Icon(Icons.arrow_drop_down) ], ), ), ), // if (beneficiaryType == BeneficiaryType.MyFamilyFiles) // SizedBox( // height: 12, // ), // if (beneficiaryType == BeneficiaryType.MyFamilyFiles) // InkWell( // onTap: () { // model.getFamilyFiles().then((value) { // confirmSelectFamilyDialog(model // .getAllSharedRecordsByStatusResponse // .getAllSharedRecordsByStatusList); // }).showProgressBar( // text: "Loading", // backgroundColor: Colors.blue.withOpacity(0.6)); // }, // child: Container( // padding: EdgeInsets.all(12), // width: double.infinity, // height: 65, // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(12), // color: Colors.white), // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Texts(getFamilyMembersName()), // Icon(Icons.arrow_drop_down) // ], // ), // ), // ), SizedBox( height: 12, ), Row( children: [ Container( child: Text(" To view the terms and conditions "), ), SizedBox( width: MediaQuery.of(context).size.height * 0.10, ), InkWell( onTap: () { Navigator.of(context).push(MaterialPageRoute( builder: (BuildContext context) => UserAgreementPage())); }, child: Container( child: Texts(" Click here ",color: Colors.blue,), ), ) ], ), SizedBox( height: 12, ), Row( children: [ Checkbox( onChanged: (bool value) { setState(() { checkedValue = value; }); }, // tristate: checkedValue==true,//i == 1, value: checkedValue, activeColor: Colors.red,//Color(0xFF6200EE), ), SizedBox(height: 10,), Row(children: [ ],), SizedBox( width: 10, ), Text( 'I agree to the terms and conditions ', style: Theme.of(context).textTheme.subtitle1.copyWith(color: checkedValue? Colors.red : Colors.black), ), ], ), // NewTextFields( // hintText: TranslationBase.of(context).fileNumber, // controller: _fileTextController, // ), // if (beneficiaryType == BeneficiaryType.OtherAccount) // SizedBox( // height: 12, // ), // if (beneficiaryType == BeneficiaryType.OtherAccount) // InkWell( // onTap: () { // if (_fileTextController.text.isNotEmpty) // model // .getPatientInfoByPatientID( // id: _fileTextController.text) // .then((value) { // confirmSelectPatientDialog(model.patientInfoList); // }).showProgressBar( // text: "Loading", // backgroundColor: // Colors.blue.withOpacity(0.6)); // else // AppToast.showErrorToast( // message: 'Please Enter The File Number'); // }, // child: Container( // padding: EdgeInsets.all(12), // width: double.infinity, // height: 65, // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(12), // color: Colors.white), // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Texts(getPatientName()), // Icon(Icons.arrow_drop_down) // ], // ), // ), // ), // SizedBox( // height: 12, // ), // NewTextFields( // hintText: TranslationBase.of(context).amount, // keyboardType: TextInputType.number, // onChanged: (value) { // setState(() { // amount = value; // }); // }, // ), // SizedBox( // height: 12, // ), // NewTextFields( // hintText: TranslationBase.of(context).depositorEmail, // initialValue: model.user.emailAddress, // onChanged: (value) { // email = value; // }, // ), // SizedBox( // height: 12, // ), // NewTextFields( // hintText: TranslationBase.of(context).notes, // controller: _notesTextController, // ), SizedBox( height: 10, ), Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Center( child: Container( color: Colors.white, width: 350, child: InkWell( onTap: () { showDialog( context: context, builder: (_) => AssetGiffyDialog( title: Text( "", style: TextStyle( fontSize: 22.0, fontWeight: FontWeight .w600), ), image: Image.asset( 'assets/images/BloodChrt_EN.png'), buttonCancelText: Text('cancel'), buttonCancelColor: Colors.grey, onlyCancelButton: true, )); }, child: Container( width: 250, height: 200, child:Image.asset( 'assets/images/BloodChrt_EN.png')), ), ), ), ], ), SizedBox( height: MediaQuery.of(context).size.height * 0.15, ) ], ), ), ), bottomSheet: Container( height: MediaQuery.of(context).size.height * 0.12, width: double.infinity, padding: EdgeInsets.all(12), child: SecondaryButton( textColor: Colors.white, color: checkedValue== false ?Colors.white24:Color.fromRGBO(63, 72, 74, 1,), label: "Save", // // onTap: () { // advanceModel.fileNumber = _fileTextController.text; // // advanceModel.hospitalsModel = _selectedHospital; // advanceModel.citiessModel = _selectedHospital; // advanceModel.note = _notesTextController.text; // advanceModel.email = email ?? model.user.emailAddress; // advanceModel.amount = amount; // // model.getPatientInfoByPatientIDAndMobileNumber().then((value) { // if (model.state != ViewState.Error && // model.state != ViewState.ErrorLocal) { // Utils.hideKeyboard(context); // Navigator.push( // context, // MaterialPageRoute( // builder: (context) => PaymentMethod())).then( // (value) { // Navigator.push( // context, // FadePage( // page: ConfirmPaymentPage( // advanceModel: advanceModel, // selectedPaymentMethod: value, // patientInfoAndMobileNumber: // model.patientInfoAndMobileNumber, // authenticatedUser: authUser, // ), // ), // ); // }, // ); // } // }).showProgressBar( // text: "Loading", // backgroundColor: Colors.blue.withOpacity(0.6)); // }, ), )), ); } //============== void confirmSelectBeneficiaryDialog(MyBalanceViewModel model) { showDialog( context: context, child: SelectBeneficiaryDialog( beneficiaryType: beneficiaryType, onValueSelected: (value) { setState(() { if (value == BeneficiaryType.MyAccount) { _fileTextController.text = model.user.patientID.toString(); advanceModel.depositorName = model.user.firstName + " " + model.user.lastName; } else _fileTextController.text = ""; beneficiaryType = value; }); }, ), ); } void confirmSelectBloodDialog(){ showDialog( context: context, child: SelectBloodDialog(bloodType: blood, onValueSelected: (value) { setState(() { if (value == Blood.Oplus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.Ominus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.ABplus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.ABminus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.Aplus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.Aminus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.Bplus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; }else if (value == Blood.Bminus) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; } else _fileTextController.text = ""; // beneficiaryType = value; blood=value; } ); }, ), ); } void confirmSelectGenderDialog(){ showDialog( context: context, child: SelectGenderDialog(beneficiaryType: gender, onValueSelected: (value) { setState(() { if (value == Gender.Male) { // _fileTextController.text = model.user.patientID.toString(); // advanceModel.depositorName = // model.user.firstName + " " + model.user.lastName; } else _fileTextController.text = ""; // beneficiaryType = value; gender=value; }); }, ), ); } //void confirmSelectHospitalDialog(List hospitals) { void confirmSelectHospitalDialog(List hospitals) { showDialog( context: context, child: SelectCiteisDialog( hospitals: hospitals, selectedHospital: _selectedHospital, onValueSelected: (value) { setState(() { _selectedHospital = value; }); }, ), ); } void confirmSelectPatientDialog(List patientInfoList) { showDialog( context: context, child: SelectPatientInfoDialog( patientInfoList: patientInfoList, selectedPatientInfo: _selectedPatientInfo, onValueSelected: (value) { setState(() { advanceModel.depositorName = value.fullName; _selectedPatientInfo = value; }); }, ), ); } void confirmSelectFamilyDialog( List getAllSharedRecordsByStatusList) { showDialog( context: context, child: SelectPatientFamilyDialog( getAllSharedRecordsByStatusList: getAllSharedRecordsByStatusList, selectedPatientFamily: selectedPatientFamily, onValueSelected: (value) { setState(() { selectedPatientFamily = value; _fileTextController.text = selectedPatientFamily.patientID.toString(); advanceModel.depositorName = value.patientName; }); }, ), ); } String getBeneficiaryType() { switch (beneficiaryType) { case BeneficiaryType.MyAccount: return TranslationBase.of(context).myAccount; case BeneficiaryType.MyFamilyFiles: return TranslationBase.of(context).myFamilyFiles; break; case BeneficiaryType.OtherAccount: return TranslationBase.of(context).otherAccount; break; case BeneficiaryType.NON: return "Select Gender";//TranslationBase.of(context).selectBeneficiary; } return "Select Gender";//TranslationBase.of(context).selectBeneficiary; } String getGender() { switch (gender) { case Gender.Male: return "Male"; case Gender.Female: return "Female"; break; case Gender.NON: return "Select Gender";//TranslationBase.of(context).selectBeneficiary; } return "Select Gender";//TranslationBase.of(context).selectBeneficiary; } String getBlood() { switch (blood) { case Blood.Oplus: return "O+"; break; case Blood.Ominus: return "O-"; break; case Blood.ABplus: return "AB+"; break; case Blood.ABminus: return "AB-"; break; case Blood.Aplus: return "A+"; break; case Blood.Aminus: return "A-"; break; case Blood.Bplus: return "B-"; break; case Blood.Bminus: return "B-"; break; case Blood.Bplus: return "B+"; break; case Blood.NON: return "Select Blood Type";//TranslationBase.of(context).selectBeneficiary; } return "Select Blood Type";//TranslationBase.of(context).selectBeneficiary; } String getHospitalName() { if (_selectedHospital != null) return _selectedHospital.description; else return "Riyadh"; // return List_BloodGroupDetailsModel.fromJson(0).city.toString();//"Select City";//TranslationBase.of(context).selectHospital; } String getPatientName() { if (_selectedPatientInfo != null) return _selectedPatientInfo.fullName; else return TranslationBase.of(context).selectPatientName; } getAuthUser() async { if (await this.sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson( await this.sharedPref.getObject(USER_PROFILE)); setState(() { authUser = data; }); } } String getFamilyMembersName() { if (selectedPatientFamily != null) return selectedPatientFamily.patientName; else return TranslationBase.of(context).selectFamilyPatientName; } //================ }