From 7840ec4c3b64a9ab9688398d3768f5fe54aed20f Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 21 Sep 2020 12:32:44 +0300 Subject: [PATCH] finish activation process until step 2 --- lib/config/config.dart | 1461 +---------------- .../e_referral_service.dart | 53 +- .../e_referral_view_model.dart | 22 + ...ion_code_for_e_referral_request_model.dart | 57 + ...ion_code_for_e_referral_request_model.dart | 57 + .../e_referral_confirm_sms_dialog.dart | 385 +++++ .../E-Referral/new_e_referral_page.dart | 132 +- .../new_e_referral_step_two_page.dart | 307 ++++ .../select_country_ingo_Dialog.dart | 4 +- 9 files changed, 958 insertions(+), 1520 deletions(-) create mode 100644 lib/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart create mode 100644 lib/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart create mode 100644 lib/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart create mode 100644 lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_step_two_page.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 71abe50a..138d9482 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -204,6 +204,9 @@ const GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER = 'Services/Patients.svc/REST/AP_ const SEND_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/SendActivationCodeForAdvancePayment'; const CHECK_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/CheckActivationCodeForAdvancePayment'; const GET_ALL_RELATIONSHIP_TYPES = "Services/Patients.svc/REST/GetAllRelationshipTypes"; +const SEND_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/SendActivationCodeForEReferral'; +const CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral'; + const TIMER_MIN = 10; class AppGlobal { @@ -229,1462 +232,4 @@ class AppGlobal { return request; } - - - - dynamic LIST_CODE = { - "codes": [ - { - "name": "Saudi Arabia", - "name_ar":"المملكة العربية السعودية", - "code": "+966", - "countryCode": "SA", - "pattern": "5xxxxxxxx", - "maxLength": 9 - }, - { - "name": "United Arab Emirates", - "name_ar":"الإمارات العربية المتحدة", - "code": "+971", - "countryCode": "AE", - "pattern": "5xxxxxxxx", - "maxLength": 9 - }, - { - "name": "Bahrain", - "name_ar":"البحرين", - "code": "+973", - "countryCode": "BH", - "maxLength": 8 - }, - { - "name": "Kuwait", - "name_ar":"الكويت", - "code": "+965", - "countryCode": "KW" - }, - { - "name": "Afghanistan", - "name_ar":"أفغانستان", - "code": "+93", - "countryCode": "AF" - }, - { - "name": "Aland Islands", - "name_ar":"جزر آلاند", - "code": "+358", - "countryCode": "AX" - }, - { - "name": "Albania", - "name_ar":"ألبانيا", - "code": "+355", - "countryCode": "AL" - }, - { - "name": "Algeria", - "name_ar":"الجزائر", - "code": "+213", - "countryCode": "DZ" - }, - { - "name": "AmericanSamoa", - "name_ar":"ساموا الأمريكية", - "code": "+1 684", - "countryCode": "AS" - }, - { - "name": "Andorra", - "name_ar":"أندورا", - "code": "+376", - "countryCode": "AD" - }, - { - "name": "Angola", - "name_ar":"أنغولا", - "code": "+244", - "countryCode": "AO" - }, - { - "name": "Anguilla", - "name_ar":"أنغيلا", - "code": "+1 264", - "countryCode": "AI" - }, - { - "name": "Antarctica", - "name_ar":"القارة القطبية الجنوبية", - "code": "+672", - "countryCode": "AQ" - }, - { - "name": "Antigua and Barbuda", - "name_ar":"أنتيغوا وبربودا", - "code": "+1268", - "countryCode": "AG" - }, - { - "name": "Argentina", - "name_ar":"الأرجنتين", - "code": "+54", - "countryCode": "AR" - }, - { - "name": "Armenia", - "name_ar":"أرمينيا", - "code": "+374", - "countryCode": "AM" - }, - { - "name": "Aruba", - "name_ar":"أروبا", - "code": "+297", - "countryCode": "AW" - }, - { - "name": "Australia", - "name_ar":"أستراليا", - "code": "+61", - "countryCode": "AU" - }, - { - "name": "Austria", - "name_ar":"النمسا", - "code": "+43", - "countryCode": "AT" - }, - { - "name": "Azerbaijan", - "name_ar":"أذربيجان", - "code": "+994", - "countryCode": "AZ" - }, - { - "name": "Bahamas", - "name_ar":"الباهاما", - "code": "+1 242", - "countryCode": "BS" - }, - { - "name": "Bangladesh", - "name_ar":"بنغلاديش", - "code": "+880", - "countryCode": "BD" - }, - { - "name": "Barbados", - "name_ar":"بربادوس", - "code": "+1 246", - "countryCode": "BB" - }, - { - "name": "Belarus", - "name_ar":"روسيا البيضاء", - "code": "+375", - "countryCode": "BY" - }, - { - "name": "Belgium", - "name_ar":"بلجيكا", - "code": "+32", - "countryCode": "BE" - }, - { - "name": "Belize", - "name_ar":"بليز", - "code": "+501", - "countryCode": "BZ" - }, - { - "name": "Benin", - "name_ar":"بنين", - "code": "+229", - "countryCode": "BJ" - }, - { - "name": "Bermuda", - "name_ar":"برمودا", - "code": "+1 441", - "countryCode": "BM" - }, - { - "name": "Bhutan", - "name_ar":"بوتان", - "code": "+975", - "countryCode": "BT" - }, - { - "name": "Bolivia, Plurinational State of", - "name_ar":"دولة بوليفيا المتعددة القوميات", - "code": "+591", - "countryCode": "BO" - }, - { - "name": "Bosnia and Herzegovina", - "name_ar":"البوسنة والهرسك", - "code": "+387", - "countryCode": "BA" - }, - { - "name": "Botswana", - "name_ar":"بوتسوانا", - "code": "+267", - "countryCode": "BW" - }, - { - "name": "Brazil", - "name_ar":"البرازيل", - "code": "+55", - "countryCode": "BR" - }, - { - "name": "British Indian Ocean Territory", - "name_ar":"إقليم المحيط البريطاني الهندي", - "code": "+246", - "countryCode": "IO" - }, - { - "name": "Brunei Darussalam", - "name_ar":"بروناي دار السلام", - "code": "+673", - "countryCode": "BN" - }, - { - "name": "Bulgaria", - "name_ar":"بلغاريا", - "code": "+359", - "countryCode": "BG" - }, - { - "name": "Burkina Faso", - "name_ar":"بوركينا فاسو", - "code": "+226", - "countryCode": "BF" - }, - { - "name": "Burundi", - "name_ar":"بوروندي", - "code": "+257", - "countryCode": "BI" - }, - { - "name": "Cambodia", - "name_ar":"كمبوديا", - "code": "+855", - "countryCode": "KH" - }, - { - "name": "Cameroon", - "name_ar":"الكاميرون", - "code": "+237", - "countryCode": "CM" - }, - { - "name": "Canada", - "name_ar":"كندا", - "code": "+1", - "countryCode": "CA" - }, - { - "name": "Cape Verde", - "name_ar":"الرأس الأخضر", - "code": "+238", - "countryCode": "CV" - }, - { - "name": "Cayman Islands", - "name_ar":"جزر كايمان", - "code": "+345", - "countryCode": "KY" - }, - { - "name": "Central African Republic", - "name_ar":"جمهورية افريقيا الوسطى", - "code": "+236", - "countryCode": "CF" - }, - { - "name": "Chad", - "name_ar":"تشاد", - "code": "+235", - "countryCode": "TD" - }, - { - "name": "Chile", - "name_ar":"تشيلي", - "code": "+56", - "countryCode": "CL" - }, - { - "name": "China", - "name_ar":"الصين", - "code": "+86", - "countryCode": "CN" - }, - { - "name": "Christmas Island", - "name_ar":"جزيرة الكريسماس", - "code": "+61", - "countryCode": "CX" - }, - { - "name": "Cocos (Keeling) Islands", - "name_ar":"جزر كوكوس كيلينغ", - "code": "+61", - "countryCode": "CC" - }, - { - "name": "Colombia", - "name_ar":"كولومبيا", - "code": "+57", - "countryCode": "CO" - }, - { - "name": "Comoros", - "name_ar":"جزر القمر", - "code": "+269", - "countryCode": "KM" - }, - { - "name": "Congo", - "name_ar":"الكونغو", - "code": "+242", - "countryCode": "CG" - }, - { - "name": "Congo, The Democratic Republic of the Congo", - "name_ar":"الكونغو ، جمهورية الكونغو الديمقراطية", - "code": "+243", - "countryCode": "CD" - }, - { - "name": "Cook Islands", - "name_ar":"جزر كوك", - "code": "+682", - "countryCode": "CK" - }, - { - "name": "Costa Rica", - "name_ar":"كوستا ريكا", - "code": "+506", - "countryCode": "CR" - }, - { - "name": "Cote d'Ivoire", - "name_ar":"ساحل العاج", - "code": "+225", - "countryCode": "CI" - }, - { - "name": "Croatia", - "name_ar":"كرواتيا", - "code": "+385", - "countryCode": "HR" - }, - { - "name": "Cuba", - "name_ar":"كوبا", - "code": "+53", - "countryCode": "CU" - }, - { - "name": "Cyprus", - "name_ar":"قبرص", - "code": "+357", - "countryCode": "CY" - }, - { - "name": "Czech Republic", - "name_ar":"جمهورية التشيك", - "code": "+420", - "countryCode": "CZ" - }, - { - "name": "Denmark", - "name_ar":"الدنمارك", - "code": "+45", - "countryCode": "DK" - }, - { - "name": "Djibouti", - "name_ar":"جيبوتي", - "code": "+253", - "countryCode": "DJ" - }, - { - "name": "Dominica", - "name_ar":"دومينيكا", - "code": "+1 767", - "countryCode": "DM" - }, - { - "name": "Dominican Republic", - "name_ar":"جمهورية الدومنيكان", - "code": "+1 849", - "countryCode": "DO" - }, - { - "name": "Ecuador", - "name_ar":"الإكوادور", - "code": "+593", - "countryCode": "EC" - }, - { - "name": "Egypt", - "name_ar":"مصر", - "code": "+20", - "countryCode": "EG" - }, - { - "name": "El Salvador", - "name_ar":"السلفادور", - "code": "+503", - "countryCode": "SV" - }, - { - "name": "Equatorial Guinea", - "name_ar":"غينيا الإستوائية", - "code": "+240", - "countryCode": "GQ" - }, - { - "name": "Eritrea", - "name_ar":"إريتريا", - "code": "+291", - "countryCode": "ER" - }, - { - "name": "Estonia", - "name_ar":"استونيا", - "code": "+372", - "countryCode": "EE" - }, - { - "name": "Ethiopia", - "name_ar":"أثيوبيا", - "code": "+251", - "countryCode": "ET" - }, - { - "name": "Falkland Islands (Malvinas)", - "name_ar":"جزر فوكلاند مالفيناس", - "code": "+500", - "countryCode": "FK" - }, - { - "name": "Faroe Islands", - "name_ar":"جزر صناعية", - "code": "+298", - "countryCode": "FO" - }, - { - "name": "Fiji", - "name_ar":"فيجي", - "code": "+679", - "countryCode": "FJ" - }, - { - "name": "Finland", - "name_ar":"فنلندا", - "code": "+358", - "countryCode": "FI" - }, - { - "name": "France", - "name_ar":"فرنسا", - "code": "+33", - "countryCode": "FR" - }, - { - "name": "French Guiana", - "name_ar":"غيانا الفرنسية", - "code": "+594", - "countryCode": "GF" - }, - { - "name": "French Polynesia", - "name_ar":"بولينيزيا الفرنسية", - "code": "+689", - "countryCode": "PF" - }, - { - "name": "Gabon", - "name_ar":"الغابون", - "code": "+241", - "countryCode": "GA" - }, - { - "name": "Gambia", - "name_ar":"غامبيا", - "code": "+220", - "countryCode": "GM" - }, - { - "name": "Georgia", - "name_ar":"جورجيا", - "code": "+995", - "countryCode": "GE" - }, - { - "name": "Germany", - "name_ar":"ألمانيا", - "code": "+49", - "countryCode": "DE" - }, - { - "name": "Ghana", - "name_ar":"غانا", - "code": "+233", - "countryCode": "GH" - }, - { - "name": "Gibraltar", - "name_ar":"جبل طارق", - "code": "+350", - "countryCode": "GI" - }, - { - "name": "Greece", - "name_ar":"اليونان", - "code": "+30", - "countryCode": "GR" - }, - { - "name": "Greenland", - "name_ar":"الأرض الخضراء", - "code": "+299", - "countryCode": "GL" - }, - { - "name": "Grenada", - "name_ar":"غرينادا", - "code": "+1 473", - "countryCode": "GD" - }, - { - "name": "Guadeloupe", - "name_ar":"جوادلوب", - "code": "+590", - "countryCode": "GP" - }, - { - "name": "Guam", - "name_ar":"غوام", - "code": "+1 671", - "countryCode": "GU" - }, - { - "name": "Guatemala", - "name_ar":"غواتيمالا", - "code": "+502", - "countryCode": "GT" - }, - { - "name": "Guernsey", - "name_ar":"غيرنسي", - "code": "+44", - "countryCode": "GG" - }, - { - "name": "Guinea", - "name_ar":"غينيا", - "code": "+224", - "countryCode": "GN" - }, - { - "name": "Guinea-Bissau", - "name_ar":"غينيا بيساو", - "code": "+245", - "countryCode": "GW" - }, - { - "name": "Guyana", - "name_ar":"غيانا", - "code": "+595", - "countryCode": "GY" - }, - { - "name": "Haiti", - "name_ar":"هايتي", - "code": "+509", - "countryCode": "HT" - }, - { - "name": "Holy See (Vatican City State)", - "name_ar":"الكرسي الرسولي دولة الفاتيكان", - "code": "+379", - "countryCode": "VA" - }, - { - "name": "Honduras", - "name_ar":"هندوراس", - "code": "+504", - "countryCode": "HN" - }, - { - "name": "Hong Kong", - "name_ar":"هونج كونج", - "code": "+852", - "countryCode": "HK" - }, - { - "name": "Hungary", - "name_ar":"اليونان", - "code": "+36", - "countryCode": "HU" - }, - { - "name": "Iceland", - "name_ar":"أيسلندا", - "code": "+354", - "countryCode": "IS" - }, - { - "name": "India", - "name_ar":"الهند", - "code": "+91", - "countryCode": "IN" - }, - { - "name": "Indonesia", - "name_ar":"أندونيسيا", - "code": "+62", - "countryCode": "ID" - }, - { - "name": "Iran, Islamic Republic of Persian Gulf", - "name_ar":"جمهورية إيران الإسلامية الخليج الفارسي", - "code": "+98", - "countryCode": "IR" - }, - { - "name": "Iraq", - "name_ar":"العراق", - "code": "+964", - "countryCode": "IQ" - }, - { - "name": "Ireland", - "name_ar":"أيرلندا", - "code": "+353", - "countryCode": "IE" - }, - { - "name": "Isle of Man", - "name_ar":"جزيرة آيل أوف مان", - "code": "+44", - "countryCode": "IM" - }, - { - "name": "Israel", - "name_ar":"إسرائيل", - "code": "+972", - "countryCode": "IL" - }, - { - "name": "Italy", - "name_ar":"إيطاليا", - "code": "+39", - "countryCode": "IT" - }, - { - "name": "Jamaica", - "name_ar":"جامايكا", - "code": "+1 876", - "countryCode": "JM" - }, - { - "name": "Japan", - "name_ar":"اليابان", - "code": "+81", - "countryCode": "JP" - }, - { - "name": "Jersey", - "name_ar":"جيرسي", - "code": "+44", - "countryCode": "JE" - }, - { - "name": "Jordan", - "name_ar":"الأردن", - "code": "+962", - "countryCode": "JO" - }, - { - "name": "Kazakhstan", - "name_ar":"كازاخستان", - "code": "+77", - "countryCode": "KZ" - }, - { - "name": "Kenya", - "name_ar":"كينيا", - "code": "+254", - "countryCode": "KE" - }, - { - "name": "Kiribati", - "name_ar":"كيريباس", - "code": "+686", - "countryCode": "KI" - }, - { - "name": "Korea, Democratic People's Republic of Korea", - "name_ar":"جمهورية كوريا الديمقراطية الشعبية", - "code": "+850", - "countryCode": "KP" - }, - { - "name": "Korea, Republic of South Korea", - "name_ar":"جمهورية كوريا الديمقراطية الشعبية", - "code": "+82", - "countryCode": "KR" - }, - { - "name": "Kyrgyzstan", - "name_ar":"قرغيزستان", - "code": "+996", - "countryCode": "KG" - }, - { - "name": "Laos", - "name_ar":"لاوس", - "code": "+856", - "countryCode": "LA" - }, - { - "name": "Latvia", - "name_ar":"لاتفيا", - "code": "+371", - "countryCode": "LV" - }, - { - "name": "Lebanon", - "name_ar":"لبنان", - "code": "+961", - "countryCode": "LB" - }, - { - "name": "Lesotho", - "name_ar":"ليسوتو", - "code": "+266", - "countryCode": "LS" - }, - { - "name": "Liberia", - "name_ar":"ليبيريا", - "code": "+231", - "countryCode": "LR" - }, - { - "name": "Libyan Arab Jamahiriya", - "name_ar":"الجماهيرية العربية الليبية", - "code": "+218", - "countryCode": "LY" - }, - { - "name": "Liechtenstein", - "name_ar":"ليختنشتاين", - "code": "+423", - "countryCode": "LI" - }, - { - "name": "Lithuania", - "name_ar":"ليتوانيا", - "code": "+370", - "countryCode": "LT" - }, - { - "name": "Luxembourg", - "name_ar":"لوكسمبورغ", - "code": "+352", - "countryCode": "LU" - }, - { - "name": "Macao", - "name_ar":"ماكاو", - "code": "+853", - "countryCode": "MO" - }, - { - "name": "Macedonia", - "name_ar":"مقدونيا", - "code": "+389", - "countryCode": "MK" - }, - { - "name": "Madagascar", - "name_ar":"مدغشقر", - "code": "+261", - "countryCode": "MG" - }, - { - "name": "Malawi", - "name_ar":"مالاوي", - "code": "+265", - "countryCode": "MW" - }, - { - "name": "Malaysia", - "name_ar":"ماليزيا", - "code": "+60", - "countryCode": "MY" - }, - { - "name": "Maldives", - "name_ar":"جزر المالديف", - "code": "+960", - "countryCode": "MV" - }, - { - "name": "Mali", - "name_ar":"مالي", - "code": "+223", - "countryCode": "ML" - }, - { - "name": "Malta", - "name_ar":"مالطا", - "code": "+356", - "countryCode": "MT" - }, - { - "name": "Marshall Islands", - "name_ar":"جزر مارشال", - "code": "+692", - "countryCode": "MH" - }, - { - "name": "Martinique", - "name_ar":"مارتينيك", - "code": "+596", - "countryCode": "MQ" - }, - { - "name": "Mauritania", - "name_ar":"موريتانيا", - "code": "+222", - "countryCode": "MR" - }, - { - "name": "Mauritius", - "name_ar":"موريشيوس", - "code": "+230", - "countryCode": "MU" - }, - { - "name": "Mayotte", - "name_ar":"مايوت", - "code": "+262", - "countryCode": "YT" - }, - { - "name": "Mexico", - "name_ar":"المكسيك", - "code": "+52", - "countryCode": "MX" - }, - { - "name": "Micronesia, Federated States of Micronesia", - "name_ar":"ميكرونيزيا ، ولايات ميكرونيزيا الموحدة", - "code": "+691", - "countryCode": "FM" - }, - { - "name": "Moldova", - "name_ar":"مولدوفا", - "code": "+373", - "countryCode": "MD" - }, - { - "name": "Monaco", - "name_ar":"موناكو", - "code": "+377", - "countryCode": "MC" - }, - { - "name": "Mongolia", - "name_ar":"منغوليا", - "code": "+976", - "countryCode": "MN" - }, - { - "name": "Montenegro", - "name_ar":"الجبل الأسود", - "code": "+382", - "countryCode": "ME" - }, - { - "name": "Montserrat", - "name_ar":"مونتسيرات", - "code": "+1664", - "countryCode": "MS" - }, - { - "name": "Morocco", - "name_ar":"المغرب", - "code": "+212", - "countryCode": "MA" - }, - { - "name": "Mozambique", - "name_ar":"موزمبيق", - "code": "+258", - "countryCode": "MZ" - }, - { - "name": "Myanmar", - "name_ar":"ميانمار", - "code": "+95", - "countryCode": "MM" - }, - { - "name": "Namibia", - "name_ar":"ناميبيا", - "code": "+264", - "countryCode": "NA" - }, - { - "name": "Nauru", - "name_ar":"ناورو", - "code": "+674", - "countryCode": "NR" - }, - { - "name": "Nepal", - "name_ar":"نيبال", - "code": "+977", - "countryCode": "NP" - }, - { - "name": "Netherlands", - "name_ar":"هولندا", - "code": "+31", - "countryCode": "NL" - }, - { - "name": "Netherlands Antilles", - "name_ar":"جزر الأنتيل الهولندية", - "code": "+599", - "countryCode": "AN" - }, - { - "name": "New Caledonia", - "name_ar":"كاليدونيا الجديدة", - "code": "+687", - "countryCode": "NC" - }, - { - "name": "New Zealand", - "name_ar":"نيوزيلندا", - "code": "+64", - "countryCode": "NZ" - }, - { - "name": "Nicaragua", - "name_ar":"نيكاراغوا", - "code": "+505", - "countryCode": "NI" - }, - { - "name": "Niger", - "name_ar":"النيجر", - "code": "+227", - "countryCode": "NE" - }, - { - "name": "Nigeria", - "name_ar":"نيجيريا", - "code": "+234", - "countryCode": "NG" - }, - { - "name": "Niue", - "name_ar":"نيوي", - "code": "+683", - "countryCode": "NU" - }, - { - "name": "Norfolk Island", - "name_ar":"جزيرة نورفولك", - "code": "+672", - "countryCode": "NF" - }, - { - "name": "Northern Mariana Islands", - "name_ar":"جزر مريانا الشمالية", - "code": "+1 670", - "countryCode": "MP" - }, - { - "name": "Norway", - "name_ar":"النرويج", - "code": "+47", - "countryCode": "NO" - }, - { - "name": "Oman", - "name_ar":"سلطنة عمان", - "code": "+968", - "countryCode": "OM" - }, - { - "name": "Pakistan", - "name_ar":"باكستان", - "code": "+92", - "countryCode": "PK" - }, - { - "name": "Palau", - "name_ar":"بالاو", - "code": "+680", - "countryCode": "PW" - }, - { - "name": "Palestinian Territory, Occupied", - "name_ar":"الأراضي الفلسطينية المحتلة", - "code": "+970", - "countryCode": "PS" - }, - { - "name": "Panama", - "name_ar":"بناما", - "code": "+507", - "countryCode": "PA" - }, - { - "name": "Papua New Guinea", - "name_ar":"بابوا غينيا الجديدة", - "code": "+675", - "countryCode": "PG" - }, - { - "name": "Paraguay", - "name_ar":"باراغواي", - "code": "+595", - "countryCode": "PY" - }, - { - "name": "Peru", - "name_ar":"بيرو", - "code": "+51", - "countryCode": "PE" - }, - { - "name": "Philippines", - "name_ar":"الفلبين", - "code": "+63", - "countryCode": "PH" - }, - { - "name": "Pitcairn", - "name_ar":"بيتكيرن", - "code": "+872", - "countryCode": "PN" - }, - { - "name": "Poland", - "name_ar":"بولندا", - "code": "+48", - "countryCode": "PL" - }, - { - "name": "Portugal", - "name_ar":"البرتغال", - "code": "+351", - "countryCode": "PT" - }, - { - "name": "Puerto Rico", - "name_ar":"بورتوريكو", - "code": "+1 939", - "countryCode": "PR" - }, - { - "name": "Qatar", - "name_ar":"دولة قطر", - "code": "+974", - "countryCode": "QA" - }, - { - "name": "Romania", - "name_ar":"رومانيا", - "code": "+40", - "countryCode": "RO" - }, - { - "name": "Russia", - "name_ar":"روسيا", - "code": "+7", - "countryCode": "RU" - }, - { - "name": "Rwanda", - "name_ar":"رواندا", - "code": "+250", - "countryCode": "RW" - }, - { - "name": "Reunion", - "name_ar":"جمع شمل", - "code": "+262", - "countryCode": "RE" - }, - { - "name": "Saint Barthelemy", - "name_ar":"سانت بارتيليمي", - "code": "+590", - "countryCode": "BL" - }, - { - "name": "Saint Helena, Ascension and Tristan Da Cunha", - "name_ar":"سانت هيلانة ، أسنشن وتريستان دا كونها", - "code": "+290", - "countryCode": "SH" - }, - { - "name": "Saint Kitts and Nevis", - "name_ar":"سانت كيتس ونيفيس", - "code": "+1 869", - "countryCode": "KN" - }, - { - "name": "Saint Lucia", - "name_ar":"القديسة لوسيا", - "code": "+1 758", - "countryCode": "LC" - }, - { - "name": "Saint Martin", - "name_ar":"القديس مارتن", - "code": "+590", - "countryCode": "MF" - }, - { - "name": "Saint Pierre and Miquelon", - "name_ar":"سانت بيير وميكلون", - "code": "+508", - "countryCode": "PM" - }, - { - "name": "Saint Vincent and the Grenadines", - "name_ar":"سانت فنسنت وجزر غرينادين", - "code": "+1 784", - "countryCode": "VC" - }, - { - "name": "Samoa", - "name_ar":"ساموا", - "code": "+685", - "countryCode": "WS" - }, - { - "name": "San Marino", - "name_ar":"سان مارينو", - "code": "+378", - "countryCode": "SM" - }, - { - "name": "Sao Tome and Principe", - "name_ar":"ساو تومي وبرينسيبي", - "code": "+239", - "countryCode": "ST" - }, - { - "name": "Senegal", - "name_ar":"السنغال", - "code": "+221", - "countryCode": "SN" - }, - { - "name": "Serbia", - "name_ar":"صربيا", - "code": "+381", - "countryCode": "RS" - }, - { - "name": "Seychelles", - "name_ar":"سيشيل", - "code": "+248", - "countryCode": "SC" - }, - { - "name": "Sierra Leone", - "name_ar":"سيرا ليون", - "code": "+232", - "countryCode": "SL" - }, - { - "name": "Singapore", - "name_ar":"سنغافورة", - "code": "+65", - "countryCode": "SG" - }, - { - "name": "Slovakia", - "name_ar":"سلوفاكيا", - "code": "+421", - "countryCode": "SK" - }, - { - "name": "Slovenia", - "name_ar":"سلوفينيا", - "code": "+386", - "countryCode": "SI" - }, - { - "name": "Solomon Islands", - "name_ar":"جزر سليمان", - "code": "+677", - "countryCode": "SB" - }, - { - "name": "Somalia", - "name_ar":"الصومال", - "code": "+252", - "countryCode": "SO" - }, - { - "name": "South Africa", - "name_ar":"جنوب أفريقيا", - "code": "+27", - "countryCode": "ZA" - }, - { - "name": "South Georgia and the South Sandwich Islands", - "name_ar":"جورجيا الجنوبية وجزر ساندويتش الجنوبية", - "code": "+500", - "countryCode": "GS" - }, - { - "name": "Spain", - "name_ar":"إسبانيا", - "code": "+34", - "countryCode": "ES" - }, - { - "name": "Sri Lanka", - "name_ar":"سيريلانكا", - "code": "+94", - "countryCode": "LK" - }, - { - "name": "Sudan", - "name_ar":"سودان", - "code": "+249", - "countryCode": "SD" - }, - { - "name": "Suriname", - "name_ar":"سورينام", - "code": "+597", - "countryCode": "SR" - }, - { - "name": "Svalbard and Jan Mayen", - "name_ar":"سفالبارد وجان ماين", - "code": "+47", - "countryCode": "SJ" - }, - { - "name": "Swaziland", - "name_ar":"سوازيلاند", - "code": "+268", - "countryCode": "SZ" - }, - { - "name": "Sweden", - "name_ar":"السويد", - "code": "+46", - "countryCode": "SE" - }, - { - "name": "Switzerland", - "name_ar":"سويسرا", - "code": "+41", - "countryCode": "CH" - }, - { - "name": "Syrian Arab Republic", - "name_ar":"الجمهورية العربية السورية", - "code": "+963", - "countryCode": "SY" - }, - { - "name": "Taiwan", - "name_ar":"تايوان", - "code": "+886", - "countryCode": "TW" - }, - { - "name": "Tajikistan", - "name_ar":"طاجيكستان", - "code": "+992", - "countryCode": "TJ" - }, - { - "name": "Tanzania, United Republic of Tanzania", - "name_ar":"تنزانيا ، جمهورية تنزانيا المتحدة", - "code": "+255", - "countryCode": "TZ" - }, - { - "name": "Thailand", - "name_ar":"تايلاند", - "code": "+66", - "countryCode": "TH" - }, - { - "name": "Timor-Leste", - "name_ar":"تيمور الشرقية", - "code": "+670", - "countryCode": "TL" - }, - { - "name": "Togo", - "name_ar":"ليذهب", - "code": "+228", - "countryCode": "TG" - }, - { - "name": "Tokelau", - "name_ar":"توكيلاو", - "code": "+690", - "countryCode": "TK" - }, - { - "name": "Tonga", - "name_ar":"تونغا", - "code": "+676", - "countryCode": "TO" - }, - { - "name": "Trinidad and Tobago", - "name_ar":"ترينداد وتوباغو", - "code": "+1 868", - "countryCode": "TT" - }, - { - "name": "Tunisia", - "name_ar":"تونس", - "code": "+216", - "countryCode": "TN" - }, - { - "name": "Turkey", - "name_ar":"ديك رومي", - "code": "+90", - "countryCode": "TR" - }, - { - "name": "Turkmenistan", - "name_ar":"تركمانستان", - "code": "+993", - "countryCode": "TM" - }, - { - "name": "Turks and Caicos Islands", - "name_ar":"جزر تركس وكايكوس", - "code": "+1 649", - "countryCode": "TC" - }, - { - "name": "Tuvalu", - "name_ar":"توفالو", - "code": "+688", - "countryCode": "TV" - }, - { - "name": "Uganda", - "name_ar":"أوغندا", - "code": "+256", - "countryCode": "UG" - }, - { - "name": "Ukraine", - "name_ar":"أوكرانيا", - "code": "+380", - "countryCode": "UA" - }, - { - "name": "United Kingdom", - "name_ar":"المملكة المتحدة", - "code": "+44", - "countryCode": "GB" - }, - { - "name": "United States", - "name_ar":"الولايات المتحدة الامريكانية", - "code": "+1", - "countryCode": "US" - }, - { - "name": "Uruguay", - "name_ar":"أوروغواي", - "code": "+598", - "countryCode": "UY" - }, - { - "name": "Uzbekistan", - "name_ar":"أوزبكستان", - "code": "+998", - "countryCode": "UZ" - }, - { - "name": "Vanuatu", - "name_ar":"فانواتو", - "code": "+678", - "countryCode": "VU" - }, - { - "name": "Venezuela, Bolivarian Republic of Venezuela", - "name_ar":"فنزويلا ، جمهورية فنزويلا البوليفارية", - "code": "+58", - "countryCode": "VE" - }, - { - "name": "Vietnam", - "name_ar":"فيتنام", - "code": "+84", - "countryCode": "VN" - }, - { - "name": "Virgin Islands, British", - "name_ar":"جزر العذراء البريطانية", - "code": "+1 284", - "countryCode": "VG" - }, - { - "name": "Virgin Islands, U.S.", - "name_ar":"جزر فيرجن ، الولايات المتحدة", - "code": "+1 340", - "countryCode": "VI" - }, - { - "name": "Wallis and Futuna", - "name_ar":"واليس وفوتونا", - "code": "+681", - "countryCode": "WF" - }, - { - "name": "Yemen", - "name_ar":"اليمن", - "code": "+967", - "countryCode": "YE" - }, - { - "name": "Zambia", - "name_ar":"زامبيا", - "code": "+260", - "countryCode": "ZM" - }, - { - "name": "Zimbabwe", - "name_ar":"زيمبابوي", - "code": "+263", - "countryCode": "ZW" - } - ] - }; } diff --git a/lib/core/service/all_habib_medical_services/e_referral_service.dart b/lib/core/service/all_habib_medical_services/e_referral_service.dart index 7229f799..2645e307 100644 --- a/lib/core/service/all_habib_medical_services/e_referral_service.dart +++ b/lib/core/service/all_habib_medical_services/e_referral_service.dart @@ -1,28 +1,57 @@ import 'package:diplomaticquarterapp/config/config.dart'; -import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; -import 'package:diplomaticquarterapp/core/model/hospitals/request_get_hospitals_model.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; -import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/get_all_relationship_types_request_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/get_all_relationship_types_response_model.dart'; -import 'package:geolocator/geolocator.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart'; class EReferralService extends BaseService { List _relationTypes = List(); List get relationTypes => _relationTypes; + String _activationCode; + + String get activationCode => _activationCode; + + bool _isActivationCodeValid = false; + + bool get isActivationCodeValid => _isActivationCodeValid; Future getRelationTypes() async { await baseAppClient.post(GET_ALL_RELATIONSHIP_TYPES, onSuccess: (dynamic response, int statusCode) { - _relationTypes.clear(); - response['List_EReferralResult'].forEach((relation) { - _relationTypes.add(GetAllRelationshipTypeResponseModel.fromJson(relation)); - }); - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: {}); + _relationTypes.clear(); + response['List_EReferralResult'].forEach((relation) { + _relationTypes + .add(GetAllRelationshipTypeResponseModel.fromJson(relation)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: {}); + } + + Future sendActivationCodeForEReferral( + SendActivationCodeForEReferralRequestModel + sendActivationCodeForEReferralRequestModel) async { + await baseAppClient.post(SEND_ACTIVATION_CODE_FOR_E_REFERRAL, + onSuccess: (dynamic response, int statusCode) { + _activationCode = response["VerificationCode"]; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: sendActivationCodeForEReferralRequestModel.toJson()); } + Future checkActivationCodeForEReferral( + CheckActivationCodeForEReferralResponseModel + checkActivationCodeForEReferralRequestModel) async { + await baseAppClient.post(CHECK_ACTIVATION_CODE_FOR_E_REFERRAL, + onSuccess: (dynamic response, int statusCode) { + _isActivationCodeValid = true; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: checkActivationCodeForEReferralRequestModel.toJson()); + } } diff --git a/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart b/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart index 2122aa56..c87d979a 100644 --- a/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart +++ b/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart @@ -2,7 +2,9 @@ import 'dart:core'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/service/all_habib_medical_services/e_referral_service.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/get_all_relationship_types_response_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import '../../../locator.dart'; @@ -23,4 +25,24 @@ class EReferralViewModel extends BaseViewModel { } setState(ViewState.Idle); } + + void sendActivationCodeForEReferral(SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel) async { + setState(ViewState.BusyLocal); + await _eReferralService.sendActivationCodeForEReferral(sendActivationCodeForEReferralRequestModel); + if (_eReferralService.hasError) { + error = _eReferralService.error; + setState(ViewState.ErrorLocal); + } + setState(ViewState.Idle); + } + + checkActivationCodeForEReferral(CheckActivationCodeForEReferralResponseModel checkActivationCodeForEReferralRequestModel) async { + setState(ViewState.BusyLocal); + await _eReferralService.checkActivationCodeForEReferral(checkActivationCodeForEReferralRequestModel); + if (_eReferralService.hasError) { + error = _eReferralService.error; + setState(ViewState.ErrorLocal); + } + setState(ViewState.Idle); + } } diff --git a/lib/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart b/lib/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart new file mode 100644 index 00000000..3f26abe7 --- /dev/null +++ b/lib/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart @@ -0,0 +1,57 @@ +class CheckActivationCodeForEReferralResponseModel { + String logInTokenID; + String activationCode; + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + int patientOutSA; + Null sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + + CheckActivationCodeForEReferralResponseModel( + {this.logInTokenID, + this.activationCode, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.patientOutSA, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID}); + + CheckActivationCodeForEReferralResponseModel.fromJson( + Map json) { + logInTokenID = json['LogInTokenID']; + activationCode = json['activationCode']; + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + iPAdress = json['IPAdress']; + generalid = json['generalid']; + patientOutSA = json['PatientOutSA']; + sessionID = json['SessionID']; + isDentalAllowedBackend = json['isDentalAllowedBackend']; + deviceTypeID = json['DeviceTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['LogInTokenID'] = this.logInTokenID; + data['activationCode'] = this.activationCode; + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['IPAdress'] = this.iPAdress; + data['generalid'] = this.generalid; + data['PatientOutSA'] = this.patientOutSA; + data['SessionID'] = this.sessionID; + data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; + data['DeviceTypeID'] = this.deviceTypeID; + return data; + } +} diff --git a/lib/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart b/lib/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart new file mode 100644 index 00000000..622ef143 --- /dev/null +++ b/lib/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart @@ -0,0 +1,57 @@ +class SendActivationCodeForEReferralRequestModel { + int patientMobileNumber; + String zipCode; + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + int patientOutSA; + Null sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + + SendActivationCodeForEReferralRequestModel( + {this.patientMobileNumber, + this.zipCode, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.patientOutSA, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID}); + + SendActivationCodeForEReferralRequestModel.fromJson( + Map json) { + patientMobileNumber = json['PatientMobileNumber']; + zipCode = json['ZipCode']; + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + iPAdress = json['IPAdress']; + generalid = json['generalid']; + patientOutSA = json['PatientOutSA']; + sessionID = json['SessionID']; + isDentalAllowedBackend = json['isDentalAllowedBackend']; + deviceTypeID = json['DeviceTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['PatientMobileNumber'] = this.patientMobileNumber; + data['ZipCode'] = this.zipCode; + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['IPAdress'] = this.iPAdress; + data['generalid'] = this.generalid; + data['PatientOutSA'] = this.patientOutSA; + data['SessionID'] = this.sessionID; + data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; + data['DeviceTypeID'] = this.deviceTypeID; + return data; + } +} diff --git a/lib/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart b/lib/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart new file mode 100644 index 00000000..91d7f08d --- /dev/null +++ b/lib/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart @@ -0,0 +1,385 @@ +import 'dart:async'; + +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +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/all_habib_medical_services/e_referral_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/check_activation_code_for_e_referral_request_model.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/new_e_referral_step_two_page.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.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/transitions/fade_page.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:smart_progress_bar/smart_progress_bar.dart'; + +class EReferralConfirmSMSDialog extends StatefulWidget { + final String phoneNumber; + // final AdvanceModel advanceModel; + // final PatientInfoAndMobileNumber patientInfoAndMobileNumber; + // final String selectedPaymentMethod; + + const EReferralConfirmSMSDialog( + {Key key, + this.phoneNumber, + // this.advanceModel, + // this.selectedPaymentMethod, + // this.patientInfoAndMobileNumber + }) + : super(key: key); + + @override + _EReferralConfirmSMSDialogState createState() => _EReferralConfirmSMSDialogState(); +} + +class _EReferralConfirmSMSDialogState extends State { + final verifyAccountForm = GlobalKey(); + Map verifyAccountFormValue = { + 'digit1': null, + 'digit2': null, + 'digit3': null, + 'digit4': null, + }; + + TextEditingController digit1 = TextEditingController(text: ""); + TextEditingController digit2 = TextEditingController(text: ""); + TextEditingController digit3 = TextEditingController(text: ""); + TextEditingController digit4 = TextEditingController(text: ""); + + String timerText = (TIMER_MIN - 1).toString() + ':59'; + int min = TIMER_MIN - 1; + int sec = 59; + Timer _timer; + + 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) { + Navigator.pop(context); + min = 0; + sec = 0; + } else if (sec == 0) { + min = min - 1; + sec = 59; + } + timerText = min.toString() + ':' + sec.toString(); + }); + } + }); + } + + FocusNode focusD1; + FocusNode focusD2; + FocusNode focusD3; + FocusNode focusD4; + + @override + void initState() { + super.initState(); + resendCode(); + focusD1 = FocusNode(); + focusD2 = FocusNode(); + focusD3 = FocusNode(); + focusD4 = FocusNode(); + } + + @override + void dispose() { + _timer.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return BaseView( + builder: (_, model, w) => Dialog( + elevation: 0.6, + child: Container( + height: 520, + child: ListView( + children: [ + Container( + width: double.infinity, + height: 40, + color: Colors.grey[700], + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + flex: 4, + child: Center( + child: Texts( + 'SMS', + color: Colors.white, + textAlign: TextAlign.center, + ))), + Expanded( + flex: 1, + child: InkWell( + onTap: () => Navigator.pop(context), + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, color: Colors.white), + child: Icon( + Icons.clear, + color: Colors.grey[900], + )), + ), + ) + ], + ), + ), + Image.asset( + 'assets/images/login/103.png', + height: MediaQuery.of(context).size.width * 0.25, + width: MediaQuery.of(context).size.width * 0.25, + ), + SizedBox( + height: 12, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Texts( + TranslationBase.of(context).pleaseEnterTheVerificationCode + + '[${widget.phoneNumber}]', + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 12, + ), + Form( + key: verifyAccountForm, + child: Container( + width: SizeConfig.realScreenWidth * 0.90, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 30, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + width: 65, + child: TextFormField( + textInputAction: TextInputAction.next, + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 3, + ), + focusNode: focusD1, + maxLength: 1, + controller: digit1, + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + decoration: buildInputDecoration(context), + onSaved: (val) { + verifyAccountFormValue['digit1'] = val; + }, + validator: validateCodeDigit, + onFieldSubmitted: (_) { + FocusScope.of(context).requestFocus(focusD2); + }, + onChanged: (val) { + if (val.length == 1) { + FocusScope.of(context).requestFocus(focusD2); + } + }, + ), + ), + Container( + width: 65, + child: TextFormField( + focusNode: focusD2, + controller: digit2, + textInputAction: TextInputAction.next, + maxLength: 1, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 3, + ), + keyboardType: TextInputType.number, + decoration: buildInputDecoration(context), + validator: validateCodeDigit, + onSaved: (val) { + verifyAccountFormValue['digit2'] = val; + }, + onFieldSubmitted: (_) { + FocusScope.of(context).requestFocus(focusD3); + }, + onChanged: (val) { + if (val.length == 1) { + FocusScope.of(context).requestFocus(focusD3); + } + }, + ), + ), + Container( + width: 65, + child: TextFormField( + focusNode: focusD3, + controller: digit3, + textInputAction: TextInputAction.next, + maxLength: 1, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 3, + ), + keyboardType: TextInputType.number, + decoration: buildInputDecoration(context), + validator: validateCodeDigit, + onSaved: (val) { + verifyAccountFormValue['digit3'] = val; + }, + onFieldSubmitted: (_) { + FocusScope.of(context).requestFocus(focusD4); + }, + onChanged: (val) { + if (val.length == 1) { + FocusScope.of(context) + .requestFocus(focusD4); + } + }, + )), + Container( + width: 65, + child: TextFormField( + focusNode: focusD4, + controller: digit4, + maxLength: 1, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 3, + ), + keyboardType: TextInputType.number, + decoration: buildInputDecoration(context), + validator: validateCodeDigit, + onSaved: (val) { + verifyAccountFormValue['digit4'] = val; + }, + onFieldSubmitted: (_) { + FocusScope.of(context).requestFocus(focusD4); + submit(model); + }, + onChanged: (val) { + if (val.length == 1) { + FocusScope.of(context) + .requestFocus(focusD4); + submit(model); + } + }), + ) + ], + ), + SizedBox( + height: 8, + ), + if (model.state == ViewState.ErrorLocal || + model.state == ViewState.Error) + Container( + margin: EdgeInsets.only(left: 8, right: 8), + width: double.maxFinite, + child: Texts( + model.error, + color: Colors.red, + ), + ), + SizedBox(height: 20), + // buildText(), + + Padding( + padding: const EdgeInsets.all(8.0), + child: Texts( + TranslationBase.of(context) + .theVerificationCodeExpiresIn + + ' $timerText', + textAlign: TextAlign.center, + ), + ), + SizedBox(height: 20), + + Container( + width: double.maxFinite, + padding: EdgeInsets.all(12), + child: SecondaryButton( + textColor: Colors.white, + label: + TranslationBase.of(context).submit.toUpperCase(), + onTap: () { + submit(model); + }, + ), + ), + ], + ), + ), + ) + ], + ), + ), + ), + ); + } + + void submit(EReferralViewModel model) async { + if (verifyAccountForm.currentState.validate()) { + final activationCode = + digit1.text + digit2.text + digit3.text + digit4.text; + + + // ToDo call service + CheckActivationCodeForEReferralResponseModel checkActivationCodeForEReferralRequestModel= new CheckActivationCodeForEReferralResponseModel(); + await model.checkActivationCodeForEReferral(checkActivationCodeForEReferralRequestModel); + if(model.state == ViewState.ErrorLocal) { + Utils.showErrorToast(model.error); + } else { + + Navigator.push(context, FadePage(page: NewEReferralStepTowPage())); + // Navigate to new page + } + } + } + + String validateCodeDigit(value) { + if (value.isEmpty) { + return ''; + } + return null; + } + + InputDecoration buildInputDecoration(BuildContext context) { + return InputDecoration( + // ts/images/password_icon.png + contentPadding: EdgeInsets.only(top: 20, bottom: 20), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(5)), + borderSide: BorderSide(color: Colors.black), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(5.0)), + borderSide: BorderSide(color: Theme.of(context).primaryColor), + ), + errorBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(5.0)), + borderSide: BorderSide(color: Theme.of(context).errorColor), + ), + focusedErrorBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(5.0)), + borderSide: BorderSide(color: Theme.of(context).errorColor), + ), + ); + } +} diff --git a/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_page.dart b/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_page.dart index c75f3ee7..12d6327f 100644 --- a/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_page.dart +++ b/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_page.dart @@ -1,9 +1,11 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; -import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart'; import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/get_all_relationship_types_response_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/select_relation_type_Dialog.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; @@ -28,18 +30,25 @@ class NewEReferralPage extends StatefulWidget { } class _NewEReferralPageState extends State { - TextEditingController _fileTextController = TextEditingController(); - TextEditingController _notesTextController = TextEditingController(); + TextEditingController _nameTextController = TextEditingController(); TextEditingController _mobileTextController = TextEditingController(); BeneficiaryType beneficiaryType = BeneficiaryType.NON; GetAllRelationshipTypeResponseModel _selectedRelation; - String amount = ""; String email; - PatientInfo _selectedPatientInfo; AuthenticatedUser authenticatedUser; GetAllSharedRecordsByStatusList selectedPatientFamily; AdvanceModel advanceModel = AdvanceModel(); - dynamic _selectedCountry; + + // todo create a model for Country + // todo use country from the json + dynamic _selectedCountry = { + "name": "Saudi Arabia", + "name_ar": "المملكة العربية السعودية", + "code": "+966", + "countryCode": "SA", + "pattern": "5xxxxxxxx", + "maxLength": 9 + }; AppSharedPreferences sharedPref = AppSharedPreferences(); AuthenticatedUser authUser; @@ -50,6 +59,25 @@ class _NewEReferralPageState extends State { @override Widget build(BuildContext context) { + void showSMSDialog() { + showDialog( + context: context, + barrierDismissible: false, + child: EReferralConfirmSMSDialog( + phoneNumber: _selectedCountry['code']+_mobileTextController.text, + ), + ).then((value) { + print("dialog dismissed"); + print(value); + if (value != null && value) { + // AppoitmentAllHistoryResultList appo = + // new AppoitmentAllHistoryResultList(); + // appo.projectID = patientInfoAndMobileNumber.projectID; + // openPayment(selectedPaymentMethod, authenticatedUser, + // double.parse(advanceModel.amount), appo); + } + }); + } return BaseView( onModelReady: (model) => model.getRelationTypes(), builder: (_, model, widget) => AppScaffold( @@ -78,10 +106,14 @@ class _NewEReferralPageState extends State { height: 12, ), NewTextFields( - hintText: TranslationBase.of(context).fileNumber, - controller: _fileTextController, + hintText: "Enter Referral Requester Name*", + controller: _nameTextController, + ), + SizedBox( + height: 12, ), InkWell( + onTap: () => confirmSelectCountryTypeDialog(), child: Container( padding: EdgeInsets.all(12), width: double.infinity, @@ -92,7 +124,7 @@ class _NewEReferralPageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts("getPatientName"), + Texts(getCountryName()), Icon(Icons.arrow_drop_down) ], ), @@ -101,30 +133,28 @@ class _NewEReferralPageState extends State { SizedBox( height: 12, ), - InkWell( - onTap: () => confirmSelectRelationTypeDialog( - model.relationTypes), - 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(getRelationName()), - Icon(Icons.arrow_drop_down) - ], - ), + MobileNumberTextFiled( + controller: _mobileTextController, + code: _selectedCountry == null + ? "11" + : _selectedCountry["code"], + ), + SizedBox( + height: 12, + ), + Center( + child: Texts( +// TranslationBase.of(context).advancePaymentLabel, + "Requester Relationship", + textAlign: TextAlign.center, ), ), SizedBox( height: 12, ), InkWell( - onTap: () => confirmSelectCountryTypeDialog(), + onTap: () => confirmSelectRelationTypeDialog( + model.relationTypes), child: Container( padding: EdgeInsets.all(12), width: double.infinity, @@ -135,7 +165,7 @@ class _NewEReferralPageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts(getCountryName()), + Texts(getRelationName()), Icon(Icons.arrow_drop_down) ], ), @@ -144,23 +174,9 @@ class _NewEReferralPageState extends State { SizedBox( height: 12, ), - MobileNumberTextFiled(controller: _mobileTextController,code: _selectedCountry==null?"11":_selectedCountry["code"],), SizedBox( height: 12, ), - SizedBox( - height: 12, - ), - SizedBox( - height: 12, - ), - NewTextFields( - hintText: TranslationBase.of(context).notes, - controller: _notesTextController, - ), - SizedBox( - height: MediaQuery.of(context).size.height * 0.15, - ) ], ), ), @@ -168,17 +184,34 @@ class _NewEReferralPageState extends State { ), ), bottomSheet: Container( - height: MediaQuery.of(context).size.height * 0.1, + height: MediaQuery + .of(context) + .size + .height * 0.1, width: double.infinity, - padding: EdgeInsets.all(12), + padding: EdgeInsets.all(9), child: SecondaryButton( textColor: Colors.white, - label: TranslationBase.of(context).submit, - disabled: amount.isEmpty || - _fileTextController.text.isEmpty || - _selectedRelation == null, + label: "Next", + onTap: () async { + SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel = + SendActivationCodeForEReferralRequestModel( + zipCode: _selectedCountry['code'], + patientMobileNumber: int.parse( + _mobileTextController.text),); + await model.sendActivationCodeForEReferral(sendActivationCodeForEReferralRequestModel); + + showSMSDialog(); + }, + loading: model.state == ViewState.BusyLocal, + disabled: + _nameTextController.text.isEmpty || + _selectedRelation == null || + _mobileTextController.text.isEmpty, ), ))); + + } void confirmSelectRelationTypeDialog( @@ -215,7 +248,7 @@ class _NewEReferralPageState extends State { if (_selectedRelation != null) return _selectedRelation.text; else - return TranslationBase.of(context).selectHospital; + return "Select Relationship" /*TranslationBase.of(context).selectHospital*/; } String getCountryName() { @@ -261,6 +294,7 @@ class MobileNumberTextFiled extends StatelessWidget { child: Container( margin: EdgeInsets.all(5), child: TextField( + controller: controller, keyboardType: TextInputType.phone, decoration: InputDecoration( border: InputBorder.none, hintText: '5xxxxxxxx'), diff --git a/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_step_two_page.dart b/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_step_two_page.dart new file mode 100644 index 00000000..0654e4e4 --- /dev/null +++ b/lib/pages/AlHabibMedicalService/E-Referral/new_e_referral_step_two_page.dart @@ -0,0 +1,307 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; +import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/get_all_relationship_types_response_model.dart'; +import 'package:diplomaticquarterapp/models/AlHabibMedicalServices/EReferral/send_activation_code_for_e_referral_request_model.dart'; +import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/e_referral_confirm_sms_dialog.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/select_relation_type_Dialog.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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'; + +enum BeneficiaryType { MyAccount, MyFamilyFiles, OtherAccount, NON } + +class NewEReferralStepTowPage extends StatefulWidget { + final EReferralViewModel eReferralViewModel; + + const NewEReferralStepTowPage({Key key, this.eReferralViewModel}) : super(key: key); + + @override + _NewEReferralStepTowPageState createState() => _NewEReferralStepTowPageState(); +} + +class _NewEReferralStepTowPageState extends State { + TextEditingController _nameTextController = TextEditingController(); + TextEditingController _mobileTextController = TextEditingController(); + BeneficiaryType beneficiaryType = BeneficiaryType.NON; + GetAllRelationshipTypeResponseModel _selectedRelation; + String email; + AuthenticatedUser authenticatedUser; + GetAllSharedRecordsByStatusList selectedPatientFamily; + AdvanceModel advanceModel = AdvanceModel(); + + // todo create a model for Country + // todo use country from the json + dynamic _selectedCountry = { + "name": "Saudi Arabia", + "name_ar": "المملكة العربية السعودية", + "code": "+966", + "countryCode": "SA", + "pattern": "5xxxxxxxx", + "maxLength": 9 + }; + AppSharedPreferences sharedPref = AppSharedPreferences(); + AuthenticatedUser authUser; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + void showSMSDialog() { + showDialog( + context: context, + barrierDismissible: false, + child: EReferralConfirmSMSDialog( + phoneNumber: _selectedCountry['code']+_mobileTextController.text, + ), + ).then((value) { + print("dialog dismissed"); + print(value); + if (value != null && value) { + // AppoitmentAllHistoryResultList appo = + // new AppoitmentAllHistoryResultList(); + // appo.projectID = patientInfoAndMobileNumber.projectID; + // openPayment(selectedPaymentMethod, authenticatedUser, + // double.parse(advanceModel.amount), appo); + } + }); + } + return BaseView( + onModelReady: (model) => model.getRelationTypes(), + builder: (_, model, widget) => AppScaffold( + isShowAppBar: false, + body: SingleChildScrollView( + physics: ScrollPhysics(), + child: Container( + margin: EdgeInsets.all(12), + child: Center( + child: FractionallySizedBox( + widthFactor: 0.94, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 75, + ), + Center( + child: Texts( +// TranslationBase.of(context).advancePaymentLabel, + "Steeeepppppppppp 2", + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 12, + ), + NewTextFields( + hintText: "Enter Referral Requester Name*", + controller: _nameTextController, + ), + SizedBox( + height: 12, + ), + InkWell( + onTap: () => confirmSelectCountryTypeDialog(), + 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(getCountryName()), + Icon(Icons.arrow_drop_down) + ], + ), + ), + ), + SizedBox( + height: 12, + ), + MobileNumberTextFiled( + controller: _mobileTextController, + code: _selectedCountry == null + ? "11" + : _selectedCountry["code"], + ), + SizedBox( + height: 12, + ), + Center( + child: Texts( +// TranslationBase.of(context).advancePaymentLabel, + "Requester Relationship", + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 12, + ), + InkWell( + onTap: () => confirmSelectRelationTypeDialog( + model.relationTypes), + 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(getRelationName()), + Icon(Icons.arrow_drop_down) + ], + ), + ), + ), + SizedBox( + height: 12, + ), + SizedBox( + height: 12, + ), + ], + ), + ), + ), + ), + ), + bottomSheet: Container( + height: MediaQuery + .of(context) + .size + .height * 0.1, + width: double.infinity, + padding: EdgeInsets.all(9), + child: SecondaryButton( + textColor: Colors.white, + label: "Next", + onTap: () async { + SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel = + SendActivationCodeForEReferralRequestModel( + zipCode: _selectedCountry['code'], + patientMobileNumber: int.parse( + _mobileTextController.text),); + await model.sendActivationCodeForEReferral(sendActivationCodeForEReferralRequestModel); + + showSMSDialog(); + }, + loading: model.state == ViewState.BusyLocal, + disabled: + _nameTextController.text.isEmpty || + _selectedRelation == null || + _mobileTextController.text.isEmpty, + ), + ))); + + + } + + void confirmSelectRelationTypeDialog( + List relations) { + showDialog( + context: context, + child: SelectRelationTypeDialog( + relationTypes: relations, + selectedRelation: _selectedRelation, + onValueSelected: (value) { + setState(() { + _selectedRelation = value; + }); + }, + ), + ); + } + + void confirmSelectCountryTypeDialog() { + showDialog( + context: context, + child: SelectCountryDialog( + selectedCountry: _selectedCountry, + onValueSelected: (value) { + setState(() { + _selectedCountry = value; + }); + }, + ), + ); + } + + String getRelationName() { + if (_selectedRelation != null) + return _selectedRelation.text; + else + return "Select Relationship" /*TranslationBase.of(context).selectHospital*/; + } + + String getCountryName() { + if (_selectedCountry != null) + return _selectedCountry["name"]; + else + return "Country"; + } +} + +class MobileNumberTextFiled extends StatelessWidget { + const MobileNumberTextFiled({ + Key key, + this.controller, + this.code + }) : super(key: key); + + + final TextEditingController controller; + final String code; + + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(5), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), color: Colors.white), + child: Row(children: [ + Expanded( + flex: 1, + child: Icon( + Icons.phone, + color: Colors.red, + )), + Expanded( + flex: 1, + child: Text( + code.toString(), + overflow: TextOverflow.clip, + )), + Expanded( + flex: 4, + child: Container( + margin: EdgeInsets.all(5), + child: TextField( + controller: controller, + keyboardType: TextInputType.phone, + decoration: InputDecoration( + border: InputBorder.none, hintText: '5xxxxxxxx'), + ), + ), + ) + ]), + ); + } +} diff --git a/lib/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart b/lib/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart index fadf7855..0c8c6f75 100644 --- a/lib/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart +++ b/lib/pages/AlHabibMedicalService/E-Referral/select_country_ingo_Dialog.dart @@ -19,7 +19,9 @@ class SelectCountryDialog extends StatefulWidget { } class _SelectCountryDialogState extends State { - List countryList = + + // todo create a model for Country + List countryList = [ { "name": "Saudi Arabia",