diff --git a/android/app/build.gradle b/android/app/build.gradle index 807f7fad..300075a5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -23,6 +23,7 @@ if (flutterVersionName == null) { apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'com.google.gms.google-services' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { @@ -60,4 +61,5 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "com.google.firebase:firebase-messaging:20.1.0" } diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 00000000..f86832ad --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,42 @@ +{ + "project_info": { + "project_number": "815750722565", + "firebase_url": "https://api-project-815750722565.firebaseio.com", + "project_id": "api-project-815750722565", + "storage_bucket": "api-project-815750722565.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063", + "android_client_info": { + "package_name": "com.cloud.diplomaticquarterapp" + } + }, + "oauth_client": [ + { + "client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b88d5204..02c26fa6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -33,15 +33,22 @@ android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" /> + + + + + + + diff --git a/android/build.gradle b/android/build.gradle index 3100ad2d..70b3637d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,6 +8,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.3.2' } } diff --git a/android/settings_aar.gradle b/android/settings_aar.gradle new file mode 100644 index 00000000..e7b4def4 --- /dev/null +++ b/android/settings_aar.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/assets/images/habib-logo.png b/assets/images/habib-logo.png new file mode 100644 index 00000000..bcb6a42b Binary files /dev/null and b/assets/images/habib-logo.png differ diff --git a/assets/images/id_card_icon.png b/assets/images/id_card_icon.png new file mode 100644 index 00000000..96650604 Binary files /dev/null and b/assets/images/id_card_icon.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 00000000..0d9e4a56 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/my_file_white_icon.png b/assets/images/my_file_white_icon.png new file mode 100644 index 00000000..6bd9b935 Binary files /dev/null and b/assets/images/my_file_white_icon.png differ diff --git a/assets/images/new-design/BMR_calculator.png b/assets/images/new-design/BMR_calculator.png new file mode 100644 index 00000000..2c32b80d Binary files /dev/null and b/assets/images/new-design/BMR_calculator.png differ diff --git a/assets/images/new-design/Complaint_icon.png b/assets/images/new-design/Complaint_icon.png new file mode 100644 index 00000000..42af40c2 Binary files /dev/null and b/assets/images/new-design/Complaint_icon.png differ diff --git a/assets/images/new-design/active_medications.png b/assets/images/new-design/active_medications.png new file mode 100644 index 00000000..67122598 Binary files /dev/null and b/assets/images/new-design/active_medications.png differ diff --git a/assets/images/new-design/add_user_icon.png b/assets/images/new-design/add_user_icon.png new file mode 100644 index 00000000..b8a1d795 Binary files /dev/null and b/assets/images/new-design/add_user_icon.png differ diff --git a/assets/images/new-design/advance_payment.png b/assets/images/new-design/advance_payment.png new file mode 100644 index 00000000..2889e6fc Binary files /dev/null and b/assets/images/new-design/advance_payment.png differ diff --git a/assets/images/new-design/alert-triangle.png b/assets/images/new-design/alert-triangle.png new file mode 100644 index 00000000..5d8d7f25 Binary files /dev/null and b/assets/images/new-design/alert-triangle.png differ diff --git a/assets/images/new-design/alert_top-bar_icon.png b/assets/images/new-design/alert_top-bar_icon.png new file mode 100644 index 00000000..c275fca9 Binary files /dev/null and b/assets/images/new-design/alert_top-bar_icon.png differ diff --git a/assets/images/new-design/alert_top-bar_icon_red.png b/assets/images/new-design/alert_top-bar_icon_red.png new file mode 100644 index 00000000..881ab3ac Binary files /dev/null and b/assets/images/new-design/alert_top-bar_icon_red.png differ diff --git a/assets/images/new-design/ambulance.png b/assets/images/new-design/ambulance.png new file mode 100644 index 00000000..7d8a26c8 Binary files /dev/null and b/assets/images/new-design/ambulance.png differ diff --git a/assets/images/new-design/appointment_booking.png b/assets/images/new-design/appointment_booking.png new file mode 100644 index 00000000..14db8d89 Binary files /dev/null and b/assets/images/new-design/appointment_booking.png differ diff --git a/assets/images/new-design/appointment_info.png b/assets/images/new-design/appointment_info.png new file mode 100644 index 00000000..9f2b8c50 Binary files /dev/null and b/assets/images/new-design/appointment_info.png differ diff --git a/assets/images/new-design/arrow_black.png b/assets/images/new-design/arrow_black.png new file mode 100644 index 00000000..c2132d3e Binary files /dev/null and b/assets/images/new-design/arrow_black.png differ diff --git a/assets/images/new-design/arrow_menu_black-ar.png b/assets/images/new-design/arrow_menu_black-ar.png new file mode 100644 index 00000000..8774a535 Binary files /dev/null and b/assets/images/new-design/arrow_menu_black-ar.png differ diff --git a/assets/images/new-design/arrow_menu_black-en.png b/assets/images/new-design/arrow_menu_black-en.png new file mode 100644 index 00000000..0cd426dc Binary files /dev/null and b/assets/images/new-design/arrow_menu_black-en.png differ diff --git a/assets/images/new-design/arrow_menu_red.png b/assets/images/new-design/arrow_menu_red.png new file mode 100644 index 00000000..de7639ea Binary files /dev/null and b/assets/images/new-design/arrow_menu_red.png differ diff --git a/assets/images/new-design/arrow_white.png b/assets/images/new-design/arrow_white.png new file mode 100644 index 00000000..0c2fa7a4 Binary files /dev/null and b/assets/images/new-design/arrow_white.png differ diff --git a/assets/images/new-design/ask_doctor_icon.png b/assets/images/new-design/ask_doctor_icon.png new file mode 100644 index 00000000..bcb1f279 Binary files /dev/null and b/assets/images/new-design/ask_doctor_icon.png differ diff --git a/assets/images/new-design/attach-prescription.png b/assets/images/new-design/attach-prescription.png new file mode 100644 index 00000000..fc1b649b Binary files /dev/null and b/assets/images/new-design/attach-prescription.png differ diff --git a/assets/images/new-design/available_vaccines_to_bar.png b/assets/images/new-design/available_vaccines_to_bar.png new file mode 100644 index 00000000..b988355f Binary files /dev/null and b/assets/images/new-design/available_vaccines_to_bar.png differ diff --git a/assets/images/new-design/awesome-plus.png b/assets/images/new-design/awesome-plus.png new file mode 100644 index 00000000..78e432a5 Binary files /dev/null and b/assets/images/new-design/awesome-plus.png differ diff --git a/assets/images/new-design/awesome-star.png b/assets/images/new-design/awesome-star.png new file mode 100644 index 00000000..36153c59 Binary files /dev/null and b/assets/images/new-design/awesome-star.png differ diff --git a/assets/images/new-design/blood_cholesterol_icon.png b/assets/images/new-design/blood_cholesterol_icon.png new file mode 100644 index 00000000..3f1ab216 Binary files /dev/null and b/assets/images/new-design/blood_cholesterol_icon.png differ diff --git a/assets/images/new-design/blood_icon.png b/assets/images/new-design/blood_icon.png new file mode 100644 index 00000000..6d1a0c10 Binary files /dev/null and b/assets/images/new-design/blood_icon.png differ diff --git a/assets/images/new-design/blood_pressure_icon.png b/assets/images/new-design/blood_pressure_icon.png new file mode 100644 index 00000000..0d622094 Binary files /dev/null and b/assets/images/new-design/blood_pressure_icon.png differ diff --git a/assets/images/new-design/blood_sugar_icon.png b/assets/images/new-design/blood_sugar_icon.png new file mode 100644 index 00000000..6c9e8133 Binary files /dev/null and b/assets/images/new-design/blood_sugar_icon.png differ diff --git a/assets/images/new-design/blood_type.png b/assets/images/new-design/blood_type.png new file mode 100644 index 00000000..c0e09ae4 Binary files /dev/null and b/assets/images/new-design/blood_type.png differ diff --git a/assets/images/new-design/bmi_health_calculator.png b/assets/images/new-design/bmi_health_calculator.png new file mode 100644 index 00000000..2eb49440 Binary files /dev/null and b/assets/images/new-design/bmi_health_calculator.png differ diff --git a/assets/images/new-design/body_fat.png b/assets/images/new-design/body_fat.png new file mode 100644 index 00000000..3dd36150 Binary files /dev/null and b/assets/images/new-design/body_fat.png differ diff --git a/assets/images/new-design/body_icon.png b/assets/images/new-design/body_icon.png new file mode 100644 index 00000000..b9a70b2b Binary files /dev/null and b/assets/images/new-design/body_icon.png differ diff --git a/assets/images/new-design/body_mass.png b/assets/images/new-design/body_mass.png new file mode 100644 index 00000000..01cebfb8 Binary files /dev/null and b/assets/images/new-design/body_mass.png differ diff --git a/assets/images/new-design/body_mass_icon.png b/assets/images/new-design/body_mass_icon.png new file mode 100644 index 00000000..c93a31cb Binary files /dev/null and b/assets/images/new-design/body_mass_icon.png differ diff --git a/assets/images/new-design/body_weight.png b/assets/images/new-design/body_weight.png new file mode 100644 index 00000000..d1f0b324 Binary files /dev/null and b/assets/images/new-design/body_weight.png differ diff --git a/assets/images/new-design/book_appointment_arabic.png b/assets/images/new-design/book_appointment_arabic.png new file mode 100644 index 00000000..f0bc5aff Binary files /dev/null and b/assets/images/new-design/book_appointment_arabic.png differ diff --git a/assets/images/new-design/booking_icon.png b/assets/images/new-design/booking_icon.png new file mode 100644 index 00000000..8693a1fe Binary files /dev/null and b/assets/images/new-design/booking_icon.png differ diff --git a/assets/images/new-design/booking_icon_active.png b/assets/images/new-design/booking_icon_active.png new file mode 100644 index 00000000..0a829d81 Binary files /dev/null and b/assets/images/new-design/booking_icon_active.png differ diff --git a/assets/images/new-design/calendar_reminder_black_icon.svg b/assets/images/new-design/calendar_reminder_black_icon.svg new file mode 100644 index 00000000..8885e241 --- /dev/null +++ b/assets/images/new-design/calendar_reminder_black_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/new-design/calendar_reminder_red_icon.svg b/assets/images/new-design/calendar_reminder_red_icon.svg new file mode 100644 index 00000000..a4116252 --- /dev/null +++ b/assets/images/new-design/calendar_reminder_red_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/new-design/calories-calculator.png b/assets/images/new-design/calories-calculator.png new file mode 100644 index 00000000..e9d72554 Binary files /dev/null and b/assets/images/new-design/calories-calculator.png differ diff --git a/assets/images/new-design/cancel.png b/assets/images/new-design/cancel.png new file mode 100644 index 00000000..5aa51245 Binary files /dev/null and b/assets/images/new-design/cancel.png differ diff --git a/assets/images/new-design/cancel_icon.png b/assets/images/new-design/cancel_icon.png new file mode 100644 index 00000000..499170c4 Binary files /dev/null and b/assets/images/new-design/cancel_icon.png differ diff --git a/assets/images/new-design/carb_protein.png b/assets/images/new-design/carb_protein.png new file mode 100644 index 00000000..eb6c6640 Binary files /dev/null and b/assets/images/new-design/carb_protein.png differ diff --git a/assets/images/new-design/chat_with_us_icon.png b/assets/images/new-design/chat_with_us_icon.png new file mode 100644 index 00000000..6d2af727 Binary files /dev/null and b/assets/images/new-design/chat_with_us_icon.png differ diff --git a/assets/images/new-design/check-icon.png b/assets/images/new-design/check-icon.png new file mode 100644 index 00000000..669a4975 Binary files /dev/null and b/assets/images/new-design/check-icon.png differ diff --git a/assets/images/new-design/check-in.png b/assets/images/new-design/check-in.png new file mode 100644 index 00000000..8bed2242 Binary files /dev/null and b/assets/images/new-design/check-in.png differ diff --git a/assets/images/new-design/children_vaccines_icon.png b/assets/images/new-design/children_vaccines_icon.png new file mode 100644 index 00000000..c52e3b8b Binary files /dev/null and b/assets/images/new-design/children_vaccines_icon.png differ diff --git a/assets/images/new-design/clinic-wayfinding-2.png b/assets/images/new-design/clinic-wayfinding-2.png new file mode 100644 index 00000000..5ac63738 Binary files /dev/null and b/assets/images/new-design/clinic-wayfinding-2.png differ diff --git a/assets/images/new-design/close_icon.png b/assets/images/new-design/close_icon.png new file mode 100644 index 00000000..58b10630 Binary files /dev/null and b/assets/images/new-design/close_icon.png differ diff --git a/assets/images/new-design/confirm_appointment_icon.png b/assets/images/new-design/confirm_appointment_icon.png new file mode 100644 index 00000000..9918f4d5 Binary files /dev/null and b/assets/images/new-design/confirm_appointment_icon.png differ diff --git a/assets/images/new-design/confirm_button.png b/assets/images/new-design/confirm_button.png new file mode 100644 index 00000000..fc4c8587 Binary files /dev/null and b/assets/images/new-design/confirm_button.png differ diff --git a/assets/images/new-design/confirm_icon.png b/assets/images/new-design/confirm_icon.png new file mode 100644 index 00000000..d4b72de3 Binary files /dev/null and b/assets/images/new-design/confirm_icon.png differ diff --git a/assets/images/new-design/connect_to_internet_icon.png b/assets/images/new-design/connect_to_internet_icon.png new file mode 100644 index 00000000..14e7758a Binary files /dev/null and b/assets/images/new-design/connect_to_internet_icon.png differ diff --git a/assets/images/new-design/cs_logo.png b/assets/images/new-design/cs_logo.png new file mode 100644 index 00000000..fa03e4f9 Binary files /dev/null and b/assets/images/new-design/cs_logo.png differ diff --git a/assets/images/new-design/delivery_date_icon.png b/assets/images/new-design/delivery_date_icon.png new file mode 100644 index 00000000..d578be34 Binary files /dev/null and b/assets/images/new-design/delivery_date_icon.png differ diff --git a/assets/images/new-design/device_icon.png b/assets/images/new-design/device_icon.png new file mode 100644 index 00000000..8ad55c09 Binary files /dev/null and b/assets/images/new-design/device_icon.png differ diff --git a/assets/images/new-design/discount_offers.png b/assets/images/new-design/discount_offers.png new file mode 100644 index 00000000..dd4a0d05 Binary files /dev/null and b/assets/images/new-design/discount_offers.png differ diff --git a/assets/images/new-design/doctor_book_physical_appointment.png b/assets/images/new-design/doctor_book_physical_appointment.png new file mode 100644 index 00000000..16458b29 Binary files /dev/null and b/assets/images/new-design/doctor_book_physical_appointment.png differ diff --git a/assets/images/new-design/doctor_information_icon.png b/assets/images/new-design/doctor_information_icon.png new file mode 100644 index 00000000..cb210a97 Binary files /dev/null and b/assets/images/new-design/doctor_information_icon.png differ diff --git a/assets/images/new-design/doctor_qualification_icon.png b/assets/images/new-design/doctor_qualification_icon.png new file mode 100644 index 00000000..29225e6d Binary files /dev/null and b/assets/images/new-design/doctor_qualification_icon.png differ diff --git a/assets/images/new-design/doctor_video.png b/assets/images/new-design/doctor_video.png new file mode 100644 index 00000000..0e63b22d Binary files /dev/null and b/assets/images/new-design/doctor_video.png differ diff --git a/assets/images/new-design/download_pharmacy_app.png b/assets/images/new-design/download_pharmacy_app.png new file mode 100644 index 00000000..89c64085 Binary files /dev/null and b/assets/images/new-design/download_pharmacy_app.png differ diff --git a/assets/images/new-design/emergency_icon.png b/assets/images/new-design/emergency_icon.png new file mode 100644 index 00000000..8c5ccd85 Binary files /dev/null and b/assets/images/new-design/emergency_icon.png differ diff --git a/assets/images/new-design/emergency_videocall_icon.png b/assets/images/new-design/emergency_videocall_icon.png new file mode 100644 index 00000000..0f67e245 Binary files /dev/null and b/assets/images/new-design/emergency_videocall_icon.png differ diff --git a/assets/images/new-design/envelop_icon.png b/assets/images/new-design/envelop_icon.png new file mode 100644 index 00000000..86f21eb5 Binary files /dev/null and b/assets/images/new-design/envelop_icon.png differ diff --git a/assets/images/new-design/eye_measurement_icon.png b/assets/images/new-design/eye_measurement_icon.png new file mode 100644 index 00000000..ca0c5d4b Binary files /dev/null and b/assets/images/new-design/eye_measurement_icon.png differ diff --git a/assets/images/new-design/facebook.png b/assets/images/new-design/facebook.png new file mode 100644 index 00000000..cb93d64a Binary files /dev/null and b/assets/images/new-design/facebook.png differ diff --git a/assets/images/new-design/family_icon_bottom_bar.png b/assets/images/new-design/family_icon_bottom_bar.png new file mode 100644 index 00000000..f6be8edf Binary files /dev/null and b/assets/images/new-design/family_icon_bottom_bar.png differ diff --git a/assets/images/new-design/family_member_icon_active.png b/assets/images/new-design/family_member_icon_active.png new file mode 100644 index 00000000..5806c872 Binary files /dev/null and b/assets/images/new-design/family_member_icon_active.png differ diff --git a/assets/images/new-design/family_member_icon_inactive.png b/assets/images/new-design/family_member_icon_inactive.png new file mode 100644 index 00000000..59f6c912 Binary files /dev/null and b/assets/images/new-design/family_member_icon_inactive.png differ diff --git a/assets/images/new-design/family_menu_icon_red.png b/assets/images/new-design/family_menu_icon_red.png new file mode 100644 index 00000000..7d55094e Binary files /dev/null and b/assets/images/new-design/family_menu_icon_red.png differ diff --git a/assets/images/new-design/feedback_icon.png b/assets/images/new-design/feedback_icon.png new file mode 100644 index 00000000..138ce41d Binary files /dev/null and b/assets/images/new-design/feedback_icon.png differ diff --git a/assets/images/new-design/female_face.png b/assets/images/new-design/female_face.png new file mode 100644 index 00000000..be8ed225 Binary files /dev/null and b/assets/images/new-design/female_face.png differ diff --git a/assets/images/new-design/find_us_icon.png b/assets/images/new-design/find_us_icon.png new file mode 100644 index 00000000..d2666cd4 Binary files /dev/null and b/assets/images/new-design/find_us_icon.png differ diff --git a/assets/images/new-design/health_calculator_general.png b/assets/images/new-design/health_calculator_general.png new file mode 100644 index 00000000..2cc02679 Binary files /dev/null and b/assets/images/new-design/health_calculator_general.png differ diff --git a/assets/images/new-design/health_calculator_icon.png b/assets/images/new-design/health_calculator_icon.png new file mode 100644 index 00000000..f2a3fcfb Binary files /dev/null and b/assets/images/new-design/health_calculator_icon.png differ diff --git a/assets/images/new-design/health_calculator_women.png b/assets/images/new-design/health_calculator_women.png new file mode 100644 index 00000000..2c292444 Binary files /dev/null and b/assets/images/new-design/health_calculator_women.png differ diff --git a/assets/images/new-design/health_convertor_icon.png b/assets/images/new-design/health_convertor_icon.png new file mode 100644 index 00000000..903a490c Binary files /dev/null and b/assets/images/new-design/health_convertor_icon.png differ diff --git a/assets/images/new-design/heart_icon.png b/assets/images/new-design/heart_icon.png new file mode 100644 index 00000000..1cf02faf Binary files /dev/null and b/assets/images/new-design/heart_icon.png differ diff --git a/assets/images/new-design/height.png b/assets/images/new-design/height.png new file mode 100644 index 00000000..718f8a5d Binary files /dev/null and b/assets/images/new-design/height.png differ diff --git a/assets/images/new-design/height_icon.png b/assets/images/new-design/height_icon.png new file mode 100644 index 00000000..a3a8575f Binary files /dev/null and b/assets/images/new-design/height_icon.png differ diff --git a/assets/images/new-design/history_icon.png b/assets/images/new-design/history_icon.png new file mode 100644 index 00000000..8ef33358 Binary files /dev/null and b/assets/images/new-design/history_icon.png differ diff --git a/assets/images/new-design/hmg_full_logo.png b/assets/images/new-design/hmg_full_logo.png new file mode 100644 index 00000000..1449d28d Binary files /dev/null and b/assets/images/new-design/hmg_full_logo.png differ diff --git a/assets/images/new-design/hmg_services.png b/assets/images/new-design/hmg_services.png new file mode 100644 index 00000000..5892dd84 Binary files /dev/null and b/assets/images/new-design/hmg_services.png differ diff --git a/assets/images/new-design/hmg_services_ar.png b/assets/images/new-design/hmg_services_ar.png new file mode 100644 index 00000000..da5a5085 Binary files /dev/null and b/assets/images/new-design/hmg_services_ar.png differ diff --git a/assets/images/new-design/home_bottom_bar.png b/assets/images/new-design/home_bottom_bar.png new file mode 100644 index 00000000..49f4e84a Binary files /dev/null and b/assets/images/new-design/home_bottom_bar.png differ diff --git a/assets/images/new-design/home_bottom_bar_active.png b/assets/images/new-design/home_bottom_bar_active.png new file mode 100644 index 00000000..ce642d0b Binary files /dev/null and b/assets/images/new-design/home_bottom_bar_active.png differ diff --git a/assets/images/new-design/hospital_address_icon.png b/assets/images/new-design/hospital_address_icon.png new file mode 100644 index 00000000..8f151087 Binary files /dev/null and b/assets/images/new-design/hospital_address_icon.png differ diff --git a/assets/images/new-design/icon_check_list.png b/assets/images/new-design/icon_check_list.png new file mode 100644 index 00000000..1fc5ab3e Binary files /dev/null and b/assets/images/new-design/icon_check_list.png differ diff --git a/assets/images/new-design/icon_hospital.png b/assets/images/new-design/icon_hospital.png new file mode 100644 index 00000000..413ad813 Binary files /dev/null and b/assets/images/new-design/icon_hospital.png differ diff --git a/assets/images/new-design/info-icon.png b/assets/images/new-design/info-icon.png new file mode 100644 index 00000000..49b1bc44 Binary files /dev/null and b/assets/images/new-design/info-icon.png differ diff --git a/assets/images/new-design/info_icon copy.png b/assets/images/new-design/info_icon copy.png new file mode 100644 index 00000000..49b1bc44 Binary files /dev/null and b/assets/images/new-design/info_icon copy.png differ diff --git a/assets/images/new-design/input_calendar_icon.png b/assets/images/new-design/input_calendar_icon.png new file mode 100644 index 00000000..d3a51014 Binary files /dev/null and b/assets/images/new-design/input_calendar_icon.png differ diff --git a/assets/images/new-design/input_clock_icon.png b/assets/images/new-design/input_clock_icon.png new file mode 100644 index 00000000..67b15715 Binary files /dev/null and b/assets/images/new-design/input_clock_icon.png differ diff --git a/assets/images/new-design/insurance_approvals_icon.png b/assets/images/new-design/insurance_approvals_icon.png new file mode 100644 index 00000000..593dab33 Binary files /dev/null and b/assets/images/new-design/insurance_approvals_icon.png differ diff --git a/assets/images/new-design/insurance_card_icon.png b/assets/images/new-design/insurance_card_icon.png new file mode 100644 index 00000000..a7bacca5 Binary files /dev/null and b/assets/images/new-design/insurance_card_icon.png differ diff --git a/assets/images/new-design/ionic-ios-eye.png b/assets/images/new-design/ionic-ios-eye.png new file mode 100644 index 00000000..93eabdfc Binary files /dev/null and b/assets/images/new-design/ionic-ios-eye.png differ diff --git a/assets/images/new-design/lab_result_icon.png b/assets/images/new-design/lab_result_icon.png new file mode 100644 index 00000000..60b14ca8 Binary files /dev/null and b/assets/images/new-design/lab_result_icon.png differ diff --git a/assets/images/new-design/lakum_icon.png b/assets/images/new-design/lakum_icon.png new file mode 100644 index 00000000..eab11b56 Binary files /dev/null and b/assets/images/new-design/lakum_icon.png differ diff --git a/assets/images/new-design/linkedin.png b/assets/images/new-design/linkedin.png new file mode 100644 index 00000000..1f35f836 Binary files /dev/null and b/assets/images/new-design/linkedin.png differ diff --git a/assets/images/new-design/list-icon-down.png b/assets/images/new-design/list-icon-down.png new file mode 100644 index 00000000..02c73b5b Binary files /dev/null and b/assets/images/new-design/list-icon-down.png differ diff --git a/assets/images/new-design/list-icon-up.png b/assets/images/new-design/list-icon-up.png new file mode 100644 index 00000000..eb6a6019 Binary files /dev/null and b/assets/images/new-design/list-icon-up.png differ diff --git a/assets/images/new-design/liveCare_ar_bg.png b/assets/images/new-design/liveCare_ar_bg.png new file mode 100644 index 00000000..d29186ae Binary files /dev/null and b/assets/images/new-design/liveCare_ar_bg.png differ diff --git a/assets/images/new-design/liveCare_en_bg.png b/assets/images/new-design/liveCare_en_bg.png new file mode 100644 index 00000000..b0799af0 Binary files /dev/null and b/assets/images/new-design/liveCare_en_bg.png differ diff --git a/assets/images/new-design/live_chat_icon.png b/assets/images/new-design/live_chat_icon.png new file mode 100644 index 00000000..461a1e83 Binary files /dev/null and b/assets/images/new-design/live_chat_icon.png differ diff --git a/assets/images/new-design/loader.gif b/assets/images/new-design/loader.gif new file mode 100644 index 00000000..8fe79bf9 Binary files /dev/null and b/assets/images/new-design/loader.gif differ diff --git a/assets/images/new-design/location-sharp.png b/assets/images/new-design/location-sharp.png new file mode 100644 index 00000000..9682fde1 Binary files /dev/null and b/assets/images/new-design/location-sharp.png differ diff --git a/assets/images/new-design/location_icon.png b/assets/images/new-design/location_icon.png new file mode 100644 index 00000000..f4ccb0e2 Binary files /dev/null and b/assets/images/new-design/location_icon.png differ diff --git a/assets/images/new-design/lock_icon.png b/assets/images/new-design/lock_icon.png new file mode 100644 index 00000000..bf8c6aed Binary files /dev/null and b/assets/images/new-design/lock_icon.png differ diff --git a/assets/images/new-design/main_user_icon_active.png b/assets/images/new-design/main_user_icon_active.png new file mode 100644 index 00000000..d1005e17 Binary files /dev/null and b/assets/images/new-design/main_user_icon_active.png differ diff --git a/assets/images/new-design/main_user_icon_inaactive.png b/assets/images/new-design/main_user_icon_inaactive.png new file mode 100644 index 00000000..b203d151 Binary files /dev/null and b/assets/images/new-design/main_user_icon_inaactive.png differ diff --git a/assets/images/new-design/male_face.png b/assets/images/new-design/male_face.png new file mode 100644 index 00000000..7adf335a Binary files /dev/null and b/assets/images/new-design/male_face.png differ diff --git a/assets/images/new-design/medical_reports_icon.png b/assets/images/new-design/medical_reports_icon.png new file mode 100644 index 00000000..ad9c9f7b Binary files /dev/null and b/assets/images/new-design/medical_reports_icon.png differ diff --git a/assets/images/new-design/medical_services.png b/assets/images/new-design/medical_services.png new file mode 100644 index 00000000..596ac34e Binary files /dev/null and b/assets/images/new-design/medical_services.png differ diff --git a/assets/images/new-design/medical_services_ar.png b/assets/images/new-design/medical_services_ar.png new file mode 100644 index 00000000..082fe5fa Binary files /dev/null and b/assets/images/new-design/medical_services_ar.png differ diff --git a/assets/images/new-design/medication-refill.png b/assets/images/new-design/medication-refill.png new file mode 100644 index 00000000..fec82538 Binary files /dev/null and b/assets/images/new-design/medication-refill.png differ diff --git a/assets/images/new-design/medicine_prescriptions_icon.png b/assets/images/new-design/medicine_prescriptions_icon.png new file mode 100644 index 00000000..a4022770 Binary files /dev/null and b/assets/images/new-design/medicine_prescriptions_icon.png differ diff --git a/assets/images/new-design/monthly_reports_icon.png b/assets/images/new-design/monthly_reports_icon.png new file mode 100644 index 00000000..5d51e24c Binary files /dev/null and b/assets/images/new-design/monthly_reports_icon.png differ diff --git a/assets/images/new-design/more_icon.png b/assets/images/new-design/more_icon.png new file mode 100644 index 00000000..b696d345 Binary files /dev/null and b/assets/images/new-design/more_icon.png differ diff --git a/assets/images/new-design/my-prescription.png b/assets/images/new-design/my-prescription.png new file mode 100644 index 00000000..077c3453 Binary files /dev/null and b/assets/images/new-design/my-prescription.png differ diff --git a/assets/images/new-design/my_allergies_icon.png b/assets/images/new-design/my_allergies_icon.png new file mode 100644 index 00000000..689b5321 Binary files /dev/null and b/assets/images/new-design/my_allergies_icon.png differ diff --git a/assets/images/new-design/my_appointment_icon.png b/assets/images/new-design/my_appointment_icon.png new file mode 100644 index 00000000..94439627 Binary files /dev/null and b/assets/images/new-design/my_appointment_icon.png differ diff --git a/assets/images/new-design/my_doctor_icon.png b/assets/images/new-design/my_doctor_icon.png new file mode 100644 index 00000000..4043d64a Binary files /dev/null and b/assets/images/new-design/my_doctor_icon.png differ diff --git a/assets/images/new-design/my_file_bottom_bar.png b/assets/images/new-design/my_file_bottom_bar.png new file mode 100644 index 00000000..c89455c2 Binary files /dev/null and b/assets/images/new-design/my_file_bottom_bar.png differ diff --git a/assets/images/new-design/my_file_bottom_bar_active.png b/assets/images/new-design/my_file_bottom_bar_active.png new file mode 100644 index 00000000..d00e22c3 Binary files /dev/null and b/assets/images/new-design/my_file_bottom_bar_active.png differ diff --git a/assets/images/new-design/my_tracker_icon.png b/assets/images/new-design/my_tracker_icon.png new file mode 100644 index 00000000..1d46b859 Binary files /dev/null and b/assets/images/new-design/my_tracker_icon.png differ diff --git a/assets/images/new-design/my_vaccines_icon.png b/assets/images/new-design/my_vaccines_icon.png new file mode 100644 index 00000000..23a7352b Binary files /dev/null and b/assets/images/new-design/my_vaccines_icon.png differ diff --git a/assets/images/new-design/no-wait-queue.png b/assets/images/new-design/no-wait-queue.png new file mode 100644 index 00000000..d87a172f Binary files /dev/null and b/assets/images/new-design/no-wait-queue.png differ diff --git a/assets/images/new-design/online_payment_icon.png b/assets/images/new-design/online_payment_icon.png new file mode 100644 index 00000000..6e167ace Binary files /dev/null and b/assets/images/new-design/online_payment_icon.png differ diff --git a/assets/images/new-design/ovulation_period_icon.png b/assets/images/new-design/ovulation_period_icon.png new file mode 100644 index 00000000..c9a075d3 Binary files /dev/null and b/assets/images/new-design/ovulation_period_icon.png differ diff --git a/assets/images/new-design/parking_system_icon.png b/assets/images/new-design/parking_system_icon.png new file mode 100644 index 00000000..d4f26181 Binary files /dev/null and b/assets/images/new-design/parking_system_icon.png differ diff --git a/assets/images/new-design/patient_call_icon.png b/assets/images/new-design/patient_call_icon.png new file mode 100644 index 00000000..51b286e7 Binary files /dev/null and b/assets/images/new-design/patient_call_icon.png differ diff --git a/assets/images/new-design/patient_referral_icon.png b/assets/images/new-design/patient_referral_icon.png new file mode 100644 index 00000000..8d417b73 Binary files /dev/null and b/assets/images/new-design/patient_referral_icon.png differ diff --git a/assets/images/new-design/pay_now.png b/assets/images/new-design/pay_now.png new file mode 100644 index 00000000..6096d8b9 Binary files /dev/null and b/assets/images/new-design/pay_now.png differ diff --git a/assets/images/new-design/pay_online_button.png b/assets/images/new-design/pay_online_button.png new file mode 100644 index 00000000..988e1ace Binary files /dev/null and b/assets/images/new-design/pay_online_button.png differ diff --git a/assets/images/new-design/pay_online_button_arabic.png b/assets/images/new-design/pay_online_button_arabic.png new file mode 100644 index 00000000..1c49fc17 Binary files /dev/null and b/assets/images/new-design/pay_online_button_arabic.png differ diff --git a/assets/images/new-design/payment-method.png b/assets/images/new-design/payment-method.png new file mode 100644 index 00000000..a6b9f863 Binary files /dev/null and b/assets/images/new-design/payment-method.png differ diff --git a/assets/images/new-design/payment_options_invoice_confirmation.png b/assets/images/new-design/payment_options_invoice_confirmation.png new file mode 100644 index 00000000..4bb83fec Binary files /dev/null and b/assets/images/new-design/payment_options_invoice_confirmation.png differ diff --git a/assets/images/new-design/pharmacy_icon.png b/assets/images/new-design/pharmacy_icon.png new file mode 100644 index 00000000..141583ee Binary files /dev/null and b/assets/images/new-design/pharmacy_icon.png differ diff --git a/assets/images/new-design/qr-code.png b/assets/images/new-design/qr-code.png new file mode 100644 index 00000000..1135f7fa Binary files /dev/null and b/assets/images/new-design/qr-code.png differ diff --git a/assets/images/new-design/qr_code_button.png b/assets/images/new-design/qr_code_button.png new file mode 100644 index 00000000..7cd41d4c Binary files /dev/null and b/assets/images/new-design/qr_code_button.png differ diff --git a/assets/images/new-design/radiology_service_icon.png b/assets/images/new-design/radiology_service_icon.png new file mode 100644 index 00000000..9ff23309 Binary files /dev/null and b/assets/images/new-design/radiology_service_icon.png differ diff --git a/assets/images/new-design/refresh_icon.png b/assets/images/new-design/refresh_icon.png new file mode 100644 index 00000000..c9b2db7d Binary files /dev/null and b/assets/images/new-design/refresh_icon.png differ diff --git a/assets/images/new-design/reminder_icon.png b/assets/images/new-design/reminder_icon.png new file mode 100644 index 00000000..c280d7d0 Binary files /dev/null and b/assets/images/new-design/reminder_icon.png differ diff --git a/assets/images/new-design/remove_icon.png b/assets/images/new-design/remove_icon.png new file mode 100644 index 00000000..4a8f9479 Binary files /dev/null and b/assets/images/new-design/remove_icon.png differ diff --git a/assets/images/new-design/reschedule_icon.png b/assets/images/new-design/reschedule_icon.png new file mode 100644 index 00000000..d04a5b49 Binary files /dev/null and b/assets/images/new-design/reschedule_icon.png differ diff --git a/assets/images/new-design/respiration.png b/assets/images/new-design/respiration.png new file mode 100644 index 00000000..944d65aa Binary files /dev/null and b/assets/images/new-design/respiration.png differ diff --git a/assets/images/new-design/respirtation_icon.png b/assets/images/new-design/respirtation_icon.png new file mode 100644 index 00000000..75cd719d Binary files /dev/null and b/assets/images/new-design/respirtation_icon.png differ diff --git a/assets/images/new-design/rotate_icon.png b/assets/images/new-design/rotate_icon.png new file mode 100644 index 00000000..1593fe75 Binary files /dev/null and b/assets/images/new-design/rotate_icon.png differ diff --git a/assets/images/new-design/schedule.png b/assets/images/new-design/schedule.png new file mode 100644 index 00000000..a8a78432 Binary files /dev/null and b/assets/images/new-design/schedule.png differ diff --git a/assets/images/new-design/schedule_icon.png b/assets/images/new-design/schedule_icon.png new file mode 100644 index 00000000..555dcd23 Binary files /dev/null and b/assets/images/new-design/schedule_icon.png differ diff --git a/assets/images/new-design/scheduled_reminder.png b/assets/images/new-design/scheduled_reminder.png new file mode 100644 index 00000000..40254fb4 Binary files /dev/null and b/assets/images/new-design/scheduled_reminder.png differ diff --git a/assets/images/new-design/search_by_clinic.png b/assets/images/new-design/search_by_clinic.png new file mode 100644 index 00000000..92964cb3 Binary files /dev/null and b/assets/images/new-design/search_by_clinic.png differ diff --git a/assets/images/new-design/search_by_disease.png b/assets/images/new-design/search_by_disease.png new file mode 100644 index 00000000..b55b2c67 Binary files /dev/null and b/assets/images/new-design/search_by_disease.png differ diff --git a/assets/images/new-design/search_by_doctor.png b/assets/images/new-design/search_by_doctor.png new file mode 100644 index 00000000..f261e6cf Binary files /dev/null and b/assets/images/new-design/search_by_doctor.png differ diff --git a/assets/images/new-design/search_by_symptom.png b/assets/images/new-design/search_by_symptom.png new file mode 100644 index 00000000..551f6ec8 Binary files /dev/null and b/assets/images/new-design/search_by_symptom.png differ diff --git a/assets/images/new-design/search_medicine.png b/assets/images/new-design/search_medicine.png new file mode 100644 index 00000000..f4a1c675 Binary files /dev/null and b/assets/images/new-design/search_medicine.png differ diff --git a/assets/images/new-design/send-email.png b/assets/images/new-design/send-email.png new file mode 100644 index 00000000..86f21eb5 Binary files /dev/null and b/assets/images/new-design/send-email.png differ diff --git a/assets/images/new-design/setting_gear_icon.png b/assets/images/new-design/setting_gear_icon.png new file mode 100644 index 00000000..ac1f0bc4 Binary files /dev/null and b/assets/images/new-design/setting_gear_icon.png differ diff --git a/assets/images/new-design/setting_menu_icon.png b/assets/images/new-design/setting_menu_icon.png new file mode 100644 index 00000000..d4f60540 Binary files /dev/null and b/assets/images/new-design/setting_menu_icon.png differ diff --git a/assets/images/new-design/sick_leaves_icons.png b/assets/images/new-design/sick_leaves_icons.png new file mode 100644 index 00000000..67a9c937 Binary files /dev/null and b/assets/images/new-design/sick_leaves_icons.png differ diff --git a/assets/images/new-design/sign_in_main_icon.png b/assets/images/new-design/sign_in_main_icon.png new file mode 100644 index 00000000..9938f32e Binary files /dev/null and b/assets/images/new-design/sign_in_main_icon.png differ diff --git a/assets/images/new-design/sign_out_menu_icon.png b/assets/images/new-design/sign_out_menu_icon.png new file mode 100644 index 00000000..e5bc35a4 Binary files /dev/null and b/assets/images/new-design/sign_out_menu_icon.png differ diff --git a/assets/images/new-design/smartwatch_icon.png b/assets/images/new-design/smartwatch_icon.png new file mode 100644 index 00000000..c43fe468 Binary files /dev/null and b/assets/images/new-design/smartwatch_icon.png differ diff --git a/assets/images/new-design/star_icon.png b/assets/images/new-design/star_icon.png new file mode 100644 index 00000000..95923936 Binary files /dev/null and b/assets/images/new-design/star_icon.png differ diff --git a/assets/images/new-design/star_rate_menu_icon.png b/assets/images/new-design/star_rate_menu_icon.png new file mode 100644 index 00000000..207b1f71 Binary files /dev/null and b/assets/images/new-design/star_rate_menu_icon.png differ diff --git a/assets/images/new-design/success_icon.png b/assets/images/new-design/success_icon.png new file mode 100644 index 00000000..617cbe89 Binary files /dev/null and b/assets/images/new-design/success_icon.png differ diff --git a/assets/images/new-design/temperature.png b/assets/images/new-design/temperature.png new file mode 100644 index 00000000..22bf5241 Binary files /dev/null and b/assets/images/new-design/temperature.png differ diff --git a/assets/images/new-design/temperature_icon.png b/assets/images/new-design/temperature_icon.png new file mode 100644 index 00000000..5d5d1203 Binary files /dev/null and b/assets/images/new-design/temperature_icon.png differ diff --git a/assets/images/new-design/time_icon.png b/assets/images/new-design/time_icon.png new file mode 100644 index 00000000..58ad960b Binary files /dev/null and b/assets/images/new-design/time_icon.png differ diff --git a/assets/images/new-design/triglycerides_blood_icon.png b/assets/images/new-design/triglycerides_blood_icon.png new file mode 100644 index 00000000..b3bebf9e Binary files /dev/null and b/assets/images/new-design/triglycerides_blood_icon.png differ diff --git a/assets/images/new-design/twitter.png b/assets/images/new-design/twitter.png new file mode 100644 index 00000000..823546e7 Binary files /dev/null and b/assets/images/new-design/twitter.png differ diff --git a/assets/images/new-design/twitter_dashboard_icon.png b/assets/images/new-design/twitter_dashboard_icon.png new file mode 100644 index 00000000..5d0a0646 Binary files /dev/null and b/assets/images/new-design/twitter_dashboard_icon.png differ diff --git a/assets/images/new-design/upcoming_icon_bottom_bar.png b/assets/images/new-design/upcoming_icon_bottom_bar.png new file mode 100644 index 00000000..ad0a4804 Binary files /dev/null and b/assets/images/new-design/upcoming_icon_bottom_bar.png differ diff --git a/assets/images/new-design/upcoming_icon_bottom_bar_active.png b/assets/images/new-design/upcoming_icon_bottom_bar_active.png new file mode 100644 index 00000000..cccb9652 Binary files /dev/null and b/assets/images/new-design/upcoming_icon_bottom_bar_active.png differ diff --git a/assets/images/new-design/user_top_bar_icon.png b/assets/images/new-design/user_top_bar_icon.png new file mode 100644 index 00000000..9b7b9a59 Binary files /dev/null and b/assets/images/new-design/user_top_bar_icon.png differ diff --git a/assets/images/new-design/vaccines_availability_icon.png b/assets/images/new-design/vaccines_availability_icon.png new file mode 100644 index 00000000..1bd6f8b3 Binary files /dev/null and b/assets/images/new-design/vaccines_availability_icon.png differ diff --git a/assets/images/new-design/vida_logo.jpg b/assets/images/new-design/vida_logo.jpg new file mode 100644 index 00000000..5fcec65c Binary files /dev/null and b/assets/images/new-design/vida_logo.jpg differ diff --git a/assets/images/new-design/video_call_book_icon.png b/assets/images/new-design/video_call_book_icon.png new file mode 100644 index 00000000..e4db4a57 Binary files /dev/null and b/assets/images/new-design/video_call_book_icon.png differ diff --git a/assets/images/new-design/video_call_instruction.png b/assets/images/new-design/video_call_instruction.png new file mode 100644 index 00000000..eef9996c Binary files /dev/null and b/assets/images/new-design/video_call_instruction.png differ diff --git a/assets/images/new-design/virtal_respiration.png b/assets/images/new-design/virtal_respiration.png new file mode 100644 index 00000000..7e1b4466 Binary files /dev/null and b/assets/images/new-design/virtal_respiration.png differ diff --git a/assets/images/new-design/virtal_weight.png b/assets/images/new-design/virtal_weight.png new file mode 100644 index 00000000..5247e924 Binary files /dev/null and b/assets/images/new-design/virtal_weight.png differ diff --git a/assets/images/new-design/virtual_appointment_icon.png b/assets/images/new-design/virtual_appointment_icon.png new file mode 100644 index 00000000..f91046c6 Binary files /dev/null and b/assets/images/new-design/virtual_appointment_icon.png differ diff --git a/assets/images/new-design/virtual_tour_icon.png b/assets/images/new-design/virtual_tour_icon.png new file mode 100644 index 00000000..541603ea Binary files /dev/null and b/assets/images/new-design/virtual_tour_icon.png differ diff --git a/assets/images/new-design/vital_blood-pressure.png b/assets/images/new-design/vital_blood-pressure.png new file mode 100644 index 00000000..44c9f2e2 Binary files /dev/null and b/assets/images/new-design/vital_blood-pressure.png differ diff --git a/assets/images/new-design/vital_blood_type.png b/assets/images/new-design/vital_blood_type.png new file mode 100644 index 00000000..fbb5296f Binary files /dev/null and b/assets/images/new-design/vital_blood_type.png differ diff --git a/assets/images/new-design/vital_body_mass.png b/assets/images/new-design/vital_body_mass.png new file mode 100644 index 00000000..08476c51 Binary files /dev/null and b/assets/images/new-design/vital_body_mass.png differ diff --git a/assets/images/new-design/vital_heart_rate.png b/assets/images/new-design/vital_heart_rate.png new file mode 100644 index 00000000..e788658b Binary files /dev/null and b/assets/images/new-design/vital_heart_rate.png differ diff --git a/assets/images/new-design/vital_height.png b/assets/images/new-design/vital_height.png new file mode 100644 index 00000000..8c324b2c Binary files /dev/null and b/assets/images/new-design/vital_height.png differ diff --git a/assets/images/new-design/vital_signs.png b/assets/images/new-design/vital_signs.png new file mode 100644 index 00000000..7b642d6e Binary files /dev/null and b/assets/images/new-design/vital_signs.png differ diff --git a/assets/images/new-design/vital_temperature .png b/assets/images/new-design/vital_temperature .png new file mode 100644 index 00000000..7fe657de Binary files /dev/null and b/assets/images/new-design/vital_temperature .png differ diff --git a/assets/images/new-design/waiting-room.png b/assets/images/new-design/waiting-room.png new file mode 100644 index 00000000..02a9650c Binary files /dev/null and b/assets/images/new-design/waiting-room.png differ diff --git a/assets/images/new-design/water_icon.png b/assets/images/new-design/water_icon.png new file mode 100644 index 00000000..9e9ccf5d Binary files /dev/null and b/assets/images/new-design/water_icon.png differ diff --git a/assets/images/new-design/weather_dashboard_icon.png b/assets/images/new-design/weather_dashboard_icon.png new file mode 100644 index 00000000..2a73dfac Binary files /dev/null and b/assets/images/new-design/weather_dashboard_icon.png differ diff --git a/assets/images/new-design/youtube.png b/assets/images/new-design/youtube.png new file mode 100644 index 00000000..7c8c847b Binary files /dev/null and b/assets/images/new-design/youtube.png differ diff --git a/assets/json/bookedAllowCheckInButtons.json b/assets/json/bookedAllowCheckInButtons.json new file mode 100644 index 00000000..e969da5a --- /dev/null +++ b/assets/json/bookedAllowCheckInButtons.json @@ -0,0 +1,44 @@ +[ + { + "title": "confirm", + "subtitle": "appointment", + "icon": "assets/images/new-design/confirm_icon.png", + "caller": "confirmAppointment" + }, + { + "title": "reschedule", + "subtitle": "appointment", + "icon": "assets/images/new-design/reschedule_icon.png", + "caller": "openReschedule" + }, + { + "title": "cancel", + "subtitle": "appointment", + "icon": "assets/images/new-design/cancel_icon.png", + "caller": "onCancelAppointment" + }, + { + "title": "raise", + "subtitle": "complaint", + "icon": "assets/images/new-design/Complaint_icon.png", + "caller": "insertComplaint" + }, + { + "title": "add", + "subtitle": "reminder", + "icon": "assets/images/new-design/reminder_icon.png", + "caller": "addReminder" + }, + { + "title": "hospital", + "subtitle": "locations", + "icon": "assets/images/new-design/location_icon.png", + "caller": "navigateToProject" + }, + { + "title": "online", + "subtitle": "payment", + "icon": "assets/images/new-design/check-in.png", + "caller": "goToTodoList(31)" + } +] \ No newline at end of file diff --git a/assets/json/bookedButtons.json b/assets/json/bookedButtons.json new file mode 100644 index 00000000..e34718e2 --- /dev/null +++ b/assets/json/bookedButtons.json @@ -0,0 +1,38 @@ +[ + { + "title": "confirm", + "subtitle": "appointment", + "icon": "assets/images/new-design/confirm_icon.png", + "caller": "confirmAppointment" + }, + { + "title": "reschedule", + "subtitle": "appointment", + "icon": "assets/images/new-design/reschedule_icon.png", + "caller": "openReschedule" + }, + { + "title": "cancel", + "subtitle": "appointment", + "icon": "assets/images/new-design/cancel_icon.png", + "caller": "onCancelAppointment" + }, + { + "title": "raise", + "subtitle": "complaint", + "icon": "assets/images/new-design/Complaint_icon.png", + "caller": "insertComplaint" + }, + { + "title": "add", + "subtitle": "reminder", + "icon": "assets/images/new-design/reminder_icon.png", + "caller": "addReminder" + }, + { + "title": "hospital", + "subtitle": "locations", + "icon": "assets/images/new-design/location_icon.png", + "caller": "navigateToProject" + } +] \ No newline at end of file diff --git a/assets/json/freeSlots.json b/assets/json/freeSlots.json new file mode 100644 index 00000000..f7dfadc0 --- /dev/null +++ b/assets/json/freeSlots.json @@ -0,0 +1,4414 @@ +{ + "FreeTimeSlots": [ + "/Date(1594708200000+0300)/", + "/Date(1594709100000+0300)/", + "/Date(1594710000000+0300)/", + "/Date(1594710900000+0300)/", + "/Date(1594711800000+0300)/", + "/Date(1594712700000+0300)/", + "/Date(1594713600000+0300)/", + "/Date(1594718100000+0300)/", + "/Date(1594719000000+0300)/", + "/Date(1594719900000+0300)/", + "/Date(1594720800000+0300)/", + "/Date(1594722600000+0300)/", + "/Date(1594723500000+0300)/", + "/Date(1594724400000+0300)/", + "/Date(1594725300000+0300)/", + "/Date(1594727100000+0300)/", + "/Date(1594728000000+0300)/", + "/Date(1594728900000+0300)/", + "/Date(1594729800000+0300)/", + "/Date(1594730700000+0300)/", + "/Date(1594731600000+0300)/", + "/Date(1594732500000+0300)/", + "/Date(1594733400000+0300)/", + "/Date(1594791000000+0300)/", + "/Date(1594791900000+0300)/", + "/Date(1594792800000+0300)/", + "/Date(1594793700000+0300)/", + "/Date(1594794600000+0300)/", + "/Date(1594795500000+0300)/", + "/Date(1594796400000+0300)/", + "/Date(1594797300000+0300)/", + "/Date(1594798200000+0300)/", + "/Date(1594799100000+0300)/", + "/Date(1594800000000+0300)/", + "/Date(1594800900000+0300)/", + "/Date(1594801800000+0300)/", + "/Date(1594802700000+0300)/", + "/Date(1594803600000+0300)/", + "/Date(1594804500000+0300)/", + "/Date(1594805400000+0300)/", + "/Date(1594806300000+0300)/", + "/Date(1594807200000+0300)/", + "/Date(1594808100000+0300)/", + "/Date(1594809000000+0300)/", + "/Date(1594809900000+0300)/", + "/Date(1594810800000+0300)/", + "/Date(1594811700000+0300)/", + "/Date(1594812600000+0300)/", + "/Date(1594813500000+0300)/", + "/Date(1594814400000+0300)/", + "/Date(1594815300000+0300)/", + "/Date(1594816200000+0300)/", + "/Date(1594817100000+0300)/", + "/Date(1594818000000+0300)/", + "/Date(1594818900000+0300)/", + "/Date(1594819800000+0300)/", + "/Date(1594820700000+0300)/", + "/Date(1594878300000+0300)/", + "/Date(1594879200000+0300)/", + "/Date(1594880100000+0300)/", + "/Date(1594881000000+0300)/", + "/Date(1594881900000+0300)/", + "/Date(1594882800000+0300)/", + "/Date(1594883700000+0300)/", + "/Date(1594884600000+0300)/", + "/Date(1594885500000+0300)/", + "/Date(1594886400000+0300)/", + "/Date(1594887300000+0300)/", + "/Date(1594888200000+0300)/", + "/Date(1594889100000+0300)/", + "/Date(1594890000000+0300)/", + "/Date(1594890900000+0300)/", + "/Date(1594891800000+0300)/", + "/Date(1594892700000+0300)/", + "/Date(1594893600000+0300)/", + "/Date(1594894500000+0300)/", + "/Date(1594980900000+0300)/", + "/Date(1594981800000+0300)/", + "/Date(1594982700000+0300)/", + "/Date(1594983600000+0300)/", + "/Date(1594984500000+0300)/", + "/Date(1594986300000+0300)/", + "/Date(1594987200000+0300)/", + "/Date(1594988100000+0300)/", + "/Date(1594989000000+0300)/", + "/Date(1594989900000+0300)/", + "/Date(1594990800000+0300)/", + "/Date(1594991700000+0300)/", + "/Date(1594992600000+0300)/", + "/Date(1594993500000+0300)/", + "/Date(1594996200000+0300)/", + "/Date(1594997100000+0300)/", + "/Date(1594998000000+0300)/", + "/Date(1594998900000+0300)/", + "/Date(1594999800000+0300)/", + "/Date(1595000700000+0300)/", + "/Date(1595050200000+0300)/", + "/Date(1595051100000+0300)/", + "/Date(1595052000000+0300)/", + "/Date(1595052900000+0300)/", + "/Date(1595053800000+0300)/", + "/Date(1595054700000+0300)/", + "/Date(1595056500000+0300)/", + "/Date(1595057400000+0300)/", + "/Date(1595058300000+0300)/", + "/Date(1595059200000+0300)/", + "/Date(1595060100000+0300)/", + "/Date(1595061000000+0300)/", + "/Date(1595061900000+0300)/", + "/Date(1595062800000+0300)/", + "/Date(1595063700000+0300)/", + "/Date(1595064600000+0300)/", + "/Date(1595065500000+0300)/", + "/Date(1595066400000+0300)/", + "/Date(1595067300000+0300)/", + "/Date(1595068200000+0300)/", + "/Date(1595069100000+0300)/", + "/Date(1595070000000+0300)/", + "/Date(1595070900000+0300)/", + "/Date(1595071800000+0300)/", + "/Date(1595072700000+0300)/", + "/Date(1595073600000+0300)/", + "/Date(1595074500000+0300)/", + "/Date(1595075400000+0300)/", + "/Date(1595076300000+0300)/", + "/Date(1595077200000+0300)/", + "/Date(1595078100000+0300)/", + "/Date(1595079000000+0300)/", + "/Date(1595079900000+0300)/", + "/Date(1595136600000+0300)/", + "/Date(1595137500000+0300)/", + "/Date(1595138400000+0300)/", + "/Date(1595139300000+0300)/", + "/Date(1595140200000+0300)/", + "/Date(1595141100000+0300)/", + "/Date(1595142000000+0300)/", + "/Date(1595142900000+0300)/", + "/Date(1595143800000+0300)/", + "/Date(1595144700000+0300)/", + "/Date(1595145600000+0300)/", + "/Date(1595146500000+0300)/", + "/Date(1595147400000+0300)/", + "/Date(1595148300000+0300)/", + "/Date(1595149200000+0300)/", + "/Date(1595150100000+0300)/", + "/Date(1595151000000+0300)/", + "/Date(1595151900000+0300)/", + "/Date(1595152800000+0300)/", + "/Date(1595153700000+0300)/", + "/Date(1595154600000+0300)/", + "/Date(1595155500000+0300)/", + "/Date(1595156400000+0300)/", + "/Date(1595157300000+0300)/", + "/Date(1595158200000+0300)/", + "/Date(1595159100000+0300)/", + "/Date(1595160000000+0300)/", + "/Date(1595160900000+0300)/", + "/Date(1595161800000+0300)/", + "/Date(1595162700000+0300)/", + "/Date(1595163600000+0300)/", + "/Date(1595164500000+0300)/", + "/Date(1595165400000+0300)/", + "/Date(1595166300000+0300)/", + "/Date(1595223000000+0300)/", + "/Date(1595223900000+0300)/", + "/Date(1595224800000+0300)/", + "/Date(1595225700000+0300)/", + "/Date(1595226600000+0300)/", + "/Date(1595227500000+0300)/", + "/Date(1595228400000+0300)/", + "/Date(1595229300000+0300)/", + "/Date(1595230200000+0300)/", + "/Date(1595231100000+0300)/", + "/Date(1595232000000+0300)/", + "/Date(1595232900000+0300)/", + "/Date(1595233800000+0300)/", + "/Date(1595234700000+0300)/", + "/Date(1595235600000+0300)/", + "/Date(1595236500000+0300)/", + "/Date(1595237400000+0300)/", + "/Date(1595238300000+0300)/", + "/Date(1595239200000+0300)/", + "/Date(1595240100000+0300)/", + "/Date(1595241000000+0300)/", + "/Date(1595241900000+0300)/", + "/Date(1595242800000+0300)/", + "/Date(1595243700000+0300)/", + "/Date(1595244600000+0300)/", + "/Date(1595245500000+0300)/", + "/Date(1595246400000+0300)/", + "/Date(1595247300000+0300)/", + "/Date(1595248200000+0300)/", + "/Date(1595249100000+0300)/", + "/Date(1595250000000+0300)/", + "/Date(1595250900000+0300)/", + "/Date(1595251800000+0300)/", + "/Date(1595252700000+0300)/", + "/Date(1595309400000+0300)/", + "/Date(1595310300000+0300)/", + "/Date(1595311200000+0300)/", + "/Date(1595312100000+0300)/", + "/Date(1595313000000+0300)/", + "/Date(1595313900000+0300)/", + "/Date(1595314800000+0300)/", + "/Date(1595315700000+0300)/", + "/Date(1595316600000+0300)/", + "/Date(1595317500000+0300)/", + "/Date(1595318400000+0300)/", + "/Date(1595319300000+0300)/", + "/Date(1595320200000+0300)/", + "/Date(1595321100000+0300)/", + "/Date(1595322000000+0300)/", + "/Date(1595322900000+0300)/", + "/Date(1595323800000+0300)/", + "/Date(1595324700000+0300)/", + "/Date(1595325600000+0300)/", + "/Date(1595326500000+0300)/", + "/Date(1595327400000+0300)/", + "/Date(1595328300000+0300)/", + "/Date(1595329200000+0300)/", + "/Date(1595330100000+0300)/", + "/Date(1595331000000+0300)/", + "/Date(1595331900000+0300)/", + "/Date(1595332800000+0300)/", + "/Date(1595333700000+0300)/", + "/Date(1595334600000+0300)/", + "/Date(1595335500000+0300)/", + "/Date(1595336400000+0300)/", + "/Date(1595337300000+0300)/", + "/Date(1595338200000+0300)/", + "/Date(1595339100000+0300)/", + "/Date(1595395800000+0300)/", + "/Date(1595396700000+0300)/", + "/Date(1595397600000+0300)/", + "/Date(1595398500000+0300)/", + "/Date(1595399400000+0300)/", + "/Date(1595400300000+0300)/", + "/Date(1595401200000+0300)/", + "/Date(1595402100000+0300)/", + "/Date(1595403000000+0300)/", + "/Date(1595403900000+0300)/", + "/Date(1595404800000+0300)/", + "/Date(1595405700000+0300)/", + "/Date(1595406600000+0300)/", + "/Date(1595407500000+0300)/", + "/Date(1595408400000+0300)/", + "/Date(1595409300000+0300)/", + "/Date(1595410200000+0300)/", + "/Date(1595411100000+0300)/", + "/Date(1595412000000+0300)/", + "/Date(1595412900000+0300)/", + "/Date(1595413800000+0300)/", + "/Date(1595414700000+0300)/", + "/Date(1595415600000+0300)/", + "/Date(1595416500000+0300)/", + "/Date(1595417400000+0300)/", + "/Date(1595418300000+0300)/", + "/Date(1595419200000+0300)/", + "/Date(1595420100000+0300)/", + "/Date(1595421000000+0300)/", + "/Date(1595421900000+0300)/", + "/Date(1595422800000+0300)/", + "/Date(1595423700000+0300)/", + "/Date(1595424600000+0300)/", + "/Date(1595425500000+0300)/", + "/Date(1595482200000+0300)/", + "/Date(1595483100000+0300)/", + "/Date(1595484000000+0300)/", + "/Date(1595484900000+0300)/", + "/Date(1595485800000+0300)/", + "/Date(1595486700000+0300)/", + "/Date(1595487600000+0300)/", + "/Date(1595488500000+0300)/", + "/Date(1595489400000+0300)/", + "/Date(1595490300000+0300)/", + "/Date(1595491200000+0300)/", + "/Date(1595492100000+0300)/", + "/Date(1595493000000+0300)/", + "/Date(1595493900000+0300)/", + "/Date(1595494800000+0300)/", + "/Date(1595495700000+0300)/", + "/Date(1595496600000+0300)/", + "/Date(1595497500000+0300)/", + "/Date(1595499300000+0300)/", + "/Date(1595655000000+0300)/", + "/Date(1595655900000+0300)/", + "/Date(1595656800000+0300)/", + "/Date(1595657700000+0300)/", + "/Date(1595658600000+0300)/", + "/Date(1595659500000+0300)/", + "/Date(1595660400000+0300)/", + "/Date(1595661300000+0300)/", + "/Date(1595662200000+0300)/", + "/Date(1595663100000+0300)/", + "/Date(1595664000000+0300)/", + "/Date(1595664900000+0300)/", + "/Date(1595665800000+0300)/", + "/Date(1595666700000+0300)/", + "/Date(1595667600000+0300)/", + "/Date(1595668500000+0300)/", + "/Date(1595669400000+0300)/", + "/Date(1595670300000+0300)/", + "/Date(1595671200000+0300)/", + "/Date(1595672100000+0300)/", + "/Date(1595673000000+0300)/", + "/Date(1595673900000+0300)/", + "/Date(1595674800000+0300)/", + "/Date(1595675700000+0300)/", + "/Date(1595676600000+0300)/", + "/Date(1595677500000+0300)/", + "/Date(1595678400000+0300)/", + "/Date(1595679300000+0300)/", + "/Date(1595680200000+0300)/", + "/Date(1595681100000+0300)/", + "/Date(1595682000000+0300)/", + "/Date(1595682900000+0300)/", + "/Date(1595683800000+0300)/", + "/Date(1595684700000+0300)/", + "/Date(1595741400000+0300)/", + "/Date(1595742300000+0300)/", + "/Date(1595743200000+0300)/", + "/Date(1595744100000+0300)/", + "/Date(1595745000000+0300)/", + "/Date(1595745900000+0300)/", + "/Date(1595746800000+0300)/", + "/Date(1595747700000+0300)/", + "/Date(1595748600000+0300)/", + "/Date(1595749500000+0300)/", + "/Date(1595750400000+0300)/", + "/Date(1595751300000+0300)/", + "/Date(1595752200000+0300)/", + "/Date(1595753100000+0300)/", + "/Date(1595754000000+0300)/", + "/Date(1595754900000+0300)/", + "/Date(1595755800000+0300)/", + "/Date(1595756700000+0300)/", + "/Date(1595757600000+0300)/", + "/Date(1595758500000+0300)/", + "/Date(1595759400000+0300)/", + "/Date(1595760300000+0300)/", + "/Date(1595761200000+0300)/", + "/Date(1595762100000+0300)/", + "/Date(1595763000000+0300)/", + "/Date(1595763900000+0300)/", + "/Date(1595764800000+0300)/", + "/Date(1595765700000+0300)/", + "/Date(1595766600000+0300)/", + "/Date(1595767500000+0300)/", + "/Date(1595768400000+0300)/", + "/Date(1595769300000+0300)/", + "/Date(1595770200000+0300)/", + "/Date(1595771100000+0300)/", + "/Date(1595827800000+0300)/", + "/Date(1595828700000+0300)/", + "/Date(1595829600000+0300)/", + "/Date(1595830500000+0300)/", + "/Date(1595831400000+0300)/", + "/Date(1595832300000+0300)/", + "/Date(1595833200000+0300)/", + "/Date(1595834100000+0300)/", + "/Date(1595835000000+0300)/", + "/Date(1595835900000+0300)/", + "/Date(1595836800000+0300)/", + "/Date(1595837700000+0300)/", + "/Date(1595838600000+0300)/", + "/Date(1595839500000+0300)/", + "/Date(1595840400000+0300)/", + "/Date(1595841300000+0300)/", + "/Date(1595842200000+0300)/", + "/Date(1595843100000+0300)/", + "/Date(1595844000000+0300)/", + "/Date(1595844900000+0300)/", + "/Date(1595845800000+0300)/", + "/Date(1595846700000+0300)/", + "/Date(1595847600000+0300)/", + "/Date(1595848500000+0300)/", + "/Date(1595849400000+0300)/", + "/Date(1595850300000+0300)/", + "/Date(1595851200000+0300)/", + "/Date(1595852100000+0300)/", + "/Date(1595853000000+0300)/", + "/Date(1595853900000+0300)/", + "/Date(1595854800000+0300)/", + "/Date(1595855700000+0300)/", + "/Date(1595856600000+0300)/", + "/Date(1595857500000+0300)/", + "/Date(1595914200000+0300)/", + "/Date(1595915100000+0300)/", + "/Date(1595916000000+0300)/", + "/Date(1595916900000+0300)/", + "/Date(1595917800000+0300)/", + "/Date(1595918700000+0300)/", + "/Date(1595919600000+0300)/", + "/Date(1595920500000+0300)/", + "/Date(1595921400000+0300)/", + "/Date(1595922300000+0300)/", + "/Date(1595923200000+0300)/", + "/Date(1595924100000+0300)/", + "/Date(1595925000000+0300)/", + "/Date(1595925900000+0300)/", + "/Date(1595926800000+0300)/", + "/Date(1595927700000+0300)/", + "/Date(1595928600000+0300)/", + "/Date(1595929500000+0300)/", + "/Date(1595930400000+0300)/", + "/Date(1595931300000+0300)/", + "/Date(1595932200000+0300)/", + "/Date(1595933100000+0300)/", + "/Date(1595934000000+0300)/", + "/Date(1595934900000+0300)/", + "/Date(1595935800000+0300)/", + "/Date(1595936700000+0300)/", + "/Date(1595937600000+0300)/", + "/Date(1595938500000+0300)/", + "/Date(1595939400000+0300)/", + "/Date(1595940300000+0300)/", + "/Date(1595941200000+0300)/", + "/Date(1595942100000+0300)/", + "/Date(1595943000000+0300)/", + "/Date(1595943900000+0300)/", + "/Date(1596864600000+0300)/", + "/Date(1596865500000+0300)/", + "/Date(1596866400000+0300)/", + "/Date(1596867300000+0300)/", + "/Date(1596868200000+0300)/", + "/Date(1596869100000+0300)/", + "/Date(1596870000000+0300)/", + "/Date(1596870900000+0300)/", + "/Date(1596871800000+0300)/", + "/Date(1596872700000+0300)/", + "/Date(1596873600000+0300)/", + "/Date(1596874500000+0300)/", + "/Date(1596875400000+0300)/", + "/Date(1596876300000+0300)/", + "/Date(1596877200000+0300)/", + "/Date(1596878100000+0300)/", + "/Date(1596879000000+0300)/", + "/Date(1596879900000+0300)/", + "/Date(1596880800000+0300)/", + "/Date(1596881700000+0300)/", + "/Date(1596882600000+0300)/", + "/Date(1596883500000+0300)/", + "/Date(1596884400000+0300)/", + "/Date(1596885300000+0300)/", + "/Date(1596886200000+0300)/", + "/Date(1596887100000+0300)/", + "/Date(1596888000000+0300)/", + "/Date(1596888900000+0300)/", + "/Date(1596889800000+0300)/", + "/Date(1596890700000+0300)/", + "/Date(1596891600000+0300)/", + "/Date(1596892500000+0300)/", + "/Date(1596893400000+0300)/", + "/Date(1596894300000+0300)/", + "/Date(1596951000000+0300)/", + "/Date(1596951900000+0300)/", + "/Date(1596952800000+0300)/", + "/Date(1596953700000+0300)/", + "/Date(1596954600000+0300)/", + "/Date(1596955500000+0300)/", + "/Date(1596956400000+0300)/", + "/Date(1596957300000+0300)/", + "/Date(1596958200000+0300)/", + "/Date(1596959100000+0300)/", + "/Date(1596960000000+0300)/", + "/Date(1596960900000+0300)/", + "/Date(1596961800000+0300)/", + "/Date(1596962700000+0300)/", + "/Date(1596963600000+0300)/", + "/Date(1596964500000+0300)/", + "/Date(1596965400000+0300)/", + "/Date(1596966300000+0300)/", + "/Date(1596967200000+0300)/", + "/Date(1596968100000+0300)/", + "/Date(1596969000000+0300)/", + "/Date(1596969900000+0300)/", + "/Date(1596970800000+0300)/", + "/Date(1596971700000+0300)/", + "/Date(1596972600000+0300)/", + "/Date(1596973500000+0300)/", + "/Date(1596974400000+0300)/", + "/Date(1596975300000+0300)/", + "/Date(1596976200000+0300)/", + "/Date(1596977100000+0300)/", + "/Date(1596978000000+0300)/", + "/Date(1596978900000+0300)/", + "/Date(1596979800000+0300)/", + "/Date(1596980700000+0300)/", + "/Date(1597037400000+0300)/", + "/Date(1597038300000+0300)/", + "/Date(1597039200000+0300)/", + "/Date(1597040100000+0300)/", + "/Date(1597041000000+0300)/", + "/Date(1597041900000+0300)/", + "/Date(1597042800000+0300)/", + "/Date(1597043700000+0300)/", + "/Date(1597044600000+0300)/", + "/Date(1597045500000+0300)/", + "/Date(1597046400000+0300)/", + "/Date(1597047300000+0300)/", + "/Date(1597048200000+0300)/", + "/Date(1597049100000+0300)/", + "/Date(1597050000000+0300)/", + "/Date(1597050900000+0300)/", + "/Date(1597051800000+0300)/", + "/Date(1597052700000+0300)/", + "/Date(1597053600000+0300)/", + "/Date(1597054500000+0300)/", + "/Date(1597055400000+0300)/", + "/Date(1597056300000+0300)/", + "/Date(1597057200000+0300)/", + "/Date(1597058100000+0300)/", + "/Date(1597059000000+0300)/", + "/Date(1597059900000+0300)/", + "/Date(1597060800000+0300)/", + "/Date(1597061700000+0300)/", + "/Date(1597062600000+0300)/", + "/Date(1597063500000+0300)/", + "/Date(1597064400000+0300)/", + "/Date(1597065300000+0300)/", + "/Date(1597066200000+0300)/", + "/Date(1597067100000+0300)/", + "/Date(1597123800000+0300)/", + "/Date(1597124700000+0300)/", + "/Date(1597125600000+0300)/", + "/Date(1597126500000+0300)/", + "/Date(1597127400000+0300)/", + "/Date(1597128300000+0300)/", + "/Date(1597129200000+0300)/", + "/Date(1597130100000+0300)/", + "/Date(1597131000000+0300)/", + "/Date(1597131900000+0300)/", + "/Date(1597132800000+0300)/", + "/Date(1597133700000+0300)/", + "/Date(1597134600000+0300)/", + "/Date(1597135500000+0300)/", + "/Date(1597136400000+0300)/", + "/Date(1597137300000+0300)/", + "/Date(1597138200000+0300)/", + "/Date(1597139100000+0300)/", + "/Date(1597140000000+0300)/", + "/Date(1597140900000+0300)/", + "/Date(1597141800000+0300)/", + "/Date(1597142700000+0300)/", + "/Date(1597143600000+0300)/", + "/Date(1597144500000+0300)/", + "/Date(1597145400000+0300)/", + "/Date(1597146300000+0300)/", + "/Date(1597147200000+0300)/", + "/Date(1597148100000+0300)/", + "/Date(1597149000000+0300)/", + "/Date(1597149900000+0300)/", + "/Date(1597150800000+0300)/", + "/Date(1597151700000+0300)/", + "/Date(1597152600000+0300)/", + "/Date(1597153500000+0300)/", + "/Date(1597210200000+0300)/", + "/Date(1597211100000+0300)/", + "/Date(1597212000000+0300)/", + "/Date(1597212900000+0300)/", + "/Date(1597213800000+0300)/", + "/Date(1597214700000+0300)/", + "/Date(1597215600000+0300)/", + "/Date(1597216500000+0300)/", + "/Date(1597217400000+0300)/", + "/Date(1597218300000+0300)/", + "/Date(1597219200000+0300)/", + "/Date(1597220100000+0300)/", + "/Date(1597221000000+0300)/", + "/Date(1597221900000+0300)/", + "/Date(1597222800000+0300)/", + "/Date(1597223700000+0300)/", + "/Date(1597224600000+0300)/", + "/Date(1597225500000+0300)/", + "/Date(1597226400000+0300)/", + "/Date(1597227300000+0300)/", + "/Date(1597228200000+0300)/", + "/Date(1597229100000+0300)/", + "/Date(1597230000000+0300)/", + "/Date(1597230900000+0300)/", + "/Date(1597231800000+0300)/", + "/Date(1597232700000+0300)/", + "/Date(1597233600000+0300)/", + "/Date(1597234500000+0300)/", + "/Date(1597235400000+0300)/", + "/Date(1597236300000+0300)/", + "/Date(1597237200000+0300)/", + "/Date(1597238100000+0300)/", + "/Date(1597239000000+0300)/", + "/Date(1597239900000+0300)/", + "/Date(1597296600000+0300)/", + "/Date(1597297500000+0300)/", + "/Date(1597298400000+0300)/", + "/Date(1597299300000+0300)/", + "/Date(1597300200000+0300)/", + "/Date(1597301100000+0300)/", + "/Date(1597302000000+0300)/", + "/Date(1597302900000+0300)/", + "/Date(1597303800000+0300)/", + "/Date(1597304700000+0300)/", + "/Date(1597305600000+0300)/", + "/Date(1597306500000+0300)/", + "/Date(1597307400000+0300)/", + "/Date(1597308300000+0300)/", + "/Date(1597309200000+0300)/", + "/Date(1597310100000+0300)/", + "/Date(1597311000000+0300)/", + "/Date(1597311900000+0300)/", + "/Date(1597312800000+0300)/", + "/Date(1597313700000+0300)/", + "/Date(1597469400000+0300)/", + "/Date(1597470300000+0300)/", + "/Date(1597471200000+0300)/", + "/Date(1597472100000+0300)/", + "/Date(1597473000000+0300)/", + "/Date(1597473900000+0300)/", + "/Date(1597474800000+0300)/", + "/Date(1597475700000+0300)/", + "/Date(1597476600000+0300)/", + "/Date(1597477500000+0300)/", + "/Date(1597478400000+0300)/", + "/Date(1597479300000+0300)/", + "/Date(1597480200000+0300)/", + "/Date(1597481100000+0300)/", + "/Date(1597482000000+0300)/", + "/Date(1597482900000+0300)/", + "/Date(1597483800000+0300)/", + "/Date(1597484700000+0300)/", + "/Date(1597485600000+0300)/", + "/Date(1597486500000+0300)/", + "/Date(1597487400000+0300)/", + "/Date(1597488300000+0300)/", + "/Date(1597489200000+0300)/", + "/Date(1597490100000+0300)/", + "/Date(1597491000000+0300)/", + "/Date(1597491900000+0300)/", + "/Date(1597492800000+0300)/", + "/Date(1597493700000+0300)/", + "/Date(1597494600000+0300)/", + "/Date(1597495500000+0300)/", + "/Date(1597496400000+0300)/", + "/Date(1597497300000+0300)/", + "/Date(1597498200000+0300)/", + "/Date(1597499100000+0300)/", + "/Date(1597555800000+0300)/", + "/Date(1597556700000+0300)/", + "/Date(1597557600000+0300)/", + "/Date(1597558500000+0300)/", + "/Date(1597559400000+0300)/", + "/Date(1597560300000+0300)/", + "/Date(1597561200000+0300)/", + "/Date(1597562100000+0300)/", + "/Date(1597563000000+0300)/", + "/Date(1597563900000+0300)/", + "/Date(1597564800000+0300)/", + "/Date(1597565700000+0300)/", + "/Date(1597566600000+0300)/", + "/Date(1597567500000+0300)/", + "/Date(1597568400000+0300)/", + "/Date(1597569300000+0300)/", + "/Date(1597570200000+0300)/", + "/Date(1597571100000+0300)/", + "/Date(1597572000000+0300)/", + "/Date(1597572900000+0300)/", + "/Date(1597573800000+0300)/", + "/Date(1597574700000+0300)/", + "/Date(1597575600000+0300)/", + "/Date(1597576500000+0300)/", + "/Date(1597577400000+0300)/", + "/Date(1597578300000+0300)/", + "/Date(1597579200000+0300)/", + "/Date(1597580100000+0300)/", + "/Date(1597581000000+0300)/", + "/Date(1597581900000+0300)/", + "/Date(1597582800000+0300)/", + "/Date(1597583700000+0300)/", + "/Date(1597584600000+0300)/", + "/Date(1597585500000+0300)/", + "/Date(1597642200000+0300)/", + "/Date(1597643100000+0300)/", + "/Date(1597644000000+0300)/", + "/Date(1597644900000+0300)/", + "/Date(1597645800000+0300)/", + "/Date(1597646700000+0300)/", + "/Date(1597647600000+0300)/", + "/Date(1597648500000+0300)/", + "/Date(1597649400000+0300)/", + "/Date(1597650300000+0300)/", + "/Date(1597651200000+0300)/", + "/Date(1597652100000+0300)/", + "/Date(1597653000000+0300)/", + "/Date(1597653900000+0300)/", + "/Date(1597654800000+0300)/", + "/Date(1597655700000+0300)/", + "/Date(1597656600000+0300)/", + "/Date(1597657500000+0300)/", + "/Date(1597658400000+0300)/", + "/Date(1597659300000+0300)/", + "/Date(1597660200000+0300)/", + "/Date(1597661100000+0300)/", + "/Date(1597662000000+0300)/", + "/Date(1597662900000+0300)/", + "/Date(1597663800000+0300)/", + "/Date(1597664700000+0300)/", + "/Date(1597665600000+0300)/", + "/Date(1597666500000+0300)/", + "/Date(1597667400000+0300)/", + "/Date(1597668300000+0300)/", + "/Date(1597669200000+0300)/", + "/Date(1597670100000+0300)/", + "/Date(1597671000000+0300)/", + "/Date(1597671900000+0300)/", + "/Date(1597728600000+0300)/", + "/Date(1597729500000+0300)/", + "/Date(1597730400000+0300)/", + "/Date(1597731300000+0300)/", + "/Date(1597732200000+0300)/", + "/Date(1597733100000+0300)/", + "/Date(1597734000000+0300)/", + "/Date(1597734900000+0300)/", + "/Date(1597735800000+0300)/", + "/Date(1597736700000+0300)/", + "/Date(1597737600000+0300)/", + "/Date(1597738500000+0300)/", + "/Date(1597739400000+0300)/", + "/Date(1597740300000+0300)/", + "/Date(1597741200000+0300)/", + "/Date(1597742100000+0300)/", + "/Date(1597743000000+0300)/", + "/Date(1597743900000+0300)/", + "/Date(1597744800000+0300)/", + "/Date(1597745700000+0300)/", + "/Date(1597746600000+0300)/", + "/Date(1597747500000+0300)/", + "/Date(1597748400000+0300)/", + "/Date(1597749300000+0300)/", + "/Date(1597750200000+0300)/", + "/Date(1597751100000+0300)/", + "/Date(1597752000000+0300)/", + "/Date(1597752900000+0300)/", + "/Date(1597753800000+0300)/", + "/Date(1597754700000+0300)/", + "/Date(1597755600000+0300)/", + "/Date(1597756500000+0300)/", + "/Date(1597757400000+0300)/", + "/Date(1597758300000+0300)/", + "/Date(1597815000000+0300)/", + "/Date(1597815900000+0300)/", + "/Date(1597816800000+0300)/", + "/Date(1597817700000+0300)/", + "/Date(1597818600000+0300)/", + "/Date(1597819500000+0300)/", + "/Date(1597820400000+0300)/", + "/Date(1597821300000+0300)/", + "/Date(1597822200000+0300)/", + "/Date(1597823100000+0300)/", + "/Date(1597824000000+0300)/", + "/Date(1597824900000+0300)/", + "/Date(1597825800000+0300)/", + "/Date(1597826700000+0300)/", + "/Date(1597827600000+0300)/", + "/Date(1597828500000+0300)/", + "/Date(1597829400000+0300)/", + "/Date(1597830300000+0300)/", + "/Date(1597831200000+0300)/", + "/Date(1597832100000+0300)/", + "/Date(1597833000000+0300)/", + "/Date(1597833900000+0300)/", + "/Date(1597834800000+0300)/", + "/Date(1597835700000+0300)/", + "/Date(1597836600000+0300)/", + "/Date(1597837500000+0300)/", + "/Date(1597838400000+0300)/", + "/Date(1597839300000+0300)/", + "/Date(1597840200000+0300)/", + "/Date(1597841100000+0300)/", + "/Date(1597842000000+0300)/", + "/Date(1597842900000+0300)/", + "/Date(1597843800000+0300)/", + "/Date(1597844700000+0300)/", + "/Date(1597901400000+0300)/", + "/Date(1597902300000+0300)/", + "/Date(1597903200000+0300)/", + "/Date(1597904100000+0300)/", + "/Date(1597905000000+0300)/", + "/Date(1597905900000+0300)/", + "/Date(1597906800000+0300)/", + "/Date(1597907700000+0300)/", + "/Date(1597908600000+0300)/", + "/Date(1597909500000+0300)/", + "/Date(1597910400000+0300)/", + "/Date(1597911300000+0300)/", + "/Date(1597912200000+0300)/", + "/Date(1597913100000+0300)/", + "/Date(1597914000000+0300)/", + "/Date(1597914900000+0300)/", + "/Date(1597915800000+0300)/", + "/Date(1597916700000+0300)/", + "/Date(1597917600000+0300)/", + "/Date(1597918500000+0300)/", + "/Date(1598074200000+0300)/", + "/Date(1598075100000+0300)/", + "/Date(1598076000000+0300)/", + "/Date(1598076900000+0300)/", + "/Date(1598077800000+0300)/", + "/Date(1598078700000+0300)/", + "/Date(1598079600000+0300)/", + "/Date(1598080500000+0300)/", + "/Date(1598081400000+0300)/", + "/Date(1598082300000+0300)/", + "/Date(1598083200000+0300)/", + "/Date(1598084100000+0300)/", + "/Date(1598085000000+0300)/", + "/Date(1598085900000+0300)/", + "/Date(1598086800000+0300)/", + "/Date(1598087700000+0300)/", + "/Date(1598088600000+0300)/", + "/Date(1598089500000+0300)/", + "/Date(1598090400000+0300)/", + "/Date(1598091300000+0300)/", + "/Date(1598092200000+0300)/", + "/Date(1598093100000+0300)/", + "/Date(1598094000000+0300)/", + "/Date(1598094900000+0300)/", + "/Date(1598095800000+0300)/", + "/Date(1598096700000+0300)/", + "/Date(1598097600000+0300)/", + "/Date(1598098500000+0300)/", + "/Date(1598099400000+0300)/", + "/Date(1598100300000+0300)/", + "/Date(1598101200000+0300)/", + "/Date(1598102100000+0300)/", + "/Date(1598103000000+0300)/", + "/Date(1598103900000+0300)/", + "/Date(1598160600000+0300)/", + "/Date(1598161500000+0300)/", + "/Date(1598162400000+0300)/", + "/Date(1598163300000+0300)/", + "/Date(1598164200000+0300)/", + "/Date(1598165100000+0300)/", + "/Date(1598166000000+0300)/", + "/Date(1598166900000+0300)/", + "/Date(1598167800000+0300)/", + "/Date(1598168700000+0300)/", + "/Date(1598169600000+0300)/", + "/Date(1598170500000+0300)/", + "/Date(1598171400000+0300)/", + "/Date(1598172300000+0300)/", + "/Date(1598173200000+0300)/", + "/Date(1598174100000+0300)/", + "/Date(1598175000000+0300)/", + "/Date(1598175900000+0300)/", + "/Date(1598176800000+0300)/", + "/Date(1598177700000+0300)/", + "/Date(1598178600000+0300)/", + "/Date(1598179500000+0300)/", + "/Date(1598180400000+0300)/", + "/Date(1598181300000+0300)/", + "/Date(1598182200000+0300)/", + "/Date(1598183100000+0300)/", + "/Date(1598184000000+0300)/", + "/Date(1598184900000+0300)/", + "/Date(1598185800000+0300)/", + "/Date(1598186700000+0300)/", + "/Date(1598187600000+0300)/", + "/Date(1598188500000+0300)/", + "/Date(1598189400000+0300)/", + "/Date(1598190300000+0300)/", + "/Date(1598247000000+0300)/", + "/Date(1598247900000+0300)/", + "/Date(1598248800000+0300)/", + "/Date(1598249700000+0300)/", + "/Date(1598250600000+0300)/", + "/Date(1598251500000+0300)/", + "/Date(1598252400000+0300)/", + "/Date(1598253300000+0300)/", + "/Date(1598254200000+0300)/", + "/Date(1598255100000+0300)/", + "/Date(1598256000000+0300)/", + "/Date(1598256900000+0300)/", + "/Date(1598257800000+0300)/", + "/Date(1598258700000+0300)/", + "/Date(1598259600000+0300)/", + "/Date(1598260500000+0300)/", + "/Date(1598261400000+0300)/", + "/Date(1598262300000+0300)/", + "/Date(1598263200000+0300)/", + "/Date(1598264100000+0300)/", + "/Date(1598265000000+0300)/", + "/Date(1598265900000+0300)/", + "/Date(1598266800000+0300)/", + "/Date(1598267700000+0300)/", + "/Date(1598268600000+0300)/", + "/Date(1598269500000+0300)/", + "/Date(1598270400000+0300)/", + "/Date(1598271300000+0300)/", + "/Date(1598272200000+0300)/", + "/Date(1598273100000+0300)/", + "/Date(1598274000000+0300)/", + "/Date(1598274900000+0300)/", + "/Date(1598275800000+0300)/", + "/Date(1598276700000+0300)/", + "/Date(1598333400000+0300)/", + "/Date(1598334300000+0300)/", + "/Date(1598335200000+0300)/", + "/Date(1598336100000+0300)/", + "/Date(1598337000000+0300)/", + "/Date(1598337900000+0300)/", + "/Date(1598338800000+0300)/", + "/Date(1598339700000+0300)/", + "/Date(1598340600000+0300)/", + "/Date(1598341500000+0300)/", + "/Date(1598342400000+0300)/", + "/Date(1598343300000+0300)/", + "/Date(1598344200000+0300)/", + "/Date(1598345100000+0300)/", + "/Date(1598346000000+0300)/", + "/Date(1598346900000+0300)/", + "/Date(1598347800000+0300)/", + "/Date(1598348700000+0300)/", + "/Date(1598349600000+0300)/", + "/Date(1598350500000+0300)/", + "/Date(1598351400000+0300)/", + "/Date(1598352300000+0300)/", + "/Date(1598353200000+0300)/", + "/Date(1598354100000+0300)/", + "/Date(1598355000000+0300)/", + "/Date(1598355900000+0300)/", + "/Date(1598356800000+0300)/", + "/Date(1598357700000+0300)/", + "/Date(1598358600000+0300)/", + "/Date(1598359500000+0300)/", + "/Date(1598360400000+0300)/", + "/Date(1598361300000+0300)/", + "/Date(1598362200000+0300)/", + "/Date(1598363100000+0300)/", + "/Date(1598419800000+0300)/", + "/Date(1598420700000+0300)/", + "/Date(1598421600000+0300)/", + "/Date(1598422500000+0300)/", + "/Date(1598423400000+0300)/", + "/Date(1598424300000+0300)/", + "/Date(1598425200000+0300)/", + "/Date(1598426100000+0300)/", + "/Date(1598427000000+0300)/", + "/Date(1598427900000+0300)/", + "/Date(1598428800000+0300)/", + "/Date(1598429700000+0300)/", + "/Date(1598430600000+0300)/", + "/Date(1598431500000+0300)/", + "/Date(1598432400000+0300)/", + "/Date(1598433300000+0300)/", + "/Date(1598434200000+0300)/", + "/Date(1598435100000+0300)/", + "/Date(1598436000000+0300)/", + "/Date(1598436900000+0300)/", + "/Date(1598437800000+0300)/", + "/Date(1598438700000+0300)/", + "/Date(1598439600000+0300)/", + "/Date(1598440500000+0300)/", + "/Date(1598441400000+0300)/", + "/Date(1598442300000+0300)/", + "/Date(1598443200000+0300)/", + "/Date(1598444100000+0300)/", + "/Date(1598445000000+0300)/", + "/Date(1598445900000+0300)/", + "/Date(1598446800000+0300)/", + "/Date(1598447700000+0300)/", + "/Date(1598448600000+0300)/", + "/Date(1598449500000+0300)/", + "/Date(1598506200000+0300)/", + "/Date(1598507100000+0300)/", + "/Date(1598508000000+0300)/", + "/Date(1598508900000+0300)/", + "/Date(1598509800000+0300)/", + "/Date(1598510700000+0300)/", + "/Date(1598511600000+0300)/", + "/Date(1598512500000+0300)/", + "/Date(1598513400000+0300)/", + "/Date(1598514300000+0300)/", + "/Date(1598515200000+0300)/", + "/Date(1598516100000+0300)/", + "/Date(1598517000000+0300)/", + "/Date(1598517900000+0300)/", + "/Date(1598518800000+0300)/", + "/Date(1598519700000+0300)/", + "/Date(1598520600000+0300)/", + "/Date(1598521500000+0300)/", + "/Date(1598522400000+0300)/", + "/Date(1598523300000+0300)/", + "/Date(1598679000000+0300)/", + "/Date(1598679900000+0300)/", + "/Date(1598680800000+0300)/", + "/Date(1598681700000+0300)/", + "/Date(1598682600000+0300)/", + "/Date(1598683500000+0300)/", + "/Date(1598684400000+0300)/", + "/Date(1598685300000+0300)/", + "/Date(1598686200000+0300)/", + "/Date(1598687100000+0300)/", + "/Date(1598688000000+0300)/", + "/Date(1598688900000+0300)/", + "/Date(1598689800000+0300)/", + "/Date(1598690700000+0300)/", + "/Date(1598691600000+0300)/", + "/Date(1598692500000+0300)/", + "/Date(1598693400000+0300)/", + "/Date(1598694300000+0300)/", + "/Date(1598695200000+0300)/", + "/Date(1598696100000+0300)/", + "/Date(1598697000000+0300)/", + "/Date(1598697900000+0300)/", + "/Date(1598698800000+0300)/", + "/Date(1598699700000+0300)/", + "/Date(1598700600000+0300)/", + "/Date(1598701500000+0300)/", + "/Date(1598702400000+0300)/", + "/Date(1598703300000+0300)/", + "/Date(1598704200000+0300)/", + "/Date(1598705100000+0300)/", + "/Date(1598706000000+0300)/", + "/Date(1598706900000+0300)/", + "/Date(1598707800000+0300)/", + "/Date(1598708700000+0300)/", + "/Date(1598765400000+0300)/", + "/Date(1598766300000+0300)/", + "/Date(1598767200000+0300)/", + "/Date(1598768100000+0300)/", + "/Date(1598769000000+0300)/", + "/Date(1598769900000+0300)/", + "/Date(1598770800000+0300)/", + "/Date(1598771700000+0300)/", + "/Date(1598772600000+0300)/", + "/Date(1598773500000+0300)/", + "/Date(1598774400000+0300)/", + "/Date(1598775300000+0300)/", + "/Date(1598776200000+0300)/", + "/Date(1598777100000+0300)/", + "/Date(1598778000000+0300)/", + "/Date(1598778900000+0300)/", + "/Date(1598779800000+0300)/", + "/Date(1598780700000+0300)/", + "/Date(1598781600000+0300)/", + "/Date(1598782500000+0300)/", + "/Date(1598783400000+0300)/", + "/Date(1598784300000+0300)/", + "/Date(1598785200000+0300)/", + "/Date(1598786100000+0300)/", + "/Date(1598787000000+0300)/", + "/Date(1598787900000+0300)/", + "/Date(1598788800000+0300)/", + "/Date(1598789700000+0300)/", + "/Date(1598790600000+0300)/", + "/Date(1598791500000+0300)/", + "/Date(1598792400000+0300)/", + "/Date(1598793300000+0300)/", + "/Date(1598794200000+0300)/", + "/Date(1598795100000+0300)/", + "/Date(1598851800000+0300)/", + "/Date(1598852700000+0300)/", + "/Date(1598853600000+0300)/", + "/Date(1598854500000+0300)/", + "/Date(1598855400000+0300)/", + "/Date(1598856300000+0300)/", + "/Date(1598857200000+0300)/", + "/Date(1598858100000+0300)/", + "/Date(1598859000000+0300)/", + "/Date(1598859900000+0300)/", + "/Date(1598860800000+0300)/", + "/Date(1598861700000+0300)/", + "/Date(1598862600000+0300)/", + "/Date(1598863500000+0300)/", + "/Date(1598864400000+0300)/", + "/Date(1598865300000+0300)/", + "/Date(1598866200000+0300)/", + "/Date(1598867100000+0300)/", + "/Date(1598868000000+0300)/", + "/Date(1598868900000+0300)/", + "/Date(1598869800000+0300)/", + "/Date(1598870700000+0300)/", + "/Date(1598871600000+0300)/", + "/Date(1598872500000+0300)/", + "/Date(1598873400000+0300)/", + "/Date(1598874300000+0300)/", + "/Date(1598875200000+0300)/", + "/Date(1598876100000+0300)/", + "/Date(1598877000000+0300)/", + "/Date(1598877900000+0300)/", + "/Date(1598878800000+0300)/", + "/Date(1598879700000+0300)/", + "/Date(1598880600000+0300)/", + "/Date(1598881500000+0300)/", + "/Date(1598938200000+0300)/", + "/Date(1598939100000+0300)/", + "/Date(1598940000000+0300)/", + "/Date(1598940900000+0300)/", + "/Date(1598941800000+0300)/", + "/Date(1598942700000+0300)/", + "/Date(1598943600000+0300)/", + "/Date(1598944500000+0300)/", + "/Date(1598945400000+0300)/", + "/Date(1598946300000+0300)/", + "/Date(1598947200000+0300)/", + "/Date(1598948100000+0300)/", + "/Date(1598949000000+0300)/", + "/Date(1598949900000+0300)/", + "/Date(1598950800000+0300)/", + "/Date(1598951700000+0300)/", + "/Date(1598952600000+0300)/", + "/Date(1598953500000+0300)/", + "/Date(1598954400000+0300)/", + "/Date(1598955300000+0300)/", + "/Date(1598956200000+0300)/", + "/Date(1598957100000+0300)/", + "/Date(1598958000000+0300)/", + "/Date(1598958900000+0300)/", + "/Date(1598959800000+0300)/", + "/Date(1598960700000+0300)/", + "/Date(1598961600000+0300)/", + "/Date(1598962500000+0300)/", + "/Date(1598963400000+0300)/", + "/Date(1598964300000+0300)/", + "/Date(1598965200000+0300)/", + "/Date(1598966100000+0300)/", + "/Date(1598967000000+0300)/", + "/Date(1598967900000+0300)/", + "/Date(1599024600000+0300)/", + "/Date(1599025500000+0300)/", + "/Date(1599026400000+0300)/", + "/Date(1599027300000+0300)/", + "/Date(1599028200000+0300)/", + "/Date(1599029100000+0300)/", + "/Date(1599030000000+0300)/", + "/Date(1599030900000+0300)/", + "/Date(1599031800000+0300)/", + "/Date(1599032700000+0300)/", + "/Date(1599033600000+0300)/", + "/Date(1599034500000+0300)/", + "/Date(1599035400000+0300)/", + "/Date(1599036300000+0300)/", + "/Date(1599037200000+0300)/", + "/Date(1599038100000+0300)/", + "/Date(1599039000000+0300)/", + "/Date(1599039900000+0300)/", + "/Date(1599040800000+0300)/", + "/Date(1599041700000+0300)/", + "/Date(1599042600000+0300)/", + "/Date(1599043500000+0300)/", + "/Date(1599044400000+0300)/", + "/Date(1599045300000+0300)/", + "/Date(1599046200000+0300)/", + "/Date(1599047100000+0300)/", + "/Date(1599048000000+0300)/", + "/Date(1599048900000+0300)/", + "/Date(1599049800000+0300)/", + "/Date(1599050700000+0300)/", + "/Date(1599051600000+0300)/", + "/Date(1599052500000+0300)/", + "/Date(1599053400000+0300)/", + "/Date(1599054300000+0300)/", + "/Date(1599111000000+0300)/", + "/Date(1599111900000+0300)/", + "/Date(1599112800000+0300)/", + "/Date(1599113700000+0300)/", + "/Date(1599114600000+0300)/", + "/Date(1599115500000+0300)/", + "/Date(1599116400000+0300)/", + "/Date(1599117300000+0300)/", + "/Date(1599118200000+0300)/", + "/Date(1599119100000+0300)/", + "/Date(1599120000000+0300)/", + "/Date(1599120900000+0300)/", + "/Date(1599121800000+0300)/", + "/Date(1599122700000+0300)/", + "/Date(1599123600000+0300)/", + "/Date(1599124500000+0300)/", + "/Date(1599125400000+0300)/", + "/Date(1599126300000+0300)/", + "/Date(1599127200000+0300)/", + "/Date(1599128100000+0300)/", + "/Date(1599283800000+0300)/", + "/Date(1599284700000+0300)/", + "/Date(1599285600000+0300)/", + "/Date(1599286500000+0300)/", + "/Date(1599287400000+0300)/", + "/Date(1599288300000+0300)/", + "/Date(1599289200000+0300)/", + "/Date(1599290100000+0300)/", + "/Date(1599291000000+0300)/", + "/Date(1599291900000+0300)/", + "/Date(1599292800000+0300)/", + "/Date(1599293700000+0300)/", + "/Date(1599294600000+0300)/", + "/Date(1599295500000+0300)/", + "/Date(1599296400000+0300)/", + "/Date(1599297300000+0300)/", + "/Date(1599298200000+0300)/", + "/Date(1599299100000+0300)/", + "/Date(1599300000000+0300)/", + "/Date(1599300900000+0300)/", + "/Date(1599301800000+0300)/", + "/Date(1599302700000+0300)/", + "/Date(1599303600000+0300)/", + "/Date(1599304500000+0300)/", + "/Date(1599305400000+0300)/", + "/Date(1599306300000+0300)/", + "/Date(1599307200000+0300)/", + "/Date(1599308100000+0300)/", + "/Date(1599309000000+0300)/", + "/Date(1599309900000+0300)/", + "/Date(1599310800000+0300)/", + "/Date(1599311700000+0300)/", + "/Date(1599312600000+0300)/", + "/Date(1599313500000+0300)/", + "/Date(1599370200000+0300)/", + "/Date(1599371100000+0300)/", + "/Date(1599372000000+0300)/", + "/Date(1599372900000+0300)/", + "/Date(1599373800000+0300)/", + "/Date(1599374700000+0300)/", + "/Date(1599375600000+0300)/", + "/Date(1599376500000+0300)/", + "/Date(1599377400000+0300)/", + "/Date(1599378300000+0300)/", + "/Date(1599379200000+0300)/", + "/Date(1599380100000+0300)/", + "/Date(1599381000000+0300)/", + "/Date(1599381900000+0300)/", + "/Date(1599382800000+0300)/", + "/Date(1599383700000+0300)/", + "/Date(1599384600000+0300)/", + "/Date(1599385500000+0300)/", + "/Date(1599386400000+0300)/", + "/Date(1599387300000+0300)/", + "/Date(1599388200000+0300)/", + "/Date(1599389100000+0300)/", + "/Date(1599390000000+0300)/", + "/Date(1599390900000+0300)/", + "/Date(1599391800000+0300)/", + "/Date(1599392700000+0300)/", + "/Date(1599393600000+0300)/", + "/Date(1599394500000+0300)/", + "/Date(1599395400000+0300)/", + "/Date(1599396300000+0300)/", + "/Date(1599397200000+0300)/", + "/Date(1599398100000+0300)/", + "/Date(1599399000000+0300)/", + "/Date(1599399900000+0300)/", + "/Date(1599456600000+0300)/", + "/Date(1599457500000+0300)/", + "/Date(1599458400000+0300)/", + "/Date(1599459300000+0300)/", + "/Date(1599460200000+0300)/", + "/Date(1599461100000+0300)/", + "/Date(1599462000000+0300)/", + "/Date(1599462900000+0300)/", + "/Date(1599463800000+0300)/", + "/Date(1599464700000+0300)/", + "/Date(1599465600000+0300)/", + "/Date(1599466500000+0300)/", + "/Date(1599467400000+0300)/", + "/Date(1599468300000+0300)/", + "/Date(1599469200000+0300)/", + "/Date(1599470100000+0300)/", + "/Date(1599471000000+0300)/", + "/Date(1599471900000+0300)/", + "/Date(1599472800000+0300)/", + "/Date(1599473700000+0300)/", + "/Date(1599474600000+0300)/", + "/Date(1599475500000+0300)/", + "/Date(1599476400000+0300)/", + "/Date(1599477300000+0300)/", + "/Date(1599478200000+0300)/", + "/Date(1599479100000+0300)/", + "/Date(1599480000000+0300)/", + "/Date(1599480900000+0300)/", + "/Date(1599481800000+0300)/", + "/Date(1599482700000+0300)/", + "/Date(1599483600000+0300)/", + "/Date(1599484500000+0300)/", + "/Date(1599485400000+0300)/", + "/Date(1599486300000+0300)/", + "/Date(1599543000000+0300)/", + "/Date(1599543900000+0300)/", + "/Date(1599544800000+0300)/", + "/Date(1599545700000+0300)/", + "/Date(1599546600000+0300)/", + "/Date(1599547500000+0300)/", + "/Date(1599548400000+0300)/", + "/Date(1599549300000+0300)/", + "/Date(1599550200000+0300)/", + "/Date(1599551100000+0300)/", + "/Date(1599552000000+0300)/", + "/Date(1599552900000+0300)/", + "/Date(1599553800000+0300)/", + "/Date(1599554700000+0300)/", + "/Date(1599555600000+0300)/", + "/Date(1599556500000+0300)/", + "/Date(1599557400000+0300)/", + "/Date(1599558300000+0300)/", + "/Date(1599559200000+0300)/", + "/Date(1599560100000+0300)/", + "/Date(1599561000000+0300)/", + "/Date(1599561900000+0300)/", + "/Date(1599562800000+0300)/", + "/Date(1599563700000+0300)/", + "/Date(1599564600000+0300)/", + "/Date(1599565500000+0300)/", + "/Date(1599566400000+0300)/", + "/Date(1599567300000+0300)/", + "/Date(1599568200000+0300)/", + "/Date(1599569100000+0300)/", + "/Date(1599570000000+0300)/", + "/Date(1599570900000+0300)/", + "/Date(1599571800000+0300)/", + "/Date(1599572700000+0300)/", + "/Date(1599629400000+0300)/", + "/Date(1599630300000+0300)/", + "/Date(1599631200000+0300)/", + "/Date(1599632100000+0300)/", + "/Date(1599633000000+0300)/", + "/Date(1599633900000+0300)/", + "/Date(1599634800000+0300)/", + "/Date(1599635700000+0300)/", + "/Date(1599636600000+0300)/", + "/Date(1599637500000+0300)/", + "/Date(1599638400000+0300)/", + "/Date(1599639300000+0300)/", + "/Date(1599640200000+0300)/", + "/Date(1599641100000+0300)/", + "/Date(1599642000000+0300)/", + "/Date(1599642900000+0300)/", + "/Date(1599643800000+0300)/", + "/Date(1599644700000+0300)/", + "/Date(1599645600000+0300)/", + "/Date(1599646500000+0300)/", + "/Date(1599647400000+0300)/", + "/Date(1599648300000+0300)/", + "/Date(1599649200000+0300)/", + "/Date(1599650100000+0300)/", + "/Date(1599651000000+0300)/", + "/Date(1599651900000+0300)/", + "/Date(1599652800000+0300)/", + "/Date(1599653700000+0300)/", + "/Date(1599654600000+0300)/", + "/Date(1599655500000+0300)/", + "/Date(1599656400000+0300)/", + "/Date(1599657300000+0300)/", + "/Date(1599658200000+0300)/", + "/Date(1599659100000+0300)/", + "/Date(1599715800000+0300)/", + "/Date(1599716700000+0300)/", + "/Date(1599717600000+0300)/", + "/Date(1599718500000+0300)/", + "/Date(1599719400000+0300)/", + "/Date(1599720300000+0300)/", + "/Date(1599721200000+0300)/", + "/Date(1599722100000+0300)/", + "/Date(1599723000000+0300)/", + "/Date(1599723900000+0300)/", + "/Date(1599724800000+0300)/", + "/Date(1599725700000+0300)/", + "/Date(1599726600000+0300)/", + "/Date(1599727500000+0300)/", + "/Date(1599728400000+0300)/", + "/Date(1599729300000+0300)/", + "/Date(1599730200000+0300)/", + "/Date(1599731100000+0300)/", + "/Date(1599732000000+0300)/", + "/Date(1599732900000+0300)/", + "/Date(1599888600000+0300)/", + "/Date(1599889500000+0300)/", + "/Date(1599890400000+0300)/", + "/Date(1599891300000+0300)/", + "/Date(1599892200000+0300)/", + "/Date(1599893100000+0300)/", + "/Date(1599894000000+0300)/", + "/Date(1599894900000+0300)/", + "/Date(1599895800000+0300)/", + "/Date(1599896700000+0300)/", + "/Date(1599897600000+0300)/", + "/Date(1599898500000+0300)/", + "/Date(1599899400000+0300)/", + "/Date(1599900300000+0300)/", + "/Date(1599901200000+0300)/", + "/Date(1599902100000+0300)/", + "/Date(1599903000000+0300)/", + "/Date(1599903900000+0300)/", + "/Date(1599904800000+0300)/", + "/Date(1599905700000+0300)/", + "/Date(1599906600000+0300)/", + "/Date(1599907500000+0300)/", + "/Date(1599908400000+0300)/", + "/Date(1599909300000+0300)/", + "/Date(1599910200000+0300)/", + "/Date(1599911100000+0300)/", + "/Date(1599912000000+0300)/", + "/Date(1599912900000+0300)/", + "/Date(1599913800000+0300)/", + "/Date(1599914700000+0300)/", + "/Date(1599915600000+0300)/", + "/Date(1599916500000+0300)/", + "/Date(1599917400000+0300)/", + "/Date(1599918300000+0300)/", + "/Date(1599975000000+0300)/", + "/Date(1599975900000+0300)/", + "/Date(1599976800000+0300)/", + "/Date(1599977700000+0300)/", + "/Date(1599978600000+0300)/", + "/Date(1599979500000+0300)/", + "/Date(1599980400000+0300)/", + "/Date(1599981300000+0300)/", + "/Date(1599982200000+0300)/", + "/Date(1599983100000+0300)/", + "/Date(1599984000000+0300)/", + "/Date(1599984900000+0300)/", + "/Date(1599985800000+0300)/", + "/Date(1599986700000+0300)/", + "/Date(1599987600000+0300)/", + "/Date(1599988500000+0300)/", + "/Date(1599989400000+0300)/", + "/Date(1599990300000+0300)/", + "/Date(1599991200000+0300)/", + "/Date(1599992100000+0300)/", + "/Date(1599993000000+0300)/", + "/Date(1599993900000+0300)/", + "/Date(1599994800000+0300)/", + "/Date(1599995700000+0300)/", + "/Date(1599996600000+0300)/", + "/Date(1599997500000+0300)/", + "/Date(1599998400000+0300)/", + "/Date(1599999300000+0300)/", + "/Date(1600000200000+0300)/", + "/Date(1600001100000+0300)/", + "/Date(1600002000000+0300)/", + "/Date(1600002900000+0300)/", + "/Date(1600003800000+0300)/", + "/Date(1600004700000+0300)/", + "/Date(1600061400000+0300)/", + "/Date(1600062300000+0300)/", + "/Date(1600063200000+0300)/", + "/Date(1600064100000+0300)/", + "/Date(1600065000000+0300)/", + "/Date(1600065900000+0300)/", + "/Date(1600066800000+0300)/", + "/Date(1600067700000+0300)/", + "/Date(1600068600000+0300)/", + "/Date(1600069500000+0300)/", + "/Date(1600070400000+0300)/", + "/Date(1600071300000+0300)/", + "/Date(1600072200000+0300)/", + "/Date(1600073100000+0300)/", + "/Date(1600074000000+0300)/", + "/Date(1600074900000+0300)/", + "/Date(1600075800000+0300)/", + "/Date(1600076700000+0300)/", + "/Date(1600077600000+0300)/", + "/Date(1600078500000+0300)/", + "/Date(1600079400000+0300)/", + "/Date(1600080300000+0300)/", + "/Date(1600081200000+0300)/", + "/Date(1600082100000+0300)/", + "/Date(1600083000000+0300)/", + "/Date(1600083900000+0300)/", + "/Date(1600084800000+0300)/", + "/Date(1600085700000+0300)/", + "/Date(1600086600000+0300)/", + "/Date(1600087500000+0300)/", + "/Date(1600088400000+0300)/", + "/Date(1600089300000+0300)/", + "/Date(1600090200000+0300)/", + "/Date(1600091100000+0300)/", + "/Date(1600147800000+0300)/", + "/Date(1600148700000+0300)/", + "/Date(1600149600000+0300)/", + "/Date(1600150500000+0300)/", + "/Date(1600151400000+0300)/", + "/Date(1600152300000+0300)/", + "/Date(1600153200000+0300)/", + "/Date(1600154100000+0300)/", + "/Date(1600155000000+0300)/", + "/Date(1600155900000+0300)/", + "/Date(1600156800000+0300)/", + "/Date(1600157700000+0300)/", + "/Date(1600158600000+0300)/", + "/Date(1600159500000+0300)/", + "/Date(1600160400000+0300)/", + "/Date(1600161300000+0300)/", + "/Date(1600162200000+0300)/", + "/Date(1600163100000+0300)/", + "/Date(1600164000000+0300)/", + "/Date(1600164900000+0300)/", + "/Date(1600165800000+0300)/", + "/Date(1600166700000+0300)/", + "/Date(1600167600000+0300)/", + "/Date(1600168500000+0300)/", + "/Date(1600169400000+0300)/", + "/Date(1600170300000+0300)/", + "/Date(1600171200000+0300)/", + "/Date(1600172100000+0300)/", + "/Date(1600173000000+0300)/", + "/Date(1600173900000+0300)/", + "/Date(1600174800000+0300)/", + "/Date(1600175700000+0300)/", + "/Date(1600176600000+0300)/", + "/Date(1600177500000+0300)/", + "/Date(1600234200000+0300)/", + "/Date(1600235100000+0300)/", + "/Date(1600236000000+0300)/", + "/Date(1600236900000+0300)/", + "/Date(1600237800000+0300)/", + "/Date(1600238700000+0300)/", + "/Date(1600239600000+0300)/", + "/Date(1600240500000+0300)/", + "/Date(1600241400000+0300)/", + "/Date(1600242300000+0300)/", + "/Date(1600243200000+0300)/", + "/Date(1600244100000+0300)/", + "/Date(1600245000000+0300)/", + "/Date(1600245900000+0300)/", + "/Date(1600246800000+0300)/", + "/Date(1600247700000+0300)/", + "/Date(1600248600000+0300)/", + "/Date(1600249500000+0300)/", + "/Date(1600250400000+0300)/", + "/Date(1600251300000+0300)/", + "/Date(1600252200000+0300)/", + "/Date(1600253100000+0300)/", + "/Date(1600254000000+0300)/", + "/Date(1600254900000+0300)/", + "/Date(1600255800000+0300)/", + "/Date(1600256700000+0300)/", + "/Date(1600257600000+0300)/", + "/Date(1600258500000+0300)/", + "/Date(1600259400000+0300)/", + "/Date(1600260300000+0300)/", + "/Date(1600261200000+0300)/", + "/Date(1600262100000+0300)/", + "/Date(1600263000000+0300)/", + "/Date(1600263900000+0300)/", + "/Date(1600320600000+0300)/", + "/Date(1600321500000+0300)/", + "/Date(1600322400000+0300)/", + "/Date(1600323300000+0300)/", + "/Date(1600324200000+0300)/", + "/Date(1600325100000+0300)/", + "/Date(1600326000000+0300)/", + "/Date(1600326900000+0300)/", + "/Date(1600327800000+0300)/", + "/Date(1600328700000+0300)/", + "/Date(1600329600000+0300)/", + "/Date(1600330500000+0300)/", + "/Date(1600331400000+0300)/", + "/Date(1600332300000+0300)/", + "/Date(1600333200000+0300)/", + "/Date(1600334100000+0300)/", + "/Date(1600335000000+0300)/", + "/Date(1600335900000+0300)/", + "/Date(1600336800000+0300)/", + "/Date(1600337700000+0300)/", + "/Date(1600493400000+0300)/", + "/Date(1600494300000+0300)/", + "/Date(1600495200000+0300)/", + "/Date(1600496100000+0300)/", + "/Date(1600497000000+0300)/", + "/Date(1600497900000+0300)/", + "/Date(1600498800000+0300)/", + "/Date(1600499700000+0300)/", + "/Date(1600500600000+0300)/", + "/Date(1600501500000+0300)/", + "/Date(1600502400000+0300)/", + "/Date(1600503300000+0300)/", + "/Date(1600504200000+0300)/", + "/Date(1600505100000+0300)/", + "/Date(1600506000000+0300)/", + "/Date(1600506900000+0300)/", + "/Date(1600507800000+0300)/", + "/Date(1600508700000+0300)/", + "/Date(1600509600000+0300)/", + "/Date(1600510500000+0300)/", + "/Date(1600511400000+0300)/", + "/Date(1600512300000+0300)/", + "/Date(1600513200000+0300)/", + "/Date(1600514100000+0300)/", + "/Date(1600515000000+0300)/", + "/Date(1600515900000+0300)/", + "/Date(1600516800000+0300)/", + "/Date(1600517700000+0300)/", + "/Date(1600518600000+0300)/", + "/Date(1600519500000+0300)/", + "/Date(1600520400000+0300)/", + "/Date(1600521300000+0300)/", + "/Date(1600522200000+0300)/", + "/Date(1600523100000+0300)/", + "/Date(1600579800000+0300)/", + "/Date(1600580700000+0300)/", + "/Date(1600581600000+0300)/", + "/Date(1600582500000+0300)/", + "/Date(1600583400000+0300)/", + "/Date(1600584300000+0300)/", + "/Date(1600585200000+0300)/", + "/Date(1600586100000+0300)/", + "/Date(1600587000000+0300)/", + "/Date(1600587900000+0300)/", + "/Date(1600588800000+0300)/", + "/Date(1600589700000+0300)/", + "/Date(1600590600000+0300)/", + "/Date(1600591500000+0300)/", + "/Date(1600592400000+0300)/", + "/Date(1600593300000+0300)/", + "/Date(1600594200000+0300)/", + "/Date(1600595100000+0300)/", + "/Date(1600596000000+0300)/", + "/Date(1600596900000+0300)/", + "/Date(1600597800000+0300)/", + "/Date(1600598700000+0300)/", + "/Date(1600599600000+0300)/", + "/Date(1600600500000+0300)/", + "/Date(1600601400000+0300)/", + "/Date(1600602300000+0300)/", + "/Date(1600603200000+0300)/", + "/Date(1600604100000+0300)/", + "/Date(1600605000000+0300)/", + "/Date(1600605900000+0300)/", + "/Date(1600606800000+0300)/", + "/Date(1600607700000+0300)/", + "/Date(1600608600000+0300)/", + "/Date(1600609500000+0300)/", + "/Date(1600666200000+0300)/", + "/Date(1600667100000+0300)/", + "/Date(1600668000000+0300)/", + "/Date(1600668900000+0300)/", + "/Date(1600669800000+0300)/", + "/Date(1600670700000+0300)/", + "/Date(1600671600000+0300)/", + "/Date(1600672500000+0300)/", + "/Date(1600673400000+0300)/", + "/Date(1600674300000+0300)/", + "/Date(1600675200000+0300)/", + "/Date(1600676100000+0300)/", + "/Date(1600677000000+0300)/", + "/Date(1600677900000+0300)/", + "/Date(1600678800000+0300)/", + "/Date(1600679700000+0300)/", + "/Date(1600680600000+0300)/", + "/Date(1600681500000+0300)/", + "/Date(1600682400000+0300)/", + "/Date(1600683300000+0300)/", + "/Date(1600684200000+0300)/", + "/Date(1600685100000+0300)/", + "/Date(1600686000000+0300)/", + "/Date(1600686900000+0300)/", + "/Date(1600687800000+0300)/", + "/Date(1600688700000+0300)/", + "/Date(1600689600000+0300)/", + "/Date(1600690500000+0300)/", + "/Date(1600691400000+0300)/", + "/Date(1600692300000+0300)/", + "/Date(1600693200000+0300)/", + "/Date(1600694100000+0300)/", + "/Date(1600695000000+0300)/", + "/Date(1600695900000+0300)/", + "/Date(1600752600000+0300)/", + "/Date(1600753500000+0300)/", + "/Date(1600754400000+0300)/", + "/Date(1600755300000+0300)/", + "/Date(1600756200000+0300)/", + "/Date(1600757100000+0300)/", + "/Date(1600758000000+0300)/", + "/Date(1600758900000+0300)/", + "/Date(1600759800000+0300)/", + "/Date(1600760700000+0300)/", + "/Date(1600761600000+0300)/", + "/Date(1600762500000+0300)/", + "/Date(1600763400000+0300)/", + "/Date(1600764300000+0300)/", + "/Date(1600765200000+0300)/", + "/Date(1600766100000+0300)/", + "/Date(1600767000000+0300)/", + "/Date(1600767900000+0300)/", + "/Date(1600768800000+0300)/", + "/Date(1600769700000+0300)/", + "/Date(1600770600000+0300)/", + "/Date(1600771500000+0300)/", + "/Date(1600772400000+0300)/", + "/Date(1600773300000+0300)/", + "/Date(1600774200000+0300)/", + "/Date(1600775100000+0300)/", + "/Date(1600776000000+0300)/", + "/Date(1600776900000+0300)/", + "/Date(1600777800000+0300)/", + "/Date(1600778700000+0300)/", + "/Date(1600779600000+0300)/", + "/Date(1600780500000+0300)/", + "/Date(1600781400000+0300)/", + "/Date(1600782300000+0300)/", + "/Date(1600839000000+0300)/", + "/Date(1600839900000+0300)/", + "/Date(1600840800000+0300)/", + "/Date(1600841700000+0300)/", + "/Date(1600842600000+0300)/", + "/Date(1600843500000+0300)/", + "/Date(1600844400000+0300)/", + "/Date(1600845300000+0300)/", + "/Date(1600846200000+0300)/", + "/Date(1600847100000+0300)/", + "/Date(1600848000000+0300)/", + "/Date(1600848900000+0300)/", + "/Date(1600849800000+0300)/", + "/Date(1600850700000+0300)/", + "/Date(1600851600000+0300)/", + "/Date(1600852500000+0300)/", + "/Date(1600853400000+0300)/", + "/Date(1600854300000+0300)/", + "/Date(1600855200000+0300)/", + "/Date(1600856100000+0300)/", + "/Date(1600857000000+0300)/", + "/Date(1600857900000+0300)/", + "/Date(1600858800000+0300)/", + "/Date(1600859700000+0300)/", + "/Date(1600860600000+0300)/", + "/Date(1600861500000+0300)/", + "/Date(1600862400000+0300)/", + "/Date(1600863300000+0300)/", + "/Date(1600864200000+0300)/", + "/Date(1600865100000+0300)/", + "/Date(1600866000000+0300)/", + "/Date(1600866900000+0300)/", + "/Date(1600867800000+0300)/", + "/Date(1600868700000+0300)/", + "/Date(1600925400000+0300)/", + "/Date(1600926300000+0300)/", + "/Date(1600927200000+0300)/", + "/Date(1600928100000+0300)/", + "/Date(1600929000000+0300)/", + "/Date(1600929900000+0300)/", + "/Date(1600930800000+0300)/", + "/Date(1600931700000+0300)/", + "/Date(1600932600000+0300)/", + "/Date(1600933500000+0300)/", + "/Date(1600934400000+0300)/", + "/Date(1600935300000+0300)/", + "/Date(1600936200000+0300)/", + "/Date(1600937100000+0300)/", + "/Date(1600938000000+0300)/", + "/Date(1600938900000+0300)/", + "/Date(1600939800000+0300)/", + "/Date(1600940700000+0300)/", + "/Date(1600941600000+0300)/", + "/Date(1600942500000+0300)/", + "/Date(1601098200000+0300)/", + "/Date(1601099100000+0300)/", + "/Date(1601100000000+0300)/", + "/Date(1601100900000+0300)/", + "/Date(1601101800000+0300)/", + "/Date(1601102700000+0300)/", + "/Date(1601103600000+0300)/", + "/Date(1601104500000+0300)/", + "/Date(1601105400000+0300)/", + "/Date(1601106300000+0300)/", + "/Date(1601107200000+0300)/", + "/Date(1601108100000+0300)/", + "/Date(1601109000000+0300)/", + "/Date(1601109900000+0300)/", + "/Date(1601110800000+0300)/", + "/Date(1601111700000+0300)/", + "/Date(1601112600000+0300)/", + "/Date(1601113500000+0300)/", + "/Date(1601114400000+0300)/", + "/Date(1601115300000+0300)/", + "/Date(1601116200000+0300)/", + "/Date(1601117100000+0300)/", + "/Date(1601118000000+0300)/", + "/Date(1601118900000+0300)/", + "/Date(1601119800000+0300)/", + "/Date(1601120700000+0300)/", + "/Date(1601121600000+0300)/", + "/Date(1601122500000+0300)/", + "/Date(1601123400000+0300)/", + "/Date(1601124300000+0300)/", + "/Date(1601125200000+0300)/", + "/Date(1601126100000+0300)/", + "/Date(1601127000000+0300)/", + "/Date(1601127900000+0300)/", + "/Date(1601184600000+0300)/", + "/Date(1601185500000+0300)/", + "/Date(1601186400000+0300)/", + "/Date(1601187300000+0300)/", + "/Date(1601188200000+0300)/", + "/Date(1601189100000+0300)/", + "/Date(1601190000000+0300)/", + "/Date(1601190900000+0300)/", + "/Date(1601191800000+0300)/", + "/Date(1601192700000+0300)/", + "/Date(1601193600000+0300)/", + "/Date(1601194500000+0300)/", + "/Date(1601195400000+0300)/", + "/Date(1601196300000+0300)/", + "/Date(1601197200000+0300)/", + "/Date(1601198100000+0300)/", + "/Date(1601199000000+0300)/", + "/Date(1601199900000+0300)/", + "/Date(1601200800000+0300)/", + "/Date(1601201700000+0300)/", + "/Date(1601202600000+0300)/", + "/Date(1601203500000+0300)/", + "/Date(1601204400000+0300)/", + "/Date(1601205300000+0300)/", + "/Date(1601206200000+0300)/", + "/Date(1601207100000+0300)/", + "/Date(1601208000000+0300)/", + "/Date(1601208900000+0300)/", + "/Date(1601209800000+0300)/", + "/Date(1601210700000+0300)/", + "/Date(1601211600000+0300)/", + "/Date(1601212500000+0300)/", + "/Date(1601213400000+0300)/", + "/Date(1601214300000+0300)/", + "/Date(1601271000000+0300)/", + "/Date(1601271900000+0300)/", + "/Date(1601272800000+0300)/", + "/Date(1601273700000+0300)/", + "/Date(1601274600000+0300)/", + "/Date(1601275500000+0300)/", + "/Date(1601276400000+0300)/", + "/Date(1601277300000+0300)/", + "/Date(1601278200000+0300)/", + "/Date(1601279100000+0300)/", + "/Date(1601280000000+0300)/", + "/Date(1601280900000+0300)/", + "/Date(1601281800000+0300)/", + "/Date(1601282700000+0300)/", + "/Date(1601283600000+0300)/", + "/Date(1601284500000+0300)/", + "/Date(1601285400000+0300)/", + "/Date(1601286300000+0300)/", + "/Date(1601287200000+0300)/", + "/Date(1601288100000+0300)/", + "/Date(1601289000000+0300)/", + "/Date(1601289900000+0300)/", + "/Date(1601290800000+0300)/", + "/Date(1601291700000+0300)/", + "/Date(1601292600000+0300)/", + "/Date(1601293500000+0300)/", + "/Date(1601294400000+0300)/", + "/Date(1601295300000+0300)/", + "/Date(1601296200000+0300)/", + "/Date(1601297100000+0300)/", + "/Date(1601298000000+0300)/", + "/Date(1601298900000+0300)/", + "/Date(1601299800000+0300)/", + "/Date(1601300700000+0300)/", + "/Date(1601357400000+0300)/", + "/Date(1601358300000+0300)/", + "/Date(1601359200000+0300)/", + "/Date(1601360100000+0300)/", + "/Date(1601361000000+0300)/", + "/Date(1601361900000+0300)/", + "/Date(1601362800000+0300)/", + "/Date(1601363700000+0300)/", + "/Date(1601364600000+0300)/", + "/Date(1601365500000+0300)/", + "/Date(1601366400000+0300)/", + "/Date(1601367300000+0300)/", + "/Date(1601368200000+0300)/", + "/Date(1601369100000+0300)/", + "/Date(1601370000000+0300)/", + "/Date(1601370900000+0300)/", + "/Date(1601371800000+0300)/", + "/Date(1601372700000+0300)/", + "/Date(1601373600000+0300)/", + "/Date(1601374500000+0300)/", + "/Date(1601375400000+0300)/", + "/Date(1601376300000+0300)/", + "/Date(1601377200000+0300)/", + "/Date(1601378100000+0300)/", + "/Date(1601379000000+0300)/", + "/Date(1601379900000+0300)/", + "/Date(1601380800000+0300)/", + "/Date(1601381700000+0300)/", + "/Date(1601382600000+0300)/", + "/Date(1601383500000+0300)/", + "/Date(1601384400000+0300)/", + "/Date(1601385300000+0300)/", + "/Date(1601386200000+0300)/", + "/Date(1601387100000+0300)/", + "/Date(1601443800000+0300)/", + "/Date(1601444700000+0300)/", + "/Date(1601445600000+0300)/", + "/Date(1601446500000+0300)/", + "/Date(1601447400000+0300)/", + "/Date(1601448300000+0300)/", + "/Date(1601449200000+0300)/", + "/Date(1601450100000+0300)/", + "/Date(1601451000000+0300)/", + "/Date(1601451900000+0300)/", + "/Date(1601452800000+0300)/", + "/Date(1601453700000+0300)/", + "/Date(1601454600000+0300)/", + "/Date(1601455500000+0300)/", + "/Date(1601456400000+0300)/", + "/Date(1601457300000+0300)/", + "/Date(1601458200000+0300)/", + "/Date(1601459100000+0300)/", + "/Date(1601460000000+0300)/", + "/Date(1601460900000+0300)/", + "/Date(1601461800000+0300)/", + "/Date(1601462700000+0300)/", + "/Date(1601463600000+0300)/", + "/Date(1601464500000+0300)/", + "/Date(1601465400000+0300)/", + "/Date(1601466300000+0300)/", + "/Date(1601467200000+0300)/", + "/Date(1601468100000+0300)/", + "/Date(1601469000000+0300)/", + "/Date(1601469900000+0300)/", + "/Date(1601470800000+0300)/", + "/Date(1601471700000+0300)/", + "/Date(1601472600000+0300)/", + "/Date(1601473500000+0300)/", + "/Date(1601530200000+0300)/", + "/Date(1601531100000+0300)/", + "/Date(1601532000000+0300)/", + "/Date(1601532900000+0300)/", + "/Date(1601533800000+0300)/", + "/Date(1601534700000+0300)/", + "/Date(1601535600000+0300)/", + "/Date(1601536500000+0300)/", + "/Date(1601537400000+0300)/", + "/Date(1601538300000+0300)/", + "/Date(1601539200000+0300)/", + "/Date(1601540100000+0300)/", + "/Date(1601541000000+0300)/", + "/Date(1601541900000+0300)/", + "/Date(1601542800000+0300)/", + "/Date(1601543700000+0300)/", + "/Date(1601544600000+0300)/", + "/Date(1601545500000+0300)/", + "/Date(1601546400000+0300)/", + "/Date(1601547300000+0300)/", + "/Date(1601703000000+0300)/", + "/Date(1601703900000+0300)/", + "/Date(1601704800000+0300)/", + "/Date(1601705700000+0300)/", + "/Date(1601706600000+0300)/", + "/Date(1601707500000+0300)/", + "/Date(1601708400000+0300)/", + "/Date(1601709300000+0300)/", + "/Date(1601710200000+0300)/", + "/Date(1601711100000+0300)/", + "/Date(1601712000000+0300)/", + "/Date(1601712900000+0300)/", + "/Date(1601713800000+0300)/", + "/Date(1601714700000+0300)/", + "/Date(1601715600000+0300)/", + "/Date(1601716500000+0300)/", + "/Date(1601717400000+0300)/", + "/Date(1601718300000+0300)/", + "/Date(1601719200000+0300)/", + "/Date(1601720100000+0300)/", + "/Date(1601721000000+0300)/", + "/Date(1601721900000+0300)/", + "/Date(1601722800000+0300)/", + "/Date(1601723700000+0300)/", + "/Date(1601724600000+0300)/", + "/Date(1601725500000+0300)/", + "/Date(1601726400000+0300)/", + "/Date(1601727300000+0300)/", + "/Date(1601728200000+0300)/", + "/Date(1601729100000+0300)/", + "/Date(1601730000000+0300)/", + "/Date(1601730900000+0300)/", + "/Date(1601731800000+0300)/", + "/Date(1601732700000+0300)/", + "/Date(1601789400000+0300)/", + "/Date(1601790300000+0300)/", + "/Date(1601791200000+0300)/", + "/Date(1601792100000+0300)/", + "/Date(1601793000000+0300)/", + "/Date(1601793900000+0300)/", + "/Date(1601794800000+0300)/", + "/Date(1601795700000+0300)/", + "/Date(1601796600000+0300)/", + "/Date(1601797500000+0300)/", + "/Date(1601798400000+0300)/", + "/Date(1601799300000+0300)/", + "/Date(1601800200000+0300)/", + "/Date(1601801100000+0300)/", + "/Date(1601802000000+0300)/", + "/Date(1601802900000+0300)/", + "/Date(1601803800000+0300)/", + "/Date(1601804700000+0300)/", + "/Date(1601805600000+0300)/", + "/Date(1601806500000+0300)/", + "/Date(1601807400000+0300)/", + "/Date(1601808300000+0300)/", + "/Date(1601809200000+0300)/", + "/Date(1601810100000+0300)/", + "/Date(1601811000000+0300)/", + "/Date(1601811900000+0300)/", + "/Date(1601812800000+0300)/", + "/Date(1601813700000+0300)/", + "/Date(1601814600000+0300)/", + "/Date(1601815500000+0300)/", + "/Date(1601816400000+0300)/", + "/Date(1601817300000+0300)/", + "/Date(1601818200000+0300)/", + "/Date(1601819100000+0300)/", + "/Date(1601875800000+0300)/", + "/Date(1601876700000+0300)/", + "/Date(1601877600000+0300)/", + "/Date(1601878500000+0300)/", + "/Date(1601879400000+0300)/", + "/Date(1601880300000+0300)/", + "/Date(1601881200000+0300)/", + "/Date(1601882100000+0300)/", + "/Date(1601883000000+0300)/", + "/Date(1601883900000+0300)/", + "/Date(1601884800000+0300)/", + "/Date(1601885700000+0300)/", + "/Date(1601886600000+0300)/", + "/Date(1601887500000+0300)/", + "/Date(1601888400000+0300)/", + "/Date(1601889300000+0300)/", + "/Date(1601890200000+0300)/", + "/Date(1601891100000+0300)/", + "/Date(1601892000000+0300)/", + "/Date(1601892900000+0300)/", + "/Date(1601893800000+0300)/", + "/Date(1601894700000+0300)/", + "/Date(1601895600000+0300)/", + "/Date(1601896500000+0300)/", + "/Date(1601897400000+0300)/", + "/Date(1601898300000+0300)/", + "/Date(1601899200000+0300)/", + "/Date(1601900100000+0300)/", + "/Date(1601901000000+0300)/", + "/Date(1601901900000+0300)/", + "/Date(1601902800000+0300)/", + "/Date(1601903700000+0300)/", + "/Date(1601904600000+0300)/", + "/Date(1601905500000+0300)/", + "/Date(1601962200000+0300)/", + "/Date(1601963100000+0300)/", + "/Date(1601964000000+0300)/", + "/Date(1601964900000+0300)/", + "/Date(1601965800000+0300)/", + "/Date(1601966700000+0300)/", + "/Date(1601967600000+0300)/", + "/Date(1601968500000+0300)/", + "/Date(1601969400000+0300)/", + "/Date(1601970300000+0300)/", + "/Date(1601971200000+0300)/", + "/Date(1601972100000+0300)/", + "/Date(1601973000000+0300)/", + "/Date(1601973900000+0300)/", + "/Date(1601974800000+0300)/", + "/Date(1601975700000+0300)/", + "/Date(1601976600000+0300)/", + "/Date(1601977500000+0300)/", + "/Date(1601978400000+0300)/", + "/Date(1601979300000+0300)/", + "/Date(1601980200000+0300)/", + "/Date(1601981100000+0300)/", + "/Date(1601982000000+0300)/", + "/Date(1601982900000+0300)/", + "/Date(1601983800000+0300)/", + "/Date(1601984700000+0300)/", + "/Date(1601985600000+0300)/", + "/Date(1601986500000+0300)/", + "/Date(1601987400000+0300)/", + "/Date(1601988300000+0300)/", + "/Date(1601989200000+0300)/", + "/Date(1601990100000+0300)/", + "/Date(1601991000000+0300)/", + "/Date(1601991900000+0300)/", + "/Date(1602048600000+0300)/", + "/Date(1602049500000+0300)/", + "/Date(1602050400000+0300)/", + "/Date(1602051300000+0300)/", + "/Date(1602052200000+0300)/", + "/Date(1602053100000+0300)/", + "/Date(1602054000000+0300)/", + "/Date(1602054900000+0300)/", + "/Date(1602055800000+0300)/", + "/Date(1602056700000+0300)/", + "/Date(1602057600000+0300)/", + "/Date(1602058500000+0300)/", + "/Date(1602059400000+0300)/", + "/Date(1602060300000+0300)/", + "/Date(1602061200000+0300)/", + "/Date(1602062100000+0300)/", + "/Date(1602063000000+0300)/", + "/Date(1602063900000+0300)/", + "/Date(1602064800000+0300)/", + "/Date(1602065700000+0300)/", + "/Date(1602066600000+0300)/", + "/Date(1602067500000+0300)/", + "/Date(1602068400000+0300)/", + "/Date(1602069300000+0300)/", + "/Date(1602070200000+0300)/", + "/Date(1602071100000+0300)/", + "/Date(1602072000000+0300)/", + "/Date(1602072900000+0300)/", + "/Date(1602073800000+0300)/", + "/Date(1602074700000+0300)/", + "/Date(1602075600000+0300)/", + "/Date(1602076500000+0300)/", + "/Date(1602077400000+0300)/", + "/Date(1602078300000+0300)/", + "/Date(1602135000000+0300)/", + "/Date(1602135900000+0300)/", + "/Date(1602136800000+0300)/", + "/Date(1602137700000+0300)/", + "/Date(1602138600000+0300)/", + "/Date(1602139500000+0300)/", + "/Date(1602140400000+0300)/", + "/Date(1602141300000+0300)/", + "/Date(1602142200000+0300)/", + "/Date(1602143100000+0300)/", + "/Date(1602144000000+0300)/", + "/Date(1602144900000+0300)/", + "/Date(1602145800000+0300)/", + "/Date(1602146700000+0300)/", + "/Date(1602147600000+0300)/", + "/Date(1602148500000+0300)/", + "/Date(1602149400000+0300)/", + "/Date(1602150300000+0300)/", + "/Date(1602151200000+0300)/", + "/Date(1602152100000+0300)/", + "/Date(1602307800000+0300)/", + "/Date(1602308700000+0300)/", + "/Date(1602309600000+0300)/", + "/Date(1602310500000+0300)/", + "/Date(1602311400000+0300)/", + "/Date(1602312300000+0300)/", + "/Date(1602313200000+0300)/", + "/Date(1602314100000+0300)/", + "/Date(1602315000000+0300)/", + "/Date(1602315900000+0300)/", + "/Date(1602316800000+0300)/", + "/Date(1602317700000+0300)/", + "/Date(1602318600000+0300)/", + "/Date(1602319500000+0300)/", + "/Date(1602320400000+0300)/", + "/Date(1602321300000+0300)/", + "/Date(1602322200000+0300)/", + "/Date(1602323100000+0300)/", + "/Date(1602324000000+0300)/", + "/Date(1602324900000+0300)/", + "/Date(1602325800000+0300)/", + "/Date(1602326700000+0300)/", + "/Date(1602327600000+0300)/", + "/Date(1602328500000+0300)/", + "/Date(1602329400000+0300)/", + "/Date(1602330300000+0300)/", + "/Date(1602331200000+0300)/", + "/Date(1602332100000+0300)/", + "/Date(1602333000000+0300)/", + "/Date(1602333900000+0300)/", + "/Date(1602334800000+0300)/", + "/Date(1602335700000+0300)/", + "/Date(1602336600000+0300)/", + "/Date(1602337500000+0300)/", + "/Date(1602394200000+0300)/", + "/Date(1602395100000+0300)/", + "/Date(1602396000000+0300)/", + "/Date(1602396900000+0300)/", + "/Date(1602397800000+0300)/", + "/Date(1602398700000+0300)/", + "/Date(1602399600000+0300)/", + "/Date(1602400500000+0300)/", + "/Date(1602401400000+0300)/", + "/Date(1602402300000+0300)/", + "/Date(1602403200000+0300)/", + "/Date(1602404100000+0300)/", + "/Date(1602405000000+0300)/", + "/Date(1602405900000+0300)/", + "/Date(1602406800000+0300)/", + "/Date(1602407700000+0300)/", + "/Date(1602408600000+0300)/", + "/Date(1602409500000+0300)/", + "/Date(1602410400000+0300)/", + "/Date(1602411300000+0300)/", + "/Date(1602412200000+0300)/", + "/Date(1602413100000+0300)/", + "/Date(1602414000000+0300)/", + "/Date(1602414900000+0300)/", + "/Date(1602415800000+0300)/", + "/Date(1602416700000+0300)/", + "/Date(1602417600000+0300)/", + "/Date(1602418500000+0300)/", + "/Date(1602419400000+0300)/", + "/Date(1602420300000+0300)/", + "/Date(1602421200000+0300)/", + "/Date(1602422100000+0300)/", + "/Date(1602423000000+0300)/", + "/Date(1602423900000+0300)/", + "/Date(1602480600000+0300)/", + "/Date(1602481500000+0300)/", + "/Date(1602482400000+0300)/", + "/Date(1602483300000+0300)/", + "/Date(1602484200000+0300)/", + "/Date(1602485100000+0300)/", + "/Date(1602486000000+0300)/", + "/Date(1602486900000+0300)/", + "/Date(1602487800000+0300)/", + "/Date(1602488700000+0300)/", + "/Date(1602489600000+0300)/", + "/Date(1602490500000+0300)/", + "/Date(1602491400000+0300)/", + "/Date(1602492300000+0300)/", + "/Date(1602493200000+0300)/", + "/Date(1602494100000+0300)/", + "/Date(1602495000000+0300)/", + "/Date(1602495900000+0300)/", + "/Date(1602496800000+0300)/", + "/Date(1602497700000+0300)/", + "/Date(1602498600000+0300)/", + "/Date(1602499500000+0300)/", + "/Date(1602500400000+0300)/", + "/Date(1602501300000+0300)/", + "/Date(1602502200000+0300)/", + "/Date(1602503100000+0300)/", + "/Date(1602504000000+0300)/", + "/Date(1602504900000+0300)/", + "/Date(1602505800000+0300)/", + "/Date(1602506700000+0300)/", + "/Date(1602507600000+0300)/", + "/Date(1602508500000+0300)/", + "/Date(1602509400000+0300)/", + "/Date(1602510300000+0300)/", + "/Date(1602567000000+0300)/", + "/Date(1602567900000+0300)/", + "/Date(1602568800000+0300)/", + "/Date(1602569700000+0300)/", + "/Date(1602570600000+0300)/", + "/Date(1602571500000+0300)/", + "/Date(1602572400000+0300)/", + "/Date(1602573300000+0300)/", + "/Date(1602574200000+0300)/", + "/Date(1602575100000+0300)/", + "/Date(1602576000000+0300)/", + "/Date(1602576900000+0300)/", + "/Date(1602577800000+0300)/", + "/Date(1602578700000+0300)/", + "/Date(1602579600000+0300)/", + "/Date(1602580500000+0300)/", + "/Date(1602581400000+0300)/", + "/Date(1602582300000+0300)/", + "/Date(1602583200000+0300)/", + "/Date(1602584100000+0300)/", + "/Date(1602585000000+0300)/", + "/Date(1602585900000+0300)/", + "/Date(1602586800000+0300)/", + "/Date(1602587700000+0300)/", + "/Date(1602588600000+0300)/", + "/Date(1602589500000+0300)/", + "/Date(1602590400000+0300)/", + "/Date(1602591300000+0300)/", + "/Date(1602592200000+0300)/", + "/Date(1602593100000+0300)/", + "/Date(1602594000000+0300)/", + "/Date(1602594900000+0300)/", + "/Date(1602595800000+0300)/", + "/Date(1602596700000+0300)/", + "/Date(1602653400000+0300)/", + "/Date(1602654300000+0300)/", + "/Date(1602655200000+0300)/", + "/Date(1602656100000+0300)/", + "/Date(1602657000000+0300)/", + "/Date(1602657900000+0300)/", + "/Date(1602658800000+0300)/", + "/Date(1602659700000+0300)/", + "/Date(1602660600000+0300)/", + "/Date(1602661500000+0300)/", + "/Date(1602662400000+0300)/", + "/Date(1602663300000+0300)/", + "/Date(1602664200000+0300)/", + "/Date(1602665100000+0300)/", + "/Date(1602666000000+0300)/", + "/Date(1602666900000+0300)/", + "/Date(1602667800000+0300)/", + "/Date(1602668700000+0300)/", + "/Date(1602669600000+0300)/", + "/Date(1602670500000+0300)/", + "/Date(1602671400000+0300)/", + "/Date(1602672300000+0300)/", + "/Date(1602673200000+0300)/", + "/Date(1602674100000+0300)/", + "/Date(1602675000000+0300)/", + "/Date(1602675900000+0300)/", + "/Date(1602676800000+0300)/", + "/Date(1602677700000+0300)/", + "/Date(1602678600000+0300)/", + "/Date(1602679500000+0300)/", + "/Date(1602680400000+0300)/", + "/Date(1602681300000+0300)/", + "/Date(1602682200000+0300)/", + "/Date(1602683100000+0300)/", + "/Date(1602739800000+0300)/", + "/Date(1602740700000+0300)/", + "/Date(1602741600000+0300)/", + "/Date(1602742500000+0300)/", + "/Date(1602743400000+0300)/", + "/Date(1602744300000+0300)/", + "/Date(1602745200000+0300)/", + "/Date(1602746100000+0300)/", + "/Date(1602747000000+0300)/", + "/Date(1602747900000+0300)/", + "/Date(1602748800000+0300)/", + "/Date(1602749700000+0300)/", + "/Date(1602750600000+0300)/", + "/Date(1602751500000+0300)/", + "/Date(1602752400000+0300)/", + "/Date(1602753300000+0300)/", + "/Date(1602754200000+0300)/", + "/Date(1602755100000+0300)/", + "/Date(1602756000000+0300)/", + "/Date(1602756900000+0300)/", + "/Date(1602912600000+0300)/", + "/Date(1602913500000+0300)/", + "/Date(1602914400000+0300)/", + "/Date(1602915300000+0300)/", + "/Date(1602916200000+0300)/", + "/Date(1602917100000+0300)/", + "/Date(1602918000000+0300)/", + "/Date(1602918900000+0300)/", + "/Date(1602919800000+0300)/", + "/Date(1602920700000+0300)/", + "/Date(1602921600000+0300)/", + "/Date(1602922500000+0300)/", + "/Date(1602923400000+0300)/", + "/Date(1602924300000+0300)/", + "/Date(1602925200000+0300)/", + "/Date(1602926100000+0300)/", + "/Date(1602927000000+0300)/", + "/Date(1602927900000+0300)/", + "/Date(1602928800000+0300)/", + "/Date(1602929700000+0300)/", + "/Date(1602930600000+0300)/", + "/Date(1602931500000+0300)/", + "/Date(1602932400000+0300)/", + "/Date(1602933300000+0300)/", + "/Date(1602934200000+0300)/", + "/Date(1602935100000+0300)/", + "/Date(1602936000000+0300)/", + "/Date(1602936900000+0300)/", + "/Date(1602937800000+0300)/", + "/Date(1602938700000+0300)/", + "/Date(1602939600000+0300)/", + "/Date(1602940500000+0300)/", + "/Date(1602941400000+0300)/", + "/Date(1602942300000+0300)/", + "/Date(1602999000000+0300)/", + "/Date(1602999900000+0300)/", + "/Date(1603000800000+0300)/", + "/Date(1603001700000+0300)/", + "/Date(1603002600000+0300)/", + "/Date(1603003500000+0300)/", + "/Date(1603004400000+0300)/", + "/Date(1603005300000+0300)/", + "/Date(1603006200000+0300)/", + "/Date(1603007100000+0300)/", + "/Date(1603008000000+0300)/", + "/Date(1603008900000+0300)/", + "/Date(1603009800000+0300)/", + "/Date(1603010700000+0300)/", + "/Date(1603011600000+0300)/", + "/Date(1603012500000+0300)/", + "/Date(1603013400000+0300)/", + "/Date(1603014300000+0300)/", + "/Date(1603015200000+0300)/", + "/Date(1603016100000+0300)/", + "/Date(1603017000000+0300)/", + "/Date(1603017900000+0300)/", + "/Date(1603018800000+0300)/", + "/Date(1603019700000+0300)/", + "/Date(1603020600000+0300)/", + "/Date(1603021500000+0300)/", + "/Date(1603022400000+0300)/", + "/Date(1603023300000+0300)/", + "/Date(1603024200000+0300)/", + "/Date(1603025100000+0300)/", + "/Date(1603026000000+0300)/", + "/Date(1603026900000+0300)/", + "/Date(1603027800000+0300)/", + "/Date(1603028700000+0300)/", + "/Date(1603085400000+0300)/", + "/Date(1603086300000+0300)/", + "/Date(1603087200000+0300)/", + "/Date(1603088100000+0300)/", + "/Date(1603089000000+0300)/", + "/Date(1603089900000+0300)/", + "/Date(1603090800000+0300)/", + "/Date(1603091700000+0300)/", + "/Date(1603092600000+0300)/", + "/Date(1603093500000+0300)/", + "/Date(1603094400000+0300)/", + "/Date(1603095300000+0300)/", + "/Date(1603096200000+0300)/", + "/Date(1603097100000+0300)/", + "/Date(1603098000000+0300)/", + "/Date(1603098900000+0300)/", + "/Date(1603099800000+0300)/", + "/Date(1603100700000+0300)/", + "/Date(1603101600000+0300)/", + "/Date(1603102500000+0300)/", + "/Date(1603103400000+0300)/", + "/Date(1603104300000+0300)/", + "/Date(1603105200000+0300)/", + "/Date(1603106100000+0300)/", + "/Date(1603107000000+0300)/", + "/Date(1603107900000+0300)/", + "/Date(1603108800000+0300)/", + "/Date(1603109700000+0300)/", + "/Date(1603110600000+0300)/", + "/Date(1603111500000+0300)/", + "/Date(1603112400000+0300)/", + "/Date(1603113300000+0300)/", + "/Date(1603114200000+0300)/", + "/Date(1603115100000+0300)/", + "/Date(1603171800000+0300)/", + "/Date(1603172700000+0300)/", + "/Date(1603173600000+0300)/", + "/Date(1603174500000+0300)/", + "/Date(1603175400000+0300)/", + "/Date(1603176300000+0300)/", + "/Date(1603177200000+0300)/", + "/Date(1603178100000+0300)/", + "/Date(1603179000000+0300)/", + "/Date(1603179900000+0300)/", + "/Date(1603180800000+0300)/", + "/Date(1603181700000+0300)/", + "/Date(1603182600000+0300)/", + "/Date(1603183500000+0300)/", + "/Date(1603184400000+0300)/", + "/Date(1603185300000+0300)/", + "/Date(1603186200000+0300)/", + "/Date(1603187100000+0300)/", + "/Date(1603188000000+0300)/", + "/Date(1603188900000+0300)/", + "/Date(1603189800000+0300)/", + "/Date(1603190700000+0300)/", + "/Date(1603191600000+0300)/", + "/Date(1603192500000+0300)/", + "/Date(1603193400000+0300)/", + "/Date(1603194300000+0300)/", + "/Date(1603195200000+0300)/", + "/Date(1603196100000+0300)/", + "/Date(1603197000000+0300)/", + "/Date(1603197900000+0300)/", + "/Date(1603198800000+0300)/", + "/Date(1603199700000+0300)/", + "/Date(1603200600000+0300)/", + "/Date(1603201500000+0300)/", + "/Date(1603258200000+0300)/", + "/Date(1603259100000+0300)/", + "/Date(1603260000000+0300)/", + "/Date(1603260900000+0300)/", + "/Date(1603261800000+0300)/", + "/Date(1603262700000+0300)/", + "/Date(1603263600000+0300)/", + "/Date(1603264500000+0300)/", + "/Date(1603265400000+0300)/", + "/Date(1603266300000+0300)/", + "/Date(1603267200000+0300)/", + "/Date(1603268100000+0300)/", + "/Date(1603269000000+0300)/", + "/Date(1603269900000+0300)/", + "/Date(1603270800000+0300)/", + "/Date(1603271700000+0300)/", + "/Date(1603272600000+0300)/", + "/Date(1603273500000+0300)/", + "/Date(1603274400000+0300)/", + "/Date(1603275300000+0300)/", + "/Date(1603276200000+0300)/", + "/Date(1603277100000+0300)/", + "/Date(1603278000000+0300)/", + "/Date(1603278900000+0300)/", + "/Date(1603279800000+0300)/", + "/Date(1603280700000+0300)/", + "/Date(1603281600000+0300)/", + "/Date(1603282500000+0300)/", + "/Date(1603283400000+0300)/", + "/Date(1603284300000+0300)/", + "/Date(1603285200000+0300)/", + "/Date(1603286100000+0300)/", + "/Date(1603287000000+0300)/", + "/Date(1603287900000+0300)/", + "/Date(1603344600000+0300)/", + "/Date(1603345500000+0300)/", + "/Date(1603346400000+0300)/", + "/Date(1603347300000+0300)/", + "/Date(1603348200000+0300)/", + "/Date(1603349100000+0300)/", + "/Date(1603350000000+0300)/", + "/Date(1603350900000+0300)/", + "/Date(1603351800000+0300)/", + "/Date(1603352700000+0300)/", + "/Date(1603353600000+0300)/", + "/Date(1603354500000+0300)/", + "/Date(1603355400000+0300)/", + "/Date(1603356300000+0300)/", + "/Date(1603357200000+0300)/", + "/Date(1603358100000+0300)/", + "/Date(1603359000000+0300)/", + "/Date(1603359900000+0300)/", + "/Date(1603360800000+0300)/", + "/Date(1603361700000+0300)/", + "/Date(1603517400000+0300)/", + "/Date(1603518300000+0300)/", + "/Date(1603519200000+0300)/", + "/Date(1603520100000+0300)/", + "/Date(1603521000000+0300)/", + "/Date(1603521900000+0300)/", + "/Date(1603522800000+0300)/", + "/Date(1603523700000+0300)/", + "/Date(1603524600000+0300)/", + "/Date(1603525500000+0300)/", + "/Date(1603526400000+0300)/", + "/Date(1603527300000+0300)/", + "/Date(1603528200000+0300)/", + "/Date(1603529100000+0300)/", + "/Date(1603530000000+0300)/", + "/Date(1603530900000+0300)/", + "/Date(1603531800000+0300)/", + "/Date(1603532700000+0300)/", + "/Date(1603533600000+0300)/", + "/Date(1603534500000+0300)/", + "/Date(1603535400000+0300)/", + "/Date(1603536300000+0300)/", + "/Date(1603537200000+0300)/", + "/Date(1603538100000+0300)/", + "/Date(1603539000000+0300)/", + "/Date(1603539900000+0300)/", + "/Date(1603540800000+0300)/", + "/Date(1603541700000+0300)/", + "/Date(1603542600000+0300)/", + "/Date(1603543500000+0300)/", + "/Date(1603544400000+0300)/", + "/Date(1603545300000+0300)/", + "/Date(1603546200000+0300)/", + "/Date(1603547100000+0300)/", + "/Date(1603603800000+0300)/", + "/Date(1603604700000+0300)/", + "/Date(1603605600000+0300)/", + "/Date(1603606500000+0300)/", + "/Date(1603607400000+0300)/", + "/Date(1603608300000+0300)/", + "/Date(1603609200000+0300)/", + "/Date(1603610100000+0300)/", + "/Date(1603611000000+0300)/", + "/Date(1603611900000+0300)/", + "/Date(1603612800000+0300)/", + "/Date(1603613700000+0300)/", + "/Date(1603614600000+0300)/", + "/Date(1603615500000+0300)/", + "/Date(1603616400000+0300)/", + "/Date(1603617300000+0300)/", + "/Date(1603618200000+0300)/", + "/Date(1603619100000+0300)/", + "/Date(1603620000000+0300)/", + "/Date(1603620900000+0300)/", + "/Date(1603621800000+0300)/", + "/Date(1603622700000+0300)/", + "/Date(1603623600000+0300)/", + "/Date(1603624500000+0300)/", + "/Date(1603625400000+0300)/", + "/Date(1603626300000+0300)/", + "/Date(1603627200000+0300)/", + "/Date(1603628100000+0300)/", + "/Date(1603629000000+0300)/", + "/Date(1603629900000+0300)/", + "/Date(1603630800000+0300)/", + "/Date(1603631700000+0300)/", + "/Date(1603632600000+0300)/", + "/Date(1603633500000+0300)/", + "/Date(1603690200000+0300)/", + "/Date(1603691100000+0300)/", + "/Date(1603692000000+0300)/", + "/Date(1603692900000+0300)/", + "/Date(1603693800000+0300)/", + "/Date(1603694700000+0300)/", + "/Date(1603695600000+0300)/", + "/Date(1603696500000+0300)/", + "/Date(1603697400000+0300)/", + "/Date(1603698300000+0300)/", + "/Date(1603699200000+0300)/", + "/Date(1603700100000+0300)/", + "/Date(1603701000000+0300)/", + "/Date(1603701900000+0300)/", + "/Date(1603702800000+0300)/", + "/Date(1603703700000+0300)/", + "/Date(1603704600000+0300)/", + "/Date(1603705500000+0300)/", + "/Date(1603706400000+0300)/", + "/Date(1603707300000+0300)/", + "/Date(1603708200000+0300)/", + "/Date(1603709100000+0300)/", + "/Date(1603710000000+0300)/", + "/Date(1603710900000+0300)/", + "/Date(1603711800000+0300)/", + "/Date(1603712700000+0300)/", + "/Date(1603713600000+0300)/", + "/Date(1603714500000+0300)/", + "/Date(1603715400000+0300)/", + "/Date(1603716300000+0300)/", + "/Date(1603717200000+0300)/", + "/Date(1603718100000+0300)/", + "/Date(1603719000000+0300)/", + "/Date(1603719900000+0300)/", + "/Date(1603776600000+0300)/", + "/Date(1603777500000+0300)/", + "/Date(1603778400000+0300)/", + "/Date(1603779300000+0300)/", + "/Date(1603780200000+0300)/", + "/Date(1603781100000+0300)/", + "/Date(1603782000000+0300)/", + "/Date(1603782900000+0300)/", + "/Date(1603783800000+0300)/", + "/Date(1603784700000+0300)/", + "/Date(1603785600000+0300)/", + "/Date(1603786500000+0300)/", + "/Date(1603787400000+0300)/", + "/Date(1603788300000+0300)/", + "/Date(1603789200000+0300)/", + "/Date(1603790100000+0300)/", + "/Date(1603791000000+0300)/", + "/Date(1603791900000+0300)/", + "/Date(1603792800000+0300)/", + "/Date(1603793700000+0300)/", + "/Date(1603794600000+0300)/", + "/Date(1603795500000+0300)/", + "/Date(1603796400000+0300)/", + "/Date(1603797300000+0300)/", + "/Date(1603798200000+0300)/", + "/Date(1603799100000+0300)/", + "/Date(1603800000000+0300)/", + "/Date(1603800900000+0300)/", + "/Date(1603801800000+0300)/", + "/Date(1603802700000+0300)/", + "/Date(1603803600000+0300)/", + "/Date(1603804500000+0300)/", + "/Date(1603805400000+0300)/", + "/Date(1603806300000+0300)/", + "/Date(1603863000000+0300)/", + "/Date(1603863900000+0300)/", + "/Date(1603864800000+0300)/", + "/Date(1603865700000+0300)/", + "/Date(1603866600000+0300)/", + "/Date(1603867500000+0300)/", + "/Date(1603868400000+0300)/", + "/Date(1603869300000+0300)/", + "/Date(1603870200000+0300)/", + "/Date(1603871100000+0300)/", + "/Date(1603872000000+0300)/", + "/Date(1603872900000+0300)/", + "/Date(1603873800000+0300)/", + "/Date(1603874700000+0300)/", + "/Date(1603875600000+0300)/", + "/Date(1603876500000+0300)/", + "/Date(1603877400000+0300)/", + "/Date(1603878300000+0300)/", + "/Date(1603879200000+0300)/", + "/Date(1603880100000+0300)/", + "/Date(1603881000000+0300)/", + "/Date(1603881900000+0300)/", + "/Date(1603882800000+0300)/", + "/Date(1603883700000+0300)/", + "/Date(1603884600000+0300)/", + "/Date(1603885500000+0300)/", + "/Date(1603886400000+0300)/", + "/Date(1603887300000+0300)/", + "/Date(1603888200000+0300)/", + "/Date(1603889100000+0300)/", + "/Date(1603890000000+0300)/", + "/Date(1603890900000+0300)/", + "/Date(1603891800000+0300)/", + "/Date(1603892700000+0300)/", + "/Date(1603949400000+0300)/", + "/Date(1603950300000+0300)/", + "/Date(1603951200000+0300)/", + "/Date(1603952100000+0300)/", + "/Date(1603953000000+0300)/", + "/Date(1603953900000+0300)/", + "/Date(1603954800000+0300)/", + "/Date(1603955700000+0300)/", + "/Date(1603956600000+0300)/", + "/Date(1603957500000+0300)/", + "/Date(1603958400000+0300)/", + "/Date(1603959300000+0300)/", + "/Date(1603960200000+0300)/", + "/Date(1603961100000+0300)/", + "/Date(1603962000000+0300)/", + "/Date(1603962900000+0300)/", + "/Date(1603963800000+0300)/", + "/Date(1603964700000+0300)/", + "/Date(1603965600000+0300)/", + "/Date(1603966500000+0300)/", + "/Date(1604122200000+0300)/", + "/Date(1604123100000+0300)/", + "/Date(1604124000000+0300)/", + "/Date(1604124900000+0300)/", + "/Date(1604125800000+0300)/", + "/Date(1604126700000+0300)/", + "/Date(1604127600000+0300)/", + "/Date(1604128500000+0300)/", + "/Date(1604129400000+0300)/", + "/Date(1604130300000+0300)/", + "/Date(1604131200000+0300)/", + "/Date(1604132100000+0300)/", + "/Date(1604133000000+0300)/", + "/Date(1604133900000+0300)/", + "/Date(1604134800000+0300)/", + "/Date(1604135700000+0300)/", + "/Date(1604136600000+0300)/", + "/Date(1604137500000+0300)/", + "/Date(1604138400000+0300)/", + "/Date(1604139300000+0300)/", + "/Date(1604140200000+0300)/", + "/Date(1604141100000+0300)/", + "/Date(1604142000000+0300)/", + "/Date(1604142900000+0300)/", + "/Date(1604143800000+0300)/", + "/Date(1604144700000+0300)/", + "/Date(1604145600000+0300)/", + "/Date(1604146500000+0300)/", + "/Date(1604147400000+0300)/", + "/Date(1604148300000+0300)/", + "/Date(1604149200000+0300)/", + "/Date(1604150100000+0300)/", + "/Date(1604151000000+0300)/", + "/Date(1604151900000+0300)/", + "/Date(1604208600000+0300)/", + "/Date(1604209500000+0300)/", + "/Date(1604210400000+0300)/", + "/Date(1604211300000+0300)/", + "/Date(1604212200000+0300)/", + "/Date(1604213100000+0300)/", + "/Date(1604214000000+0300)/", + "/Date(1604214900000+0300)/", + "/Date(1604215800000+0300)/", + "/Date(1604216700000+0300)/", + "/Date(1604217600000+0300)/", + "/Date(1604218500000+0300)/", + "/Date(1604219400000+0300)/", + "/Date(1604220300000+0300)/", + "/Date(1604221200000+0300)/", + "/Date(1604222100000+0300)/", + "/Date(1604223000000+0300)/", + "/Date(1604223900000+0300)/", + "/Date(1604224800000+0300)/", + "/Date(1604225700000+0300)/", + "/Date(1604226600000+0300)/", + "/Date(1604227500000+0300)/", + "/Date(1604228400000+0300)/", + "/Date(1604229300000+0300)/", + "/Date(1604230200000+0300)/", + "/Date(1604231100000+0300)/", + "/Date(1604232000000+0300)/", + "/Date(1604232900000+0300)/", + "/Date(1604233800000+0300)/", + "/Date(1604234700000+0300)/", + "/Date(1604235600000+0300)/", + "/Date(1604236500000+0300)/", + "/Date(1604237400000+0300)/", + "/Date(1604238300000+0300)/", + "/Date(1604295000000+0300)/", + "/Date(1604295900000+0300)/", + "/Date(1604296800000+0300)/", + "/Date(1604297700000+0300)/", + "/Date(1604298600000+0300)/", + "/Date(1604299500000+0300)/", + "/Date(1604300400000+0300)/", + "/Date(1604301300000+0300)/", + "/Date(1604302200000+0300)/", + "/Date(1604303100000+0300)/", + "/Date(1604304000000+0300)/", + "/Date(1604304900000+0300)/", + "/Date(1604305800000+0300)/", + "/Date(1604306700000+0300)/", + "/Date(1604307600000+0300)/", + "/Date(1604308500000+0300)/", + "/Date(1604309400000+0300)/", + "/Date(1604310300000+0300)/", + "/Date(1604311200000+0300)/", + "/Date(1604312100000+0300)/", + "/Date(1604313000000+0300)/", + "/Date(1604313900000+0300)/", + "/Date(1604314800000+0300)/", + "/Date(1604315700000+0300)/", + "/Date(1604316600000+0300)/", + "/Date(1604317500000+0300)/", + "/Date(1604318400000+0300)/", + "/Date(1604319300000+0300)/", + "/Date(1604320200000+0300)/", + "/Date(1604321100000+0300)/", + "/Date(1604322000000+0300)/", + "/Date(1604322900000+0300)/", + "/Date(1604323800000+0300)/", + "/Date(1604324700000+0300)/", + "/Date(1604381400000+0300)/", + "/Date(1604382300000+0300)/", + "/Date(1604383200000+0300)/", + "/Date(1604384100000+0300)/", + "/Date(1604385000000+0300)/", + "/Date(1604385900000+0300)/", + "/Date(1604386800000+0300)/", + "/Date(1604387700000+0300)/", + "/Date(1604388600000+0300)/", + "/Date(1604389500000+0300)/", + "/Date(1604390400000+0300)/", + "/Date(1604391300000+0300)/", + "/Date(1604392200000+0300)/", + "/Date(1604393100000+0300)/", + "/Date(1604394000000+0300)/", + "/Date(1604394900000+0300)/", + "/Date(1604395800000+0300)/", + "/Date(1604396700000+0300)/", + "/Date(1604397600000+0300)/", + "/Date(1604398500000+0300)/", + "/Date(1604399400000+0300)/", + "/Date(1604400300000+0300)/", + "/Date(1604401200000+0300)/", + "/Date(1604402100000+0300)/", + "/Date(1604403000000+0300)/", + "/Date(1604403900000+0300)/", + "/Date(1604404800000+0300)/", + "/Date(1604405700000+0300)/", + "/Date(1604406600000+0300)/", + "/Date(1604407500000+0300)/", + "/Date(1604408400000+0300)/", + "/Date(1604409300000+0300)/", + "/Date(1604410200000+0300)/", + "/Date(1604411100000+0300)/", + "/Date(1604467800000+0300)/", + "/Date(1604468700000+0300)/", + "/Date(1604469600000+0300)/", + "/Date(1604470500000+0300)/", + "/Date(1604471400000+0300)/", + "/Date(1604472300000+0300)/", + "/Date(1604473200000+0300)/", + "/Date(1604474100000+0300)/", + "/Date(1604475000000+0300)/", + "/Date(1604475900000+0300)/", + "/Date(1604476800000+0300)/", + "/Date(1604477700000+0300)/", + "/Date(1604478600000+0300)/", + "/Date(1604479500000+0300)/", + "/Date(1604480400000+0300)/", + "/Date(1604481300000+0300)/", + "/Date(1604482200000+0300)/", + "/Date(1604483100000+0300)/", + "/Date(1604484000000+0300)/", + "/Date(1604484900000+0300)/", + "/Date(1604485800000+0300)/", + "/Date(1604486700000+0300)/", + "/Date(1604487600000+0300)/", + "/Date(1604488500000+0300)/", + "/Date(1604489400000+0300)/", + "/Date(1604490300000+0300)/", + "/Date(1604491200000+0300)/", + "/Date(1604492100000+0300)/", + "/Date(1604493000000+0300)/", + "/Date(1604493900000+0300)/", + "/Date(1604494800000+0300)/", + "/Date(1604495700000+0300)/", + "/Date(1604496600000+0300)/", + "/Date(1604497500000+0300)/", + "/Date(1604554200000+0300)/", + "/Date(1604555100000+0300)/", + "/Date(1604556000000+0300)/", + "/Date(1604556900000+0300)/", + "/Date(1604557800000+0300)/", + "/Date(1604558700000+0300)/", + "/Date(1604559600000+0300)/", + "/Date(1604560500000+0300)/", + "/Date(1604561400000+0300)/", + "/Date(1604562300000+0300)/", + "/Date(1604563200000+0300)/", + "/Date(1604564100000+0300)/", + "/Date(1604565000000+0300)/", + "/Date(1604565900000+0300)/", + "/Date(1604566800000+0300)/", + "/Date(1604567700000+0300)/", + "/Date(1604568600000+0300)/", + "/Date(1604569500000+0300)/", + "/Date(1604570400000+0300)/", + "/Date(1604571300000+0300)/", + "/Date(1604727000000+0300)/", + "/Date(1604727900000+0300)/", + "/Date(1604728800000+0300)/", + "/Date(1604729700000+0300)/", + "/Date(1604730600000+0300)/", + "/Date(1604731500000+0300)/", + "/Date(1604732400000+0300)/", + "/Date(1604733300000+0300)/", + "/Date(1604734200000+0300)/", + "/Date(1604735100000+0300)/", + "/Date(1604736000000+0300)/", + "/Date(1604736900000+0300)/", + "/Date(1604737800000+0300)/", + "/Date(1604738700000+0300)/", + "/Date(1604739600000+0300)/", + "/Date(1604740500000+0300)/", + "/Date(1604741400000+0300)/", + "/Date(1604742300000+0300)/", + "/Date(1604743200000+0300)/", + "/Date(1604744100000+0300)/", + "/Date(1604745000000+0300)/", + "/Date(1604745900000+0300)/", + "/Date(1604746800000+0300)/", + "/Date(1604747700000+0300)/", + "/Date(1604748600000+0300)/", + "/Date(1604749500000+0300)/", + "/Date(1604750400000+0300)/", + "/Date(1604751300000+0300)/", + "/Date(1604752200000+0300)/", + "/Date(1604753100000+0300)/", + "/Date(1604754000000+0300)/", + "/Date(1604754900000+0300)/", + "/Date(1604755800000+0300)/", + "/Date(1604756700000+0300)/", + "/Date(1604813400000+0300)/", + "/Date(1604814300000+0300)/", + "/Date(1604815200000+0300)/", + "/Date(1604816100000+0300)/", + "/Date(1604817000000+0300)/", + "/Date(1604817900000+0300)/", + "/Date(1604818800000+0300)/", + "/Date(1604819700000+0300)/", + "/Date(1604820600000+0300)/", + "/Date(1604821500000+0300)/", + "/Date(1604822400000+0300)/", + "/Date(1604823300000+0300)/", + "/Date(1604824200000+0300)/", + "/Date(1604825100000+0300)/", + "/Date(1604826000000+0300)/", + "/Date(1604826900000+0300)/", + "/Date(1604827800000+0300)/", + "/Date(1604828700000+0300)/", + "/Date(1604829600000+0300)/", + "/Date(1604830500000+0300)/", + "/Date(1604831400000+0300)/", + "/Date(1604832300000+0300)/", + "/Date(1604833200000+0300)/", + "/Date(1604834100000+0300)/", + "/Date(1604835000000+0300)/", + "/Date(1604835900000+0300)/", + "/Date(1604836800000+0300)/", + "/Date(1604837700000+0300)/", + "/Date(1604838600000+0300)/", + "/Date(1604839500000+0300)/", + "/Date(1604840400000+0300)/", + "/Date(1604841300000+0300)/", + "/Date(1604842200000+0300)/", + "/Date(1604843100000+0300)/", + "/Date(1604899800000+0300)/", + "/Date(1604900700000+0300)/", + "/Date(1604901600000+0300)/", + "/Date(1604902500000+0300)/", + "/Date(1604903400000+0300)/", + "/Date(1604904300000+0300)/", + "/Date(1604905200000+0300)/", + "/Date(1604906100000+0300)/", + "/Date(1604907000000+0300)/", + "/Date(1604907900000+0300)/", + "/Date(1604908800000+0300)/", + "/Date(1604909700000+0300)/", + "/Date(1604910600000+0300)/", + "/Date(1604911500000+0300)/", + "/Date(1604912400000+0300)/", + "/Date(1604913300000+0300)/", + "/Date(1604914200000+0300)/", + "/Date(1604915100000+0300)/", + "/Date(1604916000000+0300)/", + "/Date(1604916900000+0300)/", + "/Date(1604917800000+0300)/", + "/Date(1604918700000+0300)/", + "/Date(1604919600000+0300)/", + "/Date(1604920500000+0300)/", + "/Date(1604921400000+0300)/", + "/Date(1604922300000+0300)/", + "/Date(1604923200000+0300)/", + "/Date(1604924100000+0300)/", + "/Date(1604925000000+0300)/", + "/Date(1604925900000+0300)/", + "/Date(1604926800000+0300)/", + "/Date(1604927700000+0300)/", + "/Date(1604928600000+0300)/", + "/Date(1604929500000+0300)/", + "/Date(1604986200000+0300)/", + "/Date(1604987100000+0300)/", + "/Date(1604988000000+0300)/", + "/Date(1604988900000+0300)/", + "/Date(1604989800000+0300)/", + "/Date(1604990700000+0300)/", + "/Date(1604991600000+0300)/", + "/Date(1604992500000+0300)/", + "/Date(1604993400000+0300)/", + "/Date(1604994300000+0300)/", + "/Date(1604995200000+0300)/", + "/Date(1604996100000+0300)/", + "/Date(1604997000000+0300)/", + "/Date(1604997900000+0300)/", + "/Date(1604998800000+0300)/", + "/Date(1604999700000+0300)/", + "/Date(1605000600000+0300)/", + "/Date(1605001500000+0300)/", + "/Date(1605002400000+0300)/", + "/Date(1605003300000+0300)/", + "/Date(1605004200000+0300)/", + "/Date(1605005100000+0300)/", + "/Date(1605006000000+0300)/", + "/Date(1605006900000+0300)/", + "/Date(1605007800000+0300)/", + "/Date(1605008700000+0300)/", + "/Date(1605009600000+0300)/", + "/Date(1605010500000+0300)/", + "/Date(1605011400000+0300)/", + "/Date(1605012300000+0300)/", + "/Date(1605013200000+0300)/", + "/Date(1605014100000+0300)/", + "/Date(1605015000000+0300)/", + "/Date(1605015900000+0300)/", + "/Date(1605072600000+0300)/", + "/Date(1605073500000+0300)/", + "/Date(1605074400000+0300)/", + "/Date(1605075300000+0300)/", + "/Date(1605076200000+0300)/", + "/Date(1605077100000+0300)/", + "/Date(1605078000000+0300)/", + "/Date(1605078900000+0300)/", + "/Date(1605079800000+0300)/", + "/Date(1605080700000+0300)/", + "/Date(1605081600000+0300)/", + "/Date(1605082500000+0300)/", + "/Date(1605083400000+0300)/", + "/Date(1605084300000+0300)/", + "/Date(1605085200000+0300)/", + "/Date(1605086100000+0300)/", + "/Date(1605087000000+0300)/", + "/Date(1605087900000+0300)/", + "/Date(1605088800000+0300)/", + "/Date(1605089700000+0300)/", + "/Date(1605090600000+0300)/", + "/Date(1605091500000+0300)/", + "/Date(1605092400000+0300)/", + "/Date(1605093300000+0300)/", + "/Date(1605094200000+0300)/", + "/Date(1605095100000+0300)/", + "/Date(1605096000000+0300)/", + "/Date(1605096900000+0300)/", + "/Date(1605097800000+0300)/", + "/Date(1605098700000+0300)/", + "/Date(1605099600000+0300)/", + "/Date(1605100500000+0300)/", + "/Date(1605101400000+0300)/", + "/Date(1605102300000+0300)/", + "/Date(1605159000000+0300)/", + "/Date(1605159900000+0300)/", + "/Date(1605160800000+0300)/", + "/Date(1605161700000+0300)/", + "/Date(1605162600000+0300)/", + "/Date(1605163500000+0300)/", + "/Date(1605164400000+0300)/", + "/Date(1605165300000+0300)/", + "/Date(1605166200000+0300)/", + "/Date(1605167100000+0300)/", + "/Date(1605168000000+0300)/", + "/Date(1605168900000+0300)/", + "/Date(1605169800000+0300)/", + "/Date(1605170700000+0300)/", + "/Date(1605171600000+0300)/", + "/Date(1605172500000+0300)/", + "/Date(1605173400000+0300)/", + "/Date(1605174300000+0300)/", + "/Date(1605175200000+0300)/", + "/Date(1605176100000+0300)/", + "/Date(1605331800000+0300)/", + "/Date(1605332700000+0300)/", + "/Date(1605333600000+0300)/", + "/Date(1605334500000+0300)/", + "/Date(1605335400000+0300)/", + "/Date(1605336300000+0300)/", + "/Date(1605337200000+0300)/", + "/Date(1605338100000+0300)/", + "/Date(1605339000000+0300)/", + "/Date(1605339900000+0300)/", + "/Date(1605340800000+0300)/", + "/Date(1605341700000+0300)/", + "/Date(1605342600000+0300)/", + "/Date(1605343500000+0300)/", + "/Date(1605344400000+0300)/", + "/Date(1605345300000+0300)/", + "/Date(1605346200000+0300)/", + "/Date(1605347100000+0300)/", + "/Date(1605348000000+0300)/", + "/Date(1605348900000+0300)/", + "/Date(1605349800000+0300)/", + "/Date(1605350700000+0300)/", + "/Date(1605351600000+0300)/", + "/Date(1605352500000+0300)/", + "/Date(1605353400000+0300)/", + "/Date(1605354300000+0300)/", + "/Date(1605355200000+0300)/", + "/Date(1605356100000+0300)/", + "/Date(1605357000000+0300)/", + "/Date(1605357900000+0300)/", + "/Date(1605358800000+0300)/", + "/Date(1605359700000+0300)/", + "/Date(1605360600000+0300)/", + "/Date(1605361500000+0300)/", + "/Date(1605418200000+0300)/", + "/Date(1605419100000+0300)/", + "/Date(1605420000000+0300)/", + "/Date(1605420900000+0300)/", + "/Date(1605421800000+0300)/", + "/Date(1605422700000+0300)/", + "/Date(1605423600000+0300)/", + "/Date(1605424500000+0300)/", + "/Date(1605425400000+0300)/", + "/Date(1605426300000+0300)/", + "/Date(1605427200000+0300)/", + "/Date(1605428100000+0300)/", + "/Date(1605429000000+0300)/", + "/Date(1605429900000+0300)/", + "/Date(1605430800000+0300)/", + "/Date(1605431700000+0300)/", + "/Date(1605432600000+0300)/", + "/Date(1605433500000+0300)/", + "/Date(1605434400000+0300)/", + "/Date(1605435300000+0300)/", + "/Date(1605436200000+0300)/", + "/Date(1605437100000+0300)/", + "/Date(1605438000000+0300)/", + "/Date(1605438900000+0300)/", + "/Date(1605439800000+0300)/", + "/Date(1605440700000+0300)/", + "/Date(1605441600000+0300)/", + "/Date(1605442500000+0300)/", + "/Date(1605443400000+0300)/", + "/Date(1605444300000+0300)/", + "/Date(1605445200000+0300)/", + "/Date(1605446100000+0300)/", + "/Date(1605447000000+0300)/", + "/Date(1605447900000+0300)/", + "/Date(1605504600000+0300)/", + "/Date(1605505500000+0300)/", + "/Date(1605506400000+0300)/", + "/Date(1605507300000+0300)/", + "/Date(1605508200000+0300)/", + "/Date(1605509100000+0300)/", + "/Date(1605510000000+0300)/", + "/Date(1605510900000+0300)/", + "/Date(1605511800000+0300)/", + "/Date(1605512700000+0300)/", + "/Date(1605513600000+0300)/", + "/Date(1605514500000+0300)/", + "/Date(1605515400000+0300)/", + "/Date(1605516300000+0300)/", + "/Date(1605517200000+0300)/", + "/Date(1605518100000+0300)/", + "/Date(1605519000000+0300)/", + "/Date(1605519900000+0300)/", + "/Date(1605520800000+0300)/", + "/Date(1605521700000+0300)/", + "/Date(1605522600000+0300)/", + "/Date(1605523500000+0300)/", + "/Date(1605524400000+0300)/", + "/Date(1605525300000+0300)/", + "/Date(1605526200000+0300)/", + "/Date(1605527100000+0300)/", + "/Date(1605528000000+0300)/", + "/Date(1605528900000+0300)/", + "/Date(1605529800000+0300)/", + "/Date(1605530700000+0300)/", + "/Date(1605531600000+0300)/", + "/Date(1605532500000+0300)/", + "/Date(1605533400000+0300)/", + "/Date(1605534300000+0300)/", + "/Date(1605591000000+0300)/", + "/Date(1605591900000+0300)/", + "/Date(1605592800000+0300)/", + "/Date(1605593700000+0300)/", + "/Date(1605594600000+0300)/", + "/Date(1605595500000+0300)/", + "/Date(1605596400000+0300)/", + "/Date(1605597300000+0300)/", + "/Date(1605598200000+0300)/", + "/Date(1605599100000+0300)/", + "/Date(1605600000000+0300)/", + "/Date(1605600900000+0300)/", + "/Date(1605601800000+0300)/", + "/Date(1605602700000+0300)/", + "/Date(1605603600000+0300)/", + "/Date(1605604500000+0300)/", + "/Date(1605605400000+0300)/", + "/Date(1605606300000+0300)/", + "/Date(1605607200000+0300)/", + "/Date(1605608100000+0300)/", + "/Date(1605609000000+0300)/", + "/Date(1605609900000+0300)/", + "/Date(1605610800000+0300)/", + "/Date(1605611700000+0300)/", + "/Date(1605612600000+0300)/", + "/Date(1605613500000+0300)/", + "/Date(1605614400000+0300)/", + "/Date(1605615300000+0300)/", + "/Date(1605616200000+0300)/", + "/Date(1605617100000+0300)/", + "/Date(1605618000000+0300)/", + "/Date(1605618900000+0300)/", + "/Date(1605619800000+0300)/", + "/Date(1605620700000+0300)/", + "/Date(1605677400000+0300)/", + "/Date(1605678300000+0300)/", + "/Date(1605679200000+0300)/", + "/Date(1605680100000+0300)/", + "/Date(1605681000000+0300)/", + "/Date(1605681900000+0300)/", + "/Date(1605682800000+0300)/", + "/Date(1605683700000+0300)/", + "/Date(1605684600000+0300)/", + "/Date(1605685500000+0300)/", + "/Date(1605686400000+0300)/", + "/Date(1605687300000+0300)/", + "/Date(1605688200000+0300)/", + "/Date(1605689100000+0300)/", + "/Date(1605690000000+0300)/", + "/Date(1605690900000+0300)/", + "/Date(1605691800000+0300)/", + "/Date(1605692700000+0300)/", + "/Date(1605693600000+0300)/", + "/Date(1605694500000+0300)/", + "/Date(1605695400000+0300)/", + "/Date(1605696300000+0300)/", + "/Date(1605697200000+0300)/", + "/Date(1605698100000+0300)/", + "/Date(1605699000000+0300)/", + "/Date(1605699900000+0300)/", + "/Date(1605700800000+0300)/", + "/Date(1605701700000+0300)/", + "/Date(1605702600000+0300)/", + "/Date(1605703500000+0300)/", + "/Date(1605704400000+0300)/", + "/Date(1605705300000+0300)/", + "/Date(1605706200000+0300)/", + "/Date(1605707100000+0300)/", + "/Date(1605763800000+0300)/", + "/Date(1605764700000+0300)/", + "/Date(1605765600000+0300)/", + "/Date(1605766500000+0300)/", + "/Date(1605767400000+0300)/", + "/Date(1605768300000+0300)/", + "/Date(1605769200000+0300)/", + "/Date(1605770100000+0300)/", + "/Date(1605771000000+0300)/", + "/Date(1605771900000+0300)/", + "/Date(1605772800000+0300)/", + "/Date(1605773700000+0300)/", + "/Date(1605774600000+0300)/", + "/Date(1605775500000+0300)/", + "/Date(1605776400000+0300)/", + "/Date(1605777300000+0300)/", + "/Date(1605778200000+0300)/", + "/Date(1605779100000+0300)/", + "/Date(1605780000000+0300)/", + "/Date(1605780900000+0300)/", + "/Date(1605936600000+0300)/", + "/Date(1605937500000+0300)/", + "/Date(1605938400000+0300)/", + "/Date(1605939300000+0300)/", + "/Date(1605940200000+0300)/", + "/Date(1605941100000+0300)/", + "/Date(1605942000000+0300)/", + "/Date(1605942900000+0300)/", + "/Date(1605943800000+0300)/", + "/Date(1605944700000+0300)/", + "/Date(1605945600000+0300)/", + "/Date(1605946500000+0300)/", + "/Date(1605947400000+0300)/", + "/Date(1605948300000+0300)/", + "/Date(1605949200000+0300)/", + "/Date(1605950100000+0300)/", + "/Date(1605951000000+0300)/", + "/Date(1605951900000+0300)/", + "/Date(1605952800000+0300)/", + "/Date(1605953700000+0300)/", + "/Date(1605954600000+0300)/", + "/Date(1605955500000+0300)/", + "/Date(1605956400000+0300)/", + "/Date(1605957300000+0300)/", + "/Date(1605958200000+0300)/", + "/Date(1605959100000+0300)/", + "/Date(1605960000000+0300)/", + "/Date(1605960900000+0300)/", + "/Date(1605961800000+0300)/", + "/Date(1605962700000+0300)/", + "/Date(1605963600000+0300)/", + "/Date(1605964500000+0300)/", + "/Date(1605965400000+0300)/", + "/Date(1605966300000+0300)/", + "/Date(1606023000000+0300)/", + "/Date(1606023900000+0300)/", + "/Date(1606024800000+0300)/", + "/Date(1606025700000+0300)/", + "/Date(1606026600000+0300)/", + "/Date(1606027500000+0300)/", + "/Date(1606028400000+0300)/", + "/Date(1606029300000+0300)/", + "/Date(1606030200000+0300)/", + "/Date(1606031100000+0300)/", + "/Date(1606032000000+0300)/", + "/Date(1606032900000+0300)/", + "/Date(1606033800000+0300)/", + "/Date(1606034700000+0300)/", + "/Date(1606035600000+0300)/", + "/Date(1606036500000+0300)/", + "/Date(1606037400000+0300)/", + "/Date(1606038300000+0300)/", + "/Date(1606039200000+0300)/", + "/Date(1606040100000+0300)/", + "/Date(1606041000000+0300)/", + "/Date(1606041900000+0300)/", + "/Date(1606042800000+0300)/", + "/Date(1606043700000+0300)/", + "/Date(1606044600000+0300)/", + "/Date(1606045500000+0300)/", + "/Date(1606046400000+0300)/", + "/Date(1606047300000+0300)/", + "/Date(1606048200000+0300)/", + "/Date(1606049100000+0300)/", + "/Date(1606050000000+0300)/", + "/Date(1606050900000+0300)/", + "/Date(1606051800000+0300)/", + "/Date(1606052700000+0300)/", + "/Date(1606109400000+0300)/", + "/Date(1606110300000+0300)/", + "/Date(1606111200000+0300)/", + "/Date(1606112100000+0300)/", + "/Date(1606113000000+0300)/", + "/Date(1606113900000+0300)/", + "/Date(1606114800000+0300)/", + "/Date(1606115700000+0300)/", + "/Date(1606116600000+0300)/", + "/Date(1606117500000+0300)/", + "/Date(1606118400000+0300)/", + "/Date(1606119300000+0300)/", + "/Date(1606120200000+0300)/", + "/Date(1606121100000+0300)/", + "/Date(1606122000000+0300)/", + "/Date(1606122900000+0300)/", + "/Date(1606123800000+0300)/", + "/Date(1606124700000+0300)/", + "/Date(1606125600000+0300)/", + "/Date(1606126500000+0300)/", + "/Date(1606127400000+0300)/", + "/Date(1606128300000+0300)/", + "/Date(1606129200000+0300)/", + "/Date(1606130100000+0300)/", + "/Date(1606131000000+0300)/", + "/Date(1606131900000+0300)/", + "/Date(1606132800000+0300)/", + "/Date(1606133700000+0300)/", + "/Date(1606134600000+0300)/", + "/Date(1606135500000+0300)/", + "/Date(1606136400000+0300)/", + "/Date(1606137300000+0300)/", + "/Date(1606138200000+0300)/", + "/Date(1606139100000+0300)/", + "/Date(1606195800000+0300)/", + "/Date(1606196700000+0300)/", + "/Date(1606197600000+0300)/", + "/Date(1606198500000+0300)/", + "/Date(1606199400000+0300)/", + "/Date(1606200300000+0300)/", + "/Date(1606201200000+0300)/", + "/Date(1606202100000+0300)/", + "/Date(1606203000000+0300)/", + "/Date(1606203900000+0300)/", + "/Date(1606204800000+0300)/", + "/Date(1606205700000+0300)/", + "/Date(1606206600000+0300)/", + "/Date(1606207500000+0300)/", + "/Date(1606208400000+0300)/", + "/Date(1606209300000+0300)/", + "/Date(1606210200000+0300)/", + "/Date(1606211100000+0300)/", + "/Date(1606212000000+0300)/", + "/Date(1606212900000+0300)/", + "/Date(1606213800000+0300)/", + "/Date(1606214700000+0300)/", + "/Date(1606215600000+0300)/", + "/Date(1606216500000+0300)/", + "/Date(1606217400000+0300)/", + "/Date(1606218300000+0300)/", + "/Date(1606219200000+0300)/", + "/Date(1606220100000+0300)/", + "/Date(1606221000000+0300)/", + "/Date(1606221900000+0300)/", + "/Date(1606222800000+0300)/", + "/Date(1606223700000+0300)/", + "/Date(1606224600000+0300)/", + "/Date(1606225500000+0300)/", + "/Date(1606282200000+0300)/", + "/Date(1606283100000+0300)/", + "/Date(1606284000000+0300)/", + "/Date(1606284900000+0300)/", + "/Date(1606285800000+0300)/", + "/Date(1606286700000+0300)/", + "/Date(1606287600000+0300)/", + "/Date(1606288500000+0300)/", + "/Date(1606289400000+0300)/", + "/Date(1606290300000+0300)/", + "/Date(1606291200000+0300)/", + "/Date(1606292100000+0300)/", + "/Date(1606293000000+0300)/", + "/Date(1606293900000+0300)/", + "/Date(1606294800000+0300)/", + "/Date(1606295700000+0300)/", + "/Date(1606296600000+0300)/", + "/Date(1606297500000+0300)/", + "/Date(1606298400000+0300)/", + "/Date(1606299300000+0300)/", + "/Date(1606300200000+0300)/", + "/Date(1606301100000+0300)/", + "/Date(1606302000000+0300)/", + "/Date(1606302900000+0300)/", + "/Date(1606303800000+0300)/", + "/Date(1606304700000+0300)/", + "/Date(1606305600000+0300)/", + "/Date(1606306500000+0300)/", + "/Date(1606307400000+0300)/", + "/Date(1606308300000+0300)/", + "/Date(1606309200000+0300)/", + "/Date(1606310100000+0300)/", + "/Date(1606311000000+0300)/", + "/Date(1606311900000+0300)/", + "/Date(1606368600000+0300)/", + "/Date(1606369500000+0300)/", + "/Date(1606370400000+0300)/", + "/Date(1606371300000+0300)/", + "/Date(1606372200000+0300)/", + "/Date(1606373100000+0300)/", + "/Date(1606374000000+0300)/", + "/Date(1606374900000+0300)/", + "/Date(1606375800000+0300)/", + "/Date(1606376700000+0300)/", + "/Date(1606377600000+0300)/", + "/Date(1606378500000+0300)/", + "/Date(1606379400000+0300)/", + "/Date(1606380300000+0300)/", + "/Date(1606381200000+0300)/", + "/Date(1606382100000+0300)/", + "/Date(1606383000000+0300)/", + "/Date(1606383900000+0300)/", + "/Date(1606384800000+0300)/", + "/Date(1606385700000+0300)/", + "/Date(1606541400000+0300)/", + "/Date(1606542300000+0300)/", + "/Date(1606543200000+0300)/", + "/Date(1606544100000+0300)/", + "/Date(1606545000000+0300)/", + "/Date(1606545900000+0300)/", + "/Date(1606546800000+0300)/", + "/Date(1606547700000+0300)/", + "/Date(1606548600000+0300)/", + "/Date(1606549500000+0300)/", + "/Date(1606550400000+0300)/", + "/Date(1606551300000+0300)/", + "/Date(1606552200000+0300)/", + "/Date(1606553100000+0300)/", + "/Date(1606554000000+0300)/", + "/Date(1606554900000+0300)/", + "/Date(1606555800000+0300)/", + "/Date(1606556700000+0300)/", + "/Date(1606557600000+0300)/", + "/Date(1606558500000+0300)/", + "/Date(1606559400000+0300)/", + "/Date(1606560300000+0300)/", + "/Date(1606561200000+0300)/", + "/Date(1606562100000+0300)/", + "/Date(1606563000000+0300)/", + "/Date(1606563900000+0300)/", + "/Date(1606564800000+0300)/", + "/Date(1606565700000+0300)/", + "/Date(1606566600000+0300)/", + "/Date(1606567500000+0300)/", + "/Date(1606568400000+0300)/", + "/Date(1606569300000+0300)/", + "/Date(1606570200000+0300)/", + "/Date(1606571100000+0300)/", + "/Date(1606627800000+0300)/", + "/Date(1606628700000+0300)/", + "/Date(1606629600000+0300)/", + "/Date(1606630500000+0300)/", + "/Date(1606631400000+0300)/", + "/Date(1606632300000+0300)/", + "/Date(1606633200000+0300)/", + "/Date(1606634100000+0300)/", + "/Date(1606635000000+0300)/", + "/Date(1606635900000+0300)/", + "/Date(1606636800000+0300)/", + "/Date(1606637700000+0300)/", + "/Date(1606638600000+0300)/", + "/Date(1606639500000+0300)/", + "/Date(1606640400000+0300)/", + "/Date(1606641300000+0300)/", + "/Date(1606642200000+0300)/", + "/Date(1606643100000+0300)/", + "/Date(1606644000000+0300)/", + "/Date(1606644900000+0300)/", + "/Date(1606645800000+0300)/", + "/Date(1606646700000+0300)/", + "/Date(1606647600000+0300)/", + "/Date(1606648500000+0300)/", + "/Date(1606649400000+0300)/", + "/Date(1606650300000+0300)/", + "/Date(1606651200000+0300)/", + "/Date(1606652100000+0300)/", + "/Date(1606653000000+0300)/", + "/Date(1606653900000+0300)/", + "/Date(1606654800000+0300)/", + "/Date(1606655700000+0300)/", + "/Date(1606656600000+0300)/", + "/Date(1606657500000+0300)/", + "/Date(1606714200000+0300)/", + "/Date(1606715100000+0300)/", + "/Date(1606716000000+0300)/", + "/Date(1606716900000+0300)/", + "/Date(1606717800000+0300)/", + "/Date(1606718700000+0300)/", + "/Date(1606719600000+0300)/", + "/Date(1606720500000+0300)/", + "/Date(1606721400000+0300)/", + "/Date(1606722300000+0300)/", + "/Date(1606723200000+0300)/", + "/Date(1606724100000+0300)/", + "/Date(1606725000000+0300)/", + "/Date(1606725900000+0300)/", + "/Date(1606726800000+0300)/", + "/Date(1606727700000+0300)/", + "/Date(1606728600000+0300)/", + "/Date(1606729500000+0300)/", + "/Date(1606730400000+0300)/", + "/Date(1606731300000+0300)/", + "/Date(1606732200000+0300)/", + "/Date(1606733100000+0300)/", + "/Date(1606734000000+0300)/", + "/Date(1606734900000+0300)/", + "/Date(1606735800000+0300)/", + "/Date(1606736700000+0300)/", + "/Date(1606737600000+0300)/", + "/Date(1606738500000+0300)/", + "/Date(1606739400000+0300)/", + "/Date(1606740300000+0300)/", + "/Date(1606741200000+0300)/", + "/Date(1606742100000+0300)/", + "/Date(1606743000000+0300)/", + "/Date(1606743900000+0300)/", + "/Date(1606800600000+0300)/", + "/Date(1606801500000+0300)/", + "/Date(1606802400000+0300)/", + "/Date(1606803300000+0300)/", + "/Date(1606804200000+0300)/", + "/Date(1606805100000+0300)/", + "/Date(1606806000000+0300)/", + "/Date(1606806900000+0300)/", + "/Date(1606807800000+0300)/", + "/Date(1606808700000+0300)/", + "/Date(1606809600000+0300)/", + "/Date(1606810500000+0300)/", + "/Date(1606811400000+0300)/", + "/Date(1606812300000+0300)/", + "/Date(1606813200000+0300)/", + "/Date(1606814100000+0300)/", + "/Date(1606815000000+0300)/", + "/Date(1606815900000+0300)/", + "/Date(1606816800000+0300)/", + "/Date(1606817700000+0300)/", + "/Date(1606818600000+0300)/", + "/Date(1606819500000+0300)/", + "/Date(1606820400000+0300)/", + "/Date(1606821300000+0300)/", + "/Date(1606822200000+0300)/", + "/Date(1606823100000+0300)/", + "/Date(1606824000000+0300)/", + "/Date(1606824900000+0300)/", + "/Date(1606825800000+0300)/", + "/Date(1606826700000+0300)/", + "/Date(1606827600000+0300)/", + "/Date(1606828500000+0300)/", + "/Date(1606829400000+0300)/", + "/Date(1606830300000+0300)/", + "/Date(1606887000000+0300)/", + "/Date(1606887900000+0300)/", + "/Date(1606888800000+0300)/", + "/Date(1606889700000+0300)/", + "/Date(1606890600000+0300)/", + "/Date(1606891500000+0300)/", + "/Date(1606892400000+0300)/", + "/Date(1606893300000+0300)/", + "/Date(1606894200000+0300)/", + "/Date(1606895100000+0300)/", + "/Date(1606896000000+0300)/", + "/Date(1606896900000+0300)/", + "/Date(1606897800000+0300)/", + "/Date(1606898700000+0300)/", + "/Date(1606899600000+0300)/", + "/Date(1606900500000+0300)/", + "/Date(1606901400000+0300)/", + "/Date(1606902300000+0300)/", + "/Date(1606903200000+0300)/", + "/Date(1606904100000+0300)/", + "/Date(1606905000000+0300)/", + "/Date(1606905900000+0300)/", + "/Date(1606906800000+0300)/", + "/Date(1606907700000+0300)/", + "/Date(1606908600000+0300)/", + "/Date(1606909500000+0300)/", + "/Date(1606910400000+0300)/", + "/Date(1606911300000+0300)/", + "/Date(1606912200000+0300)/", + "/Date(1606913100000+0300)/", + "/Date(1606914000000+0300)/", + "/Date(1606914900000+0300)/", + "/Date(1606915800000+0300)/", + "/Date(1606916700000+0300)/", + "/Date(1606973400000+0300)/", + "/Date(1606974300000+0300)/", + "/Date(1606975200000+0300)/", + "/Date(1606976100000+0300)/", + "/Date(1606977000000+0300)/", + "/Date(1606977900000+0300)/", + "/Date(1606978800000+0300)/", + "/Date(1606979700000+0300)/", + "/Date(1606980600000+0300)/", + "/Date(1606981500000+0300)/", + "/Date(1606982400000+0300)/", + "/Date(1606983300000+0300)/", + "/Date(1606984200000+0300)/", + "/Date(1606985100000+0300)/", + "/Date(1606986000000+0300)/", + "/Date(1606986900000+0300)/", + "/Date(1606987800000+0300)/", + "/Date(1606988700000+0300)/", + "/Date(1606989600000+0300)/", + "/Date(1606990500000+0300)/", + "/Date(1607146200000+0300)/", + "/Date(1607147100000+0300)/", + "/Date(1607148000000+0300)/", + "/Date(1607148900000+0300)/", + "/Date(1607149800000+0300)/", + "/Date(1607150700000+0300)/", + "/Date(1607151600000+0300)/", + "/Date(1607152500000+0300)/", + "/Date(1607153400000+0300)/", + "/Date(1607154300000+0300)/", + "/Date(1607155200000+0300)/", + "/Date(1607156100000+0300)/", + "/Date(1607157000000+0300)/", + "/Date(1607157900000+0300)/", + "/Date(1607158800000+0300)/", + "/Date(1607159700000+0300)/", + "/Date(1607160600000+0300)/", + "/Date(1607161500000+0300)/", + "/Date(1607162400000+0300)/", + "/Date(1607163300000+0300)/", + "/Date(1607164200000+0300)/", + "/Date(1607165100000+0300)/", + "/Date(1607166000000+0300)/", + "/Date(1607166900000+0300)/", + "/Date(1607167800000+0300)/", + "/Date(1607168700000+0300)/", + "/Date(1607169600000+0300)/", + "/Date(1607170500000+0300)/", + "/Date(1607171400000+0300)/", + "/Date(1607172300000+0300)/", + "/Date(1607173200000+0300)/", + "/Date(1607174100000+0300)/", + "/Date(1607175000000+0300)/", + "/Date(1607175900000+0300)/", + "/Date(1607232600000+0300)/", + "/Date(1607233500000+0300)/", + "/Date(1607234400000+0300)/", + "/Date(1607235300000+0300)/", + "/Date(1607236200000+0300)/", + "/Date(1607237100000+0300)/", + "/Date(1607238000000+0300)/", + "/Date(1607238900000+0300)/", + "/Date(1607239800000+0300)/", + "/Date(1607240700000+0300)/", + "/Date(1607241600000+0300)/", + "/Date(1607242500000+0300)/", + "/Date(1607243400000+0300)/", + "/Date(1607244300000+0300)/", + "/Date(1607245200000+0300)/", + "/Date(1607246100000+0300)/", + "/Date(1607247000000+0300)/", + "/Date(1607247900000+0300)/", + "/Date(1607248800000+0300)/", + "/Date(1607249700000+0300)/", + "/Date(1607250600000+0300)/", + "/Date(1607251500000+0300)/", + "/Date(1607252400000+0300)/", + "/Date(1607253300000+0300)/", + "/Date(1607254200000+0300)/", + "/Date(1607255100000+0300)/", + "/Date(1607256000000+0300)/", + "/Date(1607256900000+0300)/", + "/Date(1607257800000+0300)/", + "/Date(1607258700000+0300)/", + "/Date(1607259600000+0300)/", + "/Date(1607260500000+0300)/", + "/Date(1607261400000+0300)/", + "/Date(1607262300000+0300)/", + "/Date(1607319000000+0300)/", + "/Date(1607319900000+0300)/", + "/Date(1607320800000+0300)/", + "/Date(1607321700000+0300)/", + "/Date(1607322600000+0300)/", + "/Date(1607323500000+0300)/", + "/Date(1607324400000+0300)/", + "/Date(1607325300000+0300)/", + "/Date(1607326200000+0300)/", + "/Date(1607327100000+0300)/", + "/Date(1607328000000+0300)/", + "/Date(1607328900000+0300)/", + "/Date(1607329800000+0300)/", + "/Date(1607330700000+0300)/", + "/Date(1607331600000+0300)/", + "/Date(1607332500000+0300)/", + "/Date(1607333400000+0300)/", + "/Date(1607334300000+0300)/", + "/Date(1607335200000+0300)/", + "/Date(1607336100000+0300)/", + "/Date(1607337000000+0300)/", + "/Date(1607337900000+0300)/", + "/Date(1607338800000+0300)/", + "/Date(1607339700000+0300)/", + "/Date(1607340600000+0300)/", + "/Date(1607341500000+0300)/", + "/Date(1607342400000+0300)/", + "/Date(1607343300000+0300)/", + "/Date(1607344200000+0300)/", + "/Date(1607345100000+0300)/", + "/Date(1607346000000+0300)/", + "/Date(1607346900000+0300)/", + "/Date(1607347800000+0300)/", + "/Date(1607348700000+0300)/", + "/Date(1607405400000+0300)/", + "/Date(1607406300000+0300)/", + "/Date(1607407200000+0300)/", + "/Date(1607408100000+0300)/", + "/Date(1607409000000+0300)/", + "/Date(1607409900000+0300)/", + "/Date(1607410800000+0300)/", + "/Date(1607411700000+0300)/", + "/Date(1607412600000+0300)/", + "/Date(1607413500000+0300)/", + "/Date(1607414400000+0300)/", + "/Date(1607415300000+0300)/", + "/Date(1607416200000+0300)/", + "/Date(1607417100000+0300)/", + "/Date(1607418000000+0300)/", + "/Date(1607418900000+0300)/", + "/Date(1607419800000+0300)/", + "/Date(1607420700000+0300)/", + "/Date(1607421600000+0300)/", + "/Date(1607422500000+0300)/", + "/Date(1607423400000+0300)/", + "/Date(1607424300000+0300)/", + "/Date(1607425200000+0300)/", + "/Date(1607426100000+0300)/", + "/Date(1607427000000+0300)/", + "/Date(1607427900000+0300)/", + "/Date(1607428800000+0300)/", + "/Date(1607429700000+0300)/", + "/Date(1607430600000+0300)/", + "/Date(1607431500000+0300)/", + "/Date(1607432400000+0300)/", + "/Date(1607433300000+0300)/", + "/Date(1607434200000+0300)/", + "/Date(1607435100000+0300)/", + "/Date(1607491800000+0300)/", + "/Date(1607492700000+0300)/", + "/Date(1607493600000+0300)/", + "/Date(1607494500000+0300)/", + "/Date(1607495400000+0300)/", + "/Date(1607496300000+0300)/", + "/Date(1607497200000+0300)/", + "/Date(1607498100000+0300)/", + "/Date(1607499000000+0300)/", + "/Date(1607499900000+0300)/", + "/Date(1607500800000+0300)/", + "/Date(1607501700000+0300)/", + "/Date(1607502600000+0300)/", + "/Date(1607503500000+0300)/", + "/Date(1607504400000+0300)/", + "/Date(1607505300000+0300)/", + "/Date(1607506200000+0300)/", + "/Date(1607507100000+0300)/", + "/Date(1607508000000+0300)/", + "/Date(1607508900000+0300)/", + "/Date(1607509800000+0300)/", + "/Date(1607510700000+0300)/", + "/Date(1607511600000+0300)/", + "/Date(1607512500000+0300)/", + "/Date(1607513400000+0300)/", + "/Date(1607514300000+0300)/", + "/Date(1607515200000+0300)/", + "/Date(1607516100000+0300)/", + "/Date(1607517000000+0300)/", + "/Date(1607517900000+0300)/", + "/Date(1607518800000+0300)/", + "/Date(1607519700000+0300)/", + "/Date(1607520600000+0300)/", + "/Date(1607521500000+0300)/", + "/Date(1607578200000+0300)/", + "/Date(1607579100000+0300)/", + "/Date(1607580000000+0300)/", + "/Date(1607580900000+0300)/", + "/Date(1607581800000+0300)/", + "/Date(1607582700000+0300)/", + "/Date(1607583600000+0300)/", + "/Date(1607584500000+0300)/", + "/Date(1607585400000+0300)/", + "/Date(1607586300000+0300)/", + "/Date(1607587200000+0300)/", + "/Date(1607588100000+0300)/", + "/Date(1607589000000+0300)/", + "/Date(1607589900000+0300)/", + "/Date(1607590800000+0300)/", + "/Date(1607591700000+0300)/", + "/Date(1607592600000+0300)/", + "/Date(1607593500000+0300)/", + "/Date(1607594400000+0300)/", + "/Date(1607595300000+0300)/", + "/Date(1607751000000+0300)/", + "/Date(1607751900000+0300)/", + "/Date(1607752800000+0300)/", + "/Date(1607753700000+0300)/", + "/Date(1607754600000+0300)/", + "/Date(1607755500000+0300)/", + "/Date(1607756400000+0300)/", + "/Date(1607757300000+0300)/", + "/Date(1607758200000+0300)/", + "/Date(1607759100000+0300)/", + "/Date(1607760000000+0300)/", + "/Date(1607760900000+0300)/", + "/Date(1607761800000+0300)/", + "/Date(1607762700000+0300)/", + "/Date(1607763600000+0300)/", + "/Date(1607764500000+0300)/", + "/Date(1607765400000+0300)/", + "/Date(1607766300000+0300)/", + "/Date(1607767200000+0300)/", + "/Date(1607768100000+0300)/", + "/Date(1607769000000+0300)/", + "/Date(1607769900000+0300)/", + "/Date(1607770800000+0300)/", + "/Date(1607771700000+0300)/", + "/Date(1607772600000+0300)/", + "/Date(1607773500000+0300)/", + "/Date(1607774400000+0300)/", + "/Date(1607775300000+0300)/", + "/Date(1607776200000+0300)/", + "/Date(1607777100000+0300)/", + "/Date(1607778000000+0300)/", + "/Date(1607778900000+0300)/", + "/Date(1607779800000+0300)/", + "/Date(1607780700000+0300)/", + "/Date(1607837400000+0300)/", + "/Date(1607838300000+0300)/", + "/Date(1607839200000+0300)/", + "/Date(1607840100000+0300)/", + "/Date(1607841000000+0300)/", + "/Date(1607841900000+0300)/", + "/Date(1607842800000+0300)/", + "/Date(1607843700000+0300)/", + "/Date(1607844600000+0300)/", + "/Date(1607845500000+0300)/", + "/Date(1607846400000+0300)/", + "/Date(1607847300000+0300)/", + "/Date(1607848200000+0300)/", + "/Date(1607849100000+0300)/", + "/Date(1607850000000+0300)/", + "/Date(1607850900000+0300)/", + "/Date(1607851800000+0300)/", + "/Date(1607852700000+0300)/", + "/Date(1607853600000+0300)/", + "/Date(1607854500000+0300)/", + "/Date(1607855400000+0300)/", + "/Date(1607856300000+0300)/", + "/Date(1607857200000+0300)/", + "/Date(1607858100000+0300)/", + "/Date(1607859000000+0300)/", + "/Date(1607859900000+0300)/", + "/Date(1607860800000+0300)/", + "/Date(1607861700000+0300)/", + "/Date(1607862600000+0300)/", + "/Date(1607863500000+0300)/", + "/Date(1607864400000+0300)/", + "/Date(1607865300000+0300)/", + "/Date(1607866200000+0300)/", + "/Date(1607867100000+0300)/", + "/Date(1607923800000+0300)/", + "/Date(1607924700000+0300)/", + "/Date(1607925600000+0300)/", + "/Date(1607926500000+0300)/", + "/Date(1607927400000+0300)/", + "/Date(1607928300000+0300)/", + "/Date(1607929200000+0300)/", + "/Date(1607930100000+0300)/", + "/Date(1607931000000+0300)/", + "/Date(1607931900000+0300)/", + "/Date(1607932800000+0300)/", + "/Date(1607933700000+0300)/", + "/Date(1607934600000+0300)/", + "/Date(1607935500000+0300)/", + "/Date(1607936400000+0300)/", + "/Date(1607937300000+0300)/", + "/Date(1607938200000+0300)/", + "/Date(1607939100000+0300)/", + "/Date(1607940000000+0300)/", + "/Date(1607940900000+0300)/", + "/Date(1607941800000+0300)/", + "/Date(1607942700000+0300)/", + "/Date(1607943600000+0300)/", + "/Date(1607944500000+0300)/", + "/Date(1607945400000+0300)/", + "/Date(1607946300000+0300)/", + "/Date(1607947200000+0300)/", + "/Date(1607948100000+0300)/", + "/Date(1607949000000+0300)/", + "/Date(1607949900000+0300)/", + "/Date(1607950800000+0300)/", + "/Date(1607951700000+0300)/", + "/Date(1607952600000+0300)/", + "/Date(1607953500000+0300)/", + "/Date(1608010200000+0300)/", + "/Date(1608011100000+0300)/", + "/Date(1608012000000+0300)/", + "/Date(1608012900000+0300)/", + "/Date(1608013800000+0300)/", + "/Date(1608014700000+0300)/", + "/Date(1608015600000+0300)/", + "/Date(1608016500000+0300)/", + "/Date(1608017400000+0300)/", + "/Date(1608018300000+0300)/", + "/Date(1608019200000+0300)/", + "/Date(1608020100000+0300)/", + "/Date(1608021000000+0300)/", + "/Date(1608021900000+0300)/", + "/Date(1608022800000+0300)/", + "/Date(1608023700000+0300)/", + "/Date(1608024600000+0300)/", + "/Date(1608025500000+0300)/", + "/Date(1608026400000+0300)/", + "/Date(1608027300000+0300)/", + "/Date(1608028200000+0300)/", + "/Date(1608029100000+0300)/", + "/Date(1608030000000+0300)/", + "/Date(1608030900000+0300)/", + "/Date(1608031800000+0300)/", + "/Date(1608032700000+0300)/", + "/Date(1608033600000+0300)/", + "/Date(1608034500000+0300)/", + "/Date(1608035400000+0300)/", + "/Date(1608036300000+0300)/", + "/Date(1608037200000+0300)/", + "/Date(1608038100000+0300)/", + "/Date(1608039000000+0300)/", + "/Date(1608039900000+0300)/", + "/Date(1608096600000+0300)/", + "/Date(1608097500000+0300)/", + "/Date(1608098400000+0300)/", + "/Date(1608099300000+0300)/", + "/Date(1608100200000+0300)/", + "/Date(1608101100000+0300)/", + "/Date(1608102000000+0300)/", + "/Date(1608102900000+0300)/", + "/Date(1608103800000+0300)/", + "/Date(1608104700000+0300)/", + "/Date(1608105600000+0300)/", + "/Date(1608106500000+0300)/", + "/Date(1608107400000+0300)/", + "/Date(1608108300000+0300)/", + "/Date(1608109200000+0300)/", + "/Date(1608110100000+0300)/", + "/Date(1608111000000+0300)/", + "/Date(1608111900000+0300)/", + "/Date(1608112800000+0300)/", + "/Date(1608113700000+0300)/", + "/Date(1608114600000+0300)/", + "/Date(1608115500000+0300)/", + "/Date(1608116400000+0300)/", + "/Date(1608117300000+0300)/", + "/Date(1608118200000+0300)/", + "/Date(1608119100000+0300)/", + "/Date(1608120000000+0300)/", + "/Date(1608120900000+0300)/", + "/Date(1608121800000+0300)/", + "/Date(1608122700000+0300)/", + "/Date(1608123600000+0300)/", + "/Date(1608124500000+0300)/", + "/Date(1608125400000+0300)/", + "/Date(1608126300000+0300)/", + "/Date(1608183000000+0300)/", + "/Date(1608183900000+0300)/", + "/Date(1608184800000+0300)/", + "/Date(1608185700000+0300)/", + "/Date(1608186600000+0300)/", + "/Date(1608187500000+0300)/", + "/Date(1608188400000+0300)/", + "/Date(1608189300000+0300)/", + "/Date(1608190200000+0300)/", + "/Date(1608191100000+0300)/", + "/Date(1608192000000+0300)/", + "/Date(1608192900000+0300)/", + "/Date(1608193800000+0300)/", + "/Date(1608194700000+0300)/", + "/Date(1608195600000+0300)/", + "/Date(1608196500000+0300)/", + "/Date(1608197400000+0300)/", + "/Date(1608198300000+0300)/", + "/Date(1608199200000+0300)/", + "/Date(1608200100000+0300)/", + "/Date(1608355800000+0300)/", + "/Date(1608356700000+0300)/", + "/Date(1608357600000+0300)/", + "/Date(1608358500000+0300)/", + "/Date(1608359400000+0300)/", + "/Date(1608360300000+0300)/", + "/Date(1608361200000+0300)/", + "/Date(1608362100000+0300)/", + "/Date(1608363000000+0300)/", + "/Date(1608363900000+0300)/", + "/Date(1608364800000+0300)/", + "/Date(1608365700000+0300)/", + "/Date(1608366600000+0300)/", + "/Date(1608367500000+0300)/", + "/Date(1608368400000+0300)/", + "/Date(1608369300000+0300)/", + "/Date(1608370200000+0300)/", + "/Date(1608371100000+0300)/", + "/Date(1608372000000+0300)/", + "/Date(1608372900000+0300)/", + "/Date(1608373800000+0300)/", + "/Date(1608374700000+0300)/", + "/Date(1608375600000+0300)/", + "/Date(1608376500000+0300)/", + "/Date(1608377400000+0300)/", + "/Date(1608378300000+0300)/", + "/Date(1608379200000+0300)/", + "/Date(1608380100000+0300)/", + "/Date(1608381000000+0300)/", + "/Date(1608381900000+0300)/", + "/Date(1608382800000+0300)/", + "/Date(1608383700000+0300)/", + "/Date(1608384600000+0300)/", + "/Date(1608385500000+0300)/", + "/Date(1608442200000+0300)/", + "/Date(1608443100000+0300)/", + "/Date(1608444000000+0300)/", + "/Date(1608444900000+0300)/", + "/Date(1608445800000+0300)/", + "/Date(1608446700000+0300)/", + "/Date(1608447600000+0300)/", + "/Date(1608448500000+0300)/", + "/Date(1608449400000+0300)/", + "/Date(1608450300000+0300)/", + "/Date(1608451200000+0300)/", + "/Date(1608452100000+0300)/", + "/Date(1608453000000+0300)/", + "/Date(1608453900000+0300)/", + "/Date(1608454800000+0300)/", + "/Date(1608455700000+0300)/", + "/Date(1608456600000+0300)/", + "/Date(1608457500000+0300)/", + "/Date(1608458400000+0300)/", + "/Date(1608459300000+0300)/", + "/Date(1608460200000+0300)/", + "/Date(1608461100000+0300)/", + "/Date(1608462000000+0300)/", + "/Date(1608462900000+0300)/", + "/Date(1608463800000+0300)/", + "/Date(1608464700000+0300)/", + "/Date(1608465600000+0300)/", + "/Date(1608466500000+0300)/", + "/Date(1608467400000+0300)/", + "/Date(1608468300000+0300)/", + "/Date(1608469200000+0300)/", + "/Date(1608470100000+0300)/", + "/Date(1608471000000+0300)/", + "/Date(1608471900000+0300)/", + "/Date(1608528600000+0300)/", + "/Date(1608529500000+0300)/", + "/Date(1608530400000+0300)/", + "/Date(1608531300000+0300)/", + "/Date(1608532200000+0300)/", + "/Date(1608533100000+0300)/", + "/Date(1608534000000+0300)/", + "/Date(1608534900000+0300)/", + "/Date(1608535800000+0300)/", + "/Date(1608536700000+0300)/", + "/Date(1608537600000+0300)/", + "/Date(1608538500000+0300)/", + "/Date(1608539400000+0300)/", + "/Date(1608540300000+0300)/", + "/Date(1608541200000+0300)/", + "/Date(1608542100000+0300)/", + "/Date(1608543000000+0300)/", + "/Date(1608543900000+0300)/", + "/Date(1608544800000+0300)/", + "/Date(1608545700000+0300)/", + "/Date(1608546600000+0300)/", + "/Date(1608547500000+0300)/", + "/Date(1608548400000+0300)/", + "/Date(1608549300000+0300)/", + "/Date(1608550200000+0300)/", + "/Date(1608551100000+0300)/", + "/Date(1608552000000+0300)/", + "/Date(1608552900000+0300)/", + "/Date(1608553800000+0300)/", + "/Date(1608554700000+0300)/", + "/Date(1608555600000+0300)/", + "/Date(1608556500000+0300)/", + "/Date(1608557400000+0300)/", + "/Date(1608558300000+0300)/", + "/Date(1608615000000+0300)/", + "/Date(1608615900000+0300)/", + "/Date(1608616800000+0300)/", + "/Date(1608617700000+0300)/", + "/Date(1608618600000+0300)/", + "/Date(1608619500000+0300)/", + "/Date(1608620400000+0300)/", + "/Date(1608621300000+0300)/", + "/Date(1608622200000+0300)/", + "/Date(1608623100000+0300)/", + "/Date(1608624000000+0300)/", + "/Date(1608624900000+0300)/", + "/Date(1608625800000+0300)/", + "/Date(1608626700000+0300)/", + "/Date(1608627600000+0300)/", + "/Date(1608628500000+0300)/", + "/Date(1608629400000+0300)/", + "/Date(1608630300000+0300)/", + "/Date(1608631200000+0300)/", + "/Date(1608632100000+0300)/", + "/Date(1608633000000+0300)/", + "/Date(1608633900000+0300)/", + "/Date(1608634800000+0300)/", + "/Date(1608635700000+0300)/", + "/Date(1608636600000+0300)/", + "/Date(1608637500000+0300)/", + "/Date(1608638400000+0300)/", + "/Date(1608639300000+0300)/", + "/Date(1608640200000+0300)/", + "/Date(1608641100000+0300)/", + "/Date(1608642000000+0300)/", + "/Date(1608642900000+0300)/", + "/Date(1608643800000+0300)/", + "/Date(1608644700000+0300)/", + "/Date(1608701400000+0300)/", + "/Date(1608702300000+0300)/", + "/Date(1608703200000+0300)/", + "/Date(1608704100000+0300)/", + "/Date(1608705000000+0300)/", + "/Date(1608705900000+0300)/", + "/Date(1608706800000+0300)/", + "/Date(1608707700000+0300)/", + "/Date(1608708600000+0300)/", + "/Date(1608709500000+0300)/", + "/Date(1608710400000+0300)/", + "/Date(1608711300000+0300)/", + "/Date(1608712200000+0300)/", + "/Date(1608713100000+0300)/", + "/Date(1608714000000+0300)/", + "/Date(1608714900000+0300)/", + "/Date(1608715800000+0300)/", + "/Date(1608716700000+0300)/", + "/Date(1608717600000+0300)/", + "/Date(1608718500000+0300)/", + "/Date(1608719400000+0300)/", + "/Date(1608720300000+0300)/", + "/Date(1608721200000+0300)/", + "/Date(1608722100000+0300)/", + "/Date(1608723000000+0300)/", + "/Date(1608723900000+0300)/", + "/Date(1608724800000+0300)/", + "/Date(1608725700000+0300)/", + "/Date(1608726600000+0300)/", + "/Date(1608727500000+0300)/", + "/Date(1608728400000+0300)/", + "/Date(1608729300000+0300)/", + "/Date(1608730200000+0300)/", + "/Date(1608731100000+0300)/", + "/Date(1608787800000+0300)/", + "/Date(1608788700000+0300)/", + "/Date(1608789600000+0300)/", + "/Date(1608790500000+0300)/", + "/Date(1608791400000+0300)/", + "/Date(1608792300000+0300)/", + "/Date(1608793200000+0300)/", + "/Date(1608794100000+0300)/", + "/Date(1608795000000+0300)/", + "/Date(1608795900000+0300)/", + "/Date(1608796800000+0300)/", + "/Date(1608797700000+0300)/", + "/Date(1608798600000+0300)/", + "/Date(1608799500000+0300)/", + "/Date(1608800400000+0300)/", + "/Date(1608801300000+0300)/", + "/Date(1608802200000+0300)/", + "/Date(1608803100000+0300)/", + "/Date(1608804000000+0300)/", + "/Date(1608804900000+0300)/", + "/Date(1608960600000+0300)/", + "/Date(1608961500000+0300)/", + "/Date(1608962400000+0300)/", + "/Date(1608963300000+0300)/", + "/Date(1608964200000+0300)/", + "/Date(1608965100000+0300)/", + "/Date(1608966000000+0300)/", + "/Date(1608966900000+0300)/", + "/Date(1608967800000+0300)/", + "/Date(1608968700000+0300)/", + "/Date(1608969600000+0300)/", + "/Date(1608970500000+0300)/", + "/Date(1608971400000+0300)/", + "/Date(1608972300000+0300)/", + "/Date(1608973200000+0300)/", + "/Date(1608974100000+0300)/", + "/Date(1608975000000+0300)/", + "/Date(1608975900000+0300)/", + "/Date(1608976800000+0300)/", + "/Date(1608977700000+0300)/", + "/Date(1608978600000+0300)/", + "/Date(1608979500000+0300)/", + "/Date(1608980400000+0300)/", + "/Date(1608981300000+0300)/", + "/Date(1608982200000+0300)/", + "/Date(1608983100000+0300)/", + "/Date(1608984000000+0300)/", + "/Date(1608984900000+0300)/", + "/Date(1608985800000+0300)/", + "/Date(1608986700000+0300)/", + "/Date(1608987600000+0300)/", + "/Date(1608988500000+0300)/", + "/Date(1608989400000+0300)/", + "/Date(1608990300000+0300)/", + "/Date(1609047000000+0300)/", + "/Date(1609047900000+0300)/", + "/Date(1609048800000+0300)/", + "/Date(1609049700000+0300)/", + "/Date(1609050600000+0300)/", + "/Date(1609051500000+0300)/", + "/Date(1609052400000+0300)/", + "/Date(1609053300000+0300)/", + "/Date(1609054200000+0300)/", + "/Date(1609055100000+0300)/", + "/Date(1609056000000+0300)/", + "/Date(1609056900000+0300)/", + "/Date(1609057800000+0300)/", + "/Date(1609058700000+0300)/", + "/Date(1609059600000+0300)/", + "/Date(1609060500000+0300)/", + "/Date(1609061400000+0300)/", + "/Date(1609062300000+0300)/", + "/Date(1609063200000+0300)/", + "/Date(1609064100000+0300)/", + "/Date(1609065000000+0300)/", + "/Date(1609065900000+0300)/", + "/Date(1609066800000+0300)/", + "/Date(1609067700000+0300)/", + "/Date(1609068600000+0300)/", + "/Date(1609069500000+0300)/", + "/Date(1609070400000+0300)/", + "/Date(1609071300000+0300)/", + "/Date(1609072200000+0300)/", + "/Date(1609073100000+0300)/", + "/Date(1609074000000+0300)/", + "/Date(1609074900000+0300)/", + "/Date(1609075800000+0300)/", + "/Date(1609076700000+0300)/", + "/Date(1609133400000+0300)/", + "/Date(1609134300000+0300)/", + "/Date(1609135200000+0300)/", + "/Date(1609136100000+0300)/", + "/Date(1609137000000+0300)/", + "/Date(1609137900000+0300)/", + "/Date(1609138800000+0300)/", + "/Date(1609139700000+0300)/", + "/Date(1609140600000+0300)/", + "/Date(1609141500000+0300)/", + "/Date(1609142400000+0300)/", + "/Date(1609143300000+0300)/", + "/Date(1609144200000+0300)/", + "/Date(1609145100000+0300)/", + "/Date(1609146000000+0300)/", + "/Date(1609146900000+0300)/", + "/Date(1609147800000+0300)/", + "/Date(1609148700000+0300)/", + "/Date(1609149600000+0300)/", + "/Date(1609150500000+0300)/", + "/Date(1609151400000+0300)/", + "/Date(1609152300000+0300)/", + "/Date(1609153200000+0300)/", + "/Date(1609154100000+0300)/", + "/Date(1609155000000+0300)/", + "/Date(1609155900000+0300)/", + "/Date(1609156800000+0300)/", + "/Date(1609157700000+0300)/", + "/Date(1609158600000+0300)/", + "/Date(1609159500000+0300)/", + "/Date(1609160400000+0300)/", + "/Date(1609161300000+0300)/", + "/Date(1609162200000+0300)/", + "/Date(1609163100000+0300)/", + "/Date(1609219800000+0300)/", + "/Date(1609220700000+0300)/", + "/Date(1609221600000+0300)/", + "/Date(1609222500000+0300)/", + "/Date(1609223400000+0300)/", + "/Date(1609224300000+0300)/", + "/Date(1609225200000+0300)/", + "/Date(1609226100000+0300)/", + "/Date(1609227000000+0300)/", + "/Date(1609227900000+0300)/", + "/Date(1609228800000+0300)/", + "/Date(1609229700000+0300)/", + "/Date(1609230600000+0300)/", + "/Date(1609231500000+0300)/", + "/Date(1609232400000+0300)/", + "/Date(1609233300000+0300)/", + "/Date(1609234200000+0300)/", + "/Date(1609235100000+0300)/", + "/Date(1609236000000+0300)/", + "/Date(1609236900000+0300)/", + "/Date(1609237800000+0300)/", + "/Date(1609238700000+0300)/", + "/Date(1609239600000+0300)/", + "/Date(1609240500000+0300)/", + "/Date(1609241400000+0300)/", + "/Date(1609242300000+0300)/", + "/Date(1609243200000+0300)/", + "/Date(1609244100000+0300)/", + "/Date(1609245000000+0300)/", + "/Date(1609245900000+0300)/", + "/Date(1609246800000+0300)/", + "/Date(1609247700000+0300)/", + "/Date(1609248600000+0300)/", + "/Date(1609249500000+0300)/", + "/Date(1609306200000+0300)/", + "/Date(1609307100000+0300)/", + "/Date(1609308000000+0300)/", + "/Date(1609308900000+0300)/", + "/Date(1609309800000+0300)/", + "/Date(1609310700000+0300)/", + "/Date(1609311600000+0300)/", + "/Date(1609312500000+0300)/", + "/Date(1609313400000+0300)/", + "/Date(1609314300000+0300)/", + "/Date(1609315200000+0300)/", + "/Date(1609316100000+0300)/", + "/Date(1609317000000+0300)/", + "/Date(1609317900000+0300)/", + "/Date(1609318800000+0300)/", + "/Date(1609319700000+0300)/", + "/Date(1609320600000+0300)/", + "/Date(1609321500000+0300)/", + "/Date(1609322400000+0300)/", + "/Date(1609323300000+0300)/", + "/Date(1609324200000+0300)/", + "/Date(1609325100000+0300)/", + "/Date(1609326000000+0300)/", + "/Date(1609326900000+0300)/", + "/Date(1609327800000+0300)/", + "/Date(1609328700000+0300)/", + "/Date(1609329600000+0300)/", + "/Date(1609330500000+0300)/", + "/Date(1609331400000+0300)/", + "/Date(1609332300000+0300)/", + "/Date(1609333200000+0300)/", + "/Date(1609334100000+0300)/", + "/Date(1609335000000+0300)/", + "/Date(1609335900000+0300)/", + "/Date(1609392600000+0300)/", + "/Date(1609393500000+0300)/", + "/Date(1609394400000+0300)/", + "/Date(1609395300000+0300)/", + "/Date(1609396200000+0300)/", + "/Date(1609397100000+0300)/", + "/Date(1609398000000+0300)/", + "/Date(1609398900000+0300)/", + "/Date(1609399800000+0300)/", + "/Date(1609400700000+0300)/", + "/Date(1609401600000+0300)/", + "/Date(1609402500000+0300)/", + "/Date(1609403400000+0300)/", + "/Date(1609404300000+0300)/", + "/Date(1609405200000+0300)/", + "/Date(1609406100000+0300)/", + "/Date(1609407000000+0300)/", + "/Date(1609407900000+0300)/", + "/Date(1609408800000+0300)/", + "/Date(1609409700000+0300)/" + ] +} \ No newline at end of file diff --git a/lib/config/config.dart b/lib/config/config.dart index 57695678..60e9bbd3 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -1,11 +1,47 @@ +import 'package:diplomaticquarterapp/models/Request.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'dart:io'; const MAX_SMALL_SCREEN = 660; -const BASE_URL = 'https://uat.hmgwebservices.com/Services'; + + +const BASE_URL = 'https://hmgwebservices.com/Services'; const GET_PROJECT = '/Lists.svc/REST/GetProject'; +//const BASE_URL = 'https://hmgwebservices.com/'; // Production Environment +//const BASE_URL = 'https://uat.hmgwebservices.com/'; // UAT Environment +//URL to get clinic list +const GET_CLINICS_LIST_URL = "Services/lists.svc/REST/GetClinicCentralized"; + +//URL to get doctors list +const GET_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/SearchDoctorsByTime"; +const GET_PHARMCY_ITEMS = "/Lists.svc/REST/GetPharmcyItems_Region"; +const GET_PHARMACY_LIST = "/Patients.svc/REST/GetPharmcyList"; class AppGlobal { static var context; + AppSharedPreferences sharedPref = AppSharedPreferences(); + + Request getPublicRequest() { + Request request = new Request(); + request.VersionID = 5.3; //3.6; + request.Channel = 3; +// request.LanguageID = await sharedPref.getString(APP_LANGUAGE); + request.IPAdress = "10.20.10.20"; + request.generalid = 'Cs2020@2016\$2958'; + request.PatientOutSA = 0; + request.SessionID = null; + request.isDentalAllowedBackend = false; + request.DeviceTypeID = Platform.isIOS ? 1 : 2; + + return request; + } + } + +const CHANNEL = 3; +const GENERAL_ID = 'Cs2020@2016\$2958'; +const IP_ADDRESS = '10.20.10.20'; +const VERSION_ID = 5.5; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 7cb0159c..c762812d 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -11,5 +11,78 @@ const Map> localizedValues = { 'services': {'en': 'SERVICES', 'ar': 'الخدمات'}, 'mySchedule': {'en': 'My Schedule', 'ar': 'جدولي'}, 'logout': {'en': 'Logout', 'ar': 'تسجيل خروج'}, + 'bookAppo': {'en': 'Book Appointment', 'ar': 'حجز موعد'}, + 'searchBy': {'en': 'Search By:', 'ar': 'البحث عن طريق:'}, + 'clinic': {'en': 'Clinic', 'ar': 'العيادة'}, + 'name': {'en': 'Name', 'ar': 'الإسم'}, + 'doctor': {'en': 'Doctor', 'ar': 'الطبيب'}, + 'clinicName': {'en': 'Clinic Name', 'ar': 'اسم العيادة'}, + 'doctorName': {'en': 'Doctor Name', 'ar': 'إسم الطبيب'}, + 'nearestAppo': {'en': 'Nearest appointment', 'ar': 'أقرب موعد'}, + 'searchByDocText': {'en': 'Type the name of the doctor to help you find him', 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه'}, + 'enterDocName': {'en': 'Enter Doctor name', 'ar': 'أدخل إسم الطبيب'}, + 'search': {'en': 'Search', 'ar': 'بحث'}, + 'bookNow': {'en': 'BOOK NOW', 'ar': 'احجز الآن'}, + 'docInfo': {'en': 'Doctor Information', 'ar': 'معلومات الطبيب'}, + 'appoInfo': {'en': 'Appointment Information', 'ar': 'معلومات الموعد'}, + 'availableAppo': {'en': 'Available Appointments', 'ar': 'المواعيد المتاحة'}, + 'gender': {'en': 'Gender', 'ar': 'الجنس'}, + 'nationality': {'en': 'nationality', 'ar': 'الجنسية'}, + 'docQualifications': {'en': 'Doctor Qualifications', 'ar': 'مؤهلات الطبيب'}, + 'confirmAppoHeading': {'en': 'Kindly confirm your Appointment', 'ar': 'يرجى تأكيد موعدك'}, + 'patientInfo': {'en': 'Patient Information', 'ar': 'معلومات المريض'}, + 'bookSuccess': {'en': 'Book Success', 'ar': 'تم حجز الموعد بنجاح'}, + 'patientShare': {'en': 'Patient Share', 'ar': 'المبلغ المستحق'}, + 'patientShareWithTax': {'en': 'Patient Share with Tax', 'ar': 'المبلغ الإجمالي المستحق'}, + 'confirmAppo': {'en': 'Confirm Appointment', 'ar': 'تأكيد الموعد'}, + 'confirm': {'en': 'Confirm', 'ar': 'تأكيد'}, + 'appointment': {'en': 'Appointment', 'ar': 'الموعد'}, + 'confirmLater': {'en': 'Confirm Later', 'ar': 'تأكيد لاحقا'}, + 'todoList': {'en': 'Todo List', 'ar': 'مهامي'}, + 'appoActions': {'en': 'Appointment Actions', 'ar': 'إجراءات الموعد'}, + + 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'}, + 'loginregister': {'en': 'Login / Register', 'ar': 'دخولتسجيل'}, + 'welcome': {'en': 'Welcome', 'ar': 'أهلا بك'}, + 'welcome_text': { + 'en': 'Dr. Sulaiman Al Habib Mobile Application ', + 'ar': 'الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك' + }, + 'welcome_text2': { + 'en': 'Have you visited AlHabib Medical Group before? ', + 'ar': 'الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك' + }, + 'yes': {'en': 'Yes', 'ar': 'نعم'}, + 'no': {'en': 'No', 'ar': 'لا'}, + "logintyperadio": { + "en": "Choose from below options to login to your medical file.", + "ar": "اختر من الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي." + }, + "registernow": {"en": "Register Now", "ar": "تسجيل الان"}, + "nationalID": {"en": "National ID", "ar": "رقم الهوية"}, + "fileNo": {"en": "File Number", "ar": "رقم الملف"}, + "forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"}, + "enter-national-id": { + "en": "Please enter mobile number and national ID / Iqama", + "ar": "الرجاء إدخال رقم الجوال والهوية الوطنية / الاقامة" + }, + "profile-info": { + "en": "Please enter profile information", + "ar": "الرجاء إدخال معلومات الملف الشخصي" + }, + "submit": {"en": "Submit", "ar": "ارسال"}, + "forgot-desc": { + "en": "Enter the mobile number to receive the Medical file Number via SMS", + "ar": "أدخل رقم الجوال المسجل لاستلام رقم الملف عن طريق الرسائل النصية" + }, + "dob": {"en": "Birth Date:", "ar": "تاريخ الميلاد"}, + "hijri-date": {"en": "Hijri Date", "ar": "التاريخ الهجري"}, + "gregorian-date": {"en": "Gregorian Date", "ar": "التاريخ الميلادي"}, + 'searchMedicine': {'en': 'Search Medicine', 'ar': 'البحث عن الدواء'}, + 'pharmaciesList': {'en': 'Pharmacies List', 'ar': 'قائمة الصيدلايات'}, + 'searchMedicineHere': { + 'en': 'Search Medicine Here', + 'ar': 'ابحث عن الدواء هنا' + }, }; diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 8c03fcce..1e75a802 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -1,3 +1,7 @@ const TOKEN = 'token'; const APP_LANGUAGE = 'language'; - +const USER_PROFILE = 'user-profile'; +const PUSH_TOKEN = 'push-token'; +const REGISTER_DATA_FOR_REGISTER = 'register-data-for-register'; +const LOGIN_TOKEN_ID = 'register-data-for-register'; +const REGISTER_DATA_FOR_LOGIIN = 'register-data-for-login'; diff --git a/lib/core/enum/viewstate.dart b/lib/core/enum/viewstate.dart index 09b5d34b..94d79bec 100644 --- a/lib/core/enum/viewstate.dart +++ b/lib/core/enum/viewstate.dart @@ -1 +1 @@ -enum ViewState { Idle, Busy, Error } +enum ViewState { Idle, Busy, Error, BusyLocal, ErrorLocal } diff --git a/lib/core/model/auth/check_paitent_authentication_req.dart b/lib/core/model/auth/check_paitent_authentication_req.dart new file mode 100644 index 00000000..2846c1fc --- /dev/null +++ b/lib/core/model/auth/check_paitent_authentication_req.dart @@ -0,0 +1,76 @@ +class CheckPatientAuthenticationReq { + int patientMobileNumber; + String zipCode; + bool isRegister; + String tokenID; + int searchType; + String patientIdentificationID; + int patientID; + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + int patientOutSA; + Null sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + + CheckPatientAuthenticationReq( + {this.patientMobileNumber, + this.zipCode, + this.isRegister, + this.tokenID, + this.searchType, + this.patientIdentificationID, + this.patientID, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.patientOutSA, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID}); + + CheckPatientAuthenticationReq.fromJson(Map json) { + patientMobileNumber = json['PatientMobileNumber']; + zipCode = json['ZipCode']; + isRegister = json['isRegister']; + tokenID = json['TokenID']; + searchType = json['SearchType']; + patientIdentificationID = json['PatientIdentificationID']; + patientID = json['PatientID']; + 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['isRegister'] = this.isRegister; + data['TokenID'] = this.tokenID; + data['SearchType'] = this.searchType; + data['PatientIdentificationID'] = this.patientIdentificationID; + data['PatientID'] = this.patientID; + 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/core/model/auth/select_device_imei_res.dart b/lib/core/model/auth/select_device_imei_res.dart new file mode 100644 index 00000000..14444279 --- /dev/null +++ b/lib/core/model/auth/select_device_imei_res.dart @@ -0,0 +1,68 @@ +class SelectDeviceIMEIRES { + bool biometricEnabled; + String createdOn; + String editedOn; + int iD; + String iMEI; + String identificationNo; + int logInType; + String mobile; + String name; + String nameN; + bool outSA; + int patientID; + int patientType; + int preferredLanguage; + + SelectDeviceIMEIRES( + {this.biometricEnabled, + this.createdOn, + this.editedOn, + this.iD, + this.iMEI, + this.identificationNo, + this.logInType, + this.mobile, + this.name, + this.nameN, + this.outSA, + this.patientID, + this.patientType, + this.preferredLanguage}); + + SelectDeviceIMEIRES.fromJson(Map json) { + biometricEnabled = json['BiometricEnabled']; + createdOn = json['CreatedOn']; + editedOn = json['EditedOn']; + iD = json['ID']; + iMEI = json['IMEI']; + identificationNo = json['IdentificationNo']; + logInType = json['LogInType']; + mobile = json['Mobile']; + name = json['Name']; + nameN = json['NameN']; + outSA = json['OutSA']; + patientID = json['PatientID']; + patientType = json['PatientType']; + preferredLanguage = json['PreferredLanguage']; + } + + Map toJson() { + final Map data = new Map(); + data['BiometricEnabled'] = this.biometricEnabled; + data['CreatedOn'] = this.createdOn; + data['EditedOn'] = this.editedOn; + data['ID'] = this.iD; + data['IMEI'] = this.iMEI; + data['IdentificationNo'] = this.identificationNo; + data['LogInType'] = this.logInType; + data['Mobile'] = this.mobile; + data['Name'] = this.name; + data['NameN'] = this.nameN; + data['OutSA'] = this.outSA; + data['PatientID'] = this.patientID; + data['PatientType'] = this.patientType; + data['PreferredLanguage'] = this.preferredLanguage; + return data; + } +} diff --git a/lib/core/model/hospitals/hospitals_model.dart b/lib/core/model/hospitals/hospitals_model.dart index a0628c60..a8308de8 100644 --- a/lib/core/model/hospitals/hospitals_model.dart +++ b/lib/core/model/hospitals/hospitals_model.dart @@ -18,21 +18,21 @@ class HospitalsModel { HospitalsModel( {this.desciption, - this.desciptionN, - this.iD, - this.legalName, - this.legalNameN, - this.name, - this.nameN, - this.phoneNumber, - this.setupID, - this.distanceInKilometers, - this.isActive, - this.latitude, - this.longitude, - this.mainProjectID, - this.projectOutSA, - this.usingInDoctorApp}); + this.desciptionN, + this.iD, + this.legalName, + this.legalNameN, + this.name, + this.nameN, + this.phoneNumber, + this.setupID, + this.distanceInKilometers, + this.isActive, + this.latitude, + this.longitude, + this.mainProjectID, + this.projectOutSA, + this.usingInDoctorApp}); HospitalsModel.fromJson(Map json) { desciption = json['Desciption']; diff --git a/lib/core/model/pharmacies/pharmacies_list_model.dart b/lib/core/model/pharmacies/pharmacies_list_model.dart new file mode 100644 index 00000000..34228e11 --- /dev/null +++ b/lib/core/model/pharmacies/pharmacies_list_model.dart @@ -0,0 +1,69 @@ +class PharmaciesListModel { + int itemID; + int patientTypeID; + int languageID; + String stamp; + String iPAdress; + double versionID; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + int patientOutSA; + int channel; + int doctorID; + int editedBy; + int projectID; + int clinicID; + + PharmaciesListModel({ + this.itemID, + this.patientTypeID = 1, + this.languageID = 2, + this.stamp = '2020-04-23T21:01:21.492Z', + this.iPAdress = '11.11.11.11', + this.versionID = 1.2, + this.tokenID, + this.sessionID = 'e29zoooEJ4', + this.isLoginForDoctorApp = true, + this.channel = 9, + //this.patientOutSA = true, + }); + + PharmaciesListModel.fromJson(Map json) { + itemID = json['ItemID']; + patientTypeID = json['PatientTypeID']; + languageID = json['LanguageID']; + stamp = json['stamp']; + iPAdress = json['IPAdress']; + versionID = json['VersionID']; + tokenID = json['TokenID']; + sessionID = json['SessionID']; + isLoginForDoctorApp = json['IsLoginForDoctorApp']; + patientOutSA = json['PatientOutSA']; + channel = json['Channel']; + doctorID = json['DoctorID']; + editedBy = json['EditedBy']; + projectID = json['ProjectID']; + clinicID = json['ClinicID']; + } + + Map toJson() { + final Map data = new Map(); + data['ItemID'] = this.itemID; + data['PatientTypeID'] = this.patientTypeID; + data['LanguageID'] = this.languageID; + data['stamp'] = this.stamp; + data['IPAdress'] = this.iPAdress; + data['VersionID'] = this.versionID; + data['TokenID'] = this.tokenID; + data['SessionID'] = this.sessionID; + data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + data['PatientOutSA'] = this.patientOutSA; + data['Channel'] = this.channel; + data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; + data['ProjectID'] = this.projectID; + data['ClinicID'] = this.clinicID; + return data; + } +} diff --git a/lib/core/model/pharmacies/pharmacies_model.dart b/lib/core/model/pharmacies/pharmacies_model.dart new file mode 100644 index 00000000..69576dd2 --- /dev/null +++ b/lib/core/model/pharmacies/pharmacies_model.dart @@ -0,0 +1,94 @@ +class PharmaciesModel { + String pHRItemName; + int pageIndex; + int pageSize; + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + int patientOutSA; + String sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + int doctorID; + int editedBy; + int projectID; + int clinicID; + String tokenID; + String stamp; + bool isLoginForDoctorApp; + String itemDes; + String productImage; + + PharmaciesModel( + {this.pHRItemName, + this.pageIndex, + this.pageSize, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.patientOutSA, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID, + this.doctorID, + this.editedBy, + this.projectID, + this.clinicID, + this.tokenID, + this.stamp, + this.itemDes, + this.productImage, + this.isLoginForDoctorApp}); + + PharmaciesModel.fromJson(Map json) { + productImage = json['ProductImageBase64']; + itemDes = json['ItemDescription']; + pHRItemName = json['PHR_itemName']; + pageIndex = json['PageIndex']; + pageSize = json['PageSize']; + 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']; + doctorID = json['DoctorID']; + editedBy = json['EditedBy']; + projectID = json['ProjectID']; + clinicID = json['ClinicID']; + tokenID = json['TokenID']; + stamp = json['stamp']; + isLoginForDoctorApp = json['IsLoginForDoctorApp']; + } + + Map toJson() { + final Map data = new Map(); + data['PHR_itemName'] = this.pHRItemName; + data['PageIndex'] = this.pageIndex; + data['PageSize'] = this.pageSize; + 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; + data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; + data['ProjectID'] = this.projectID; + data['ClinicID'] = this.clinicID; + data['TokenID'] = this.tokenID; + data['stamp'] = this.stamp; + data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + return data; + } +} diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 72c38568..57686824 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -14,7 +14,7 @@ AppSharedPreferences sharedPref = new AppSharedPreferences(); /// body: null); class BaseAppClient { - post( + post( String endPoint, { Map body, Function(dynamic response, int statusCode) onSuccess, @@ -22,7 +22,6 @@ class BaseAppClient { }) async { String url = BASE_URL + endPoint; try { - //Map profile = await sharedPref.getObj(DOCTOR_PROFILE); // String token = await sharedPref.getString(TOKEN); diff --git a/lib/core/service/pharmacies_service.dart b/lib/core/service/pharmacies_service.dart new file mode 100644 index 00000000..fb59dceb --- /dev/null +++ b/lib/core/service/pharmacies_service.dart @@ -0,0 +1,72 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart'; +import 'package:diplomaticquarterapp/core/service/base_service.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart'; + +class PharmacyService extends BaseService { + List _pharmaciesList = List(); + + List get pharmaciesList => _pharmaciesList; + bool isFinished = true; + bool hasError = false; + String errorMsg = ''; + + void clearPharmaciesLis() { + _pharmaciesList.clear(); + } + + PharmaciesModel _requestGetPharmaciesModel = PharmaciesModel( + channel: 3, + clinicID: 1, + deviceTypeID: 2, + doctorID: 1485, + editedBy: 1485, + generalid: "Cs2020@2016\$2958", + iPAdress: "11.11.11.11", + isDentalAllowedBackend: false, + isLoginForDoctorApp: true, + languageID: 2, + pageIndex: 0, + pageSize: 20, + patientOutSA: 0, + pHRItemName: "panadol", + projectID: 15, + sessionID: "BlUSkYymTt", + stamp: "2020-04-27T12:17:17.721Z", + tokenID: "6EfeKCLRu0GPdFutIt3m7Q==", + versionID: 5.3); + + Future getMedicine({String drugName}) async { + hasError = false; + _requestGetPharmaciesModel.pHRItemName = drugName ?? 'panadol'; + try { + await baseAppClient.post(GET_PHARMCY_ITEMS, + onSuccess: (dynamic response, int statusCode) { + _pharmaciesList.clear(); + response['ListPharmcy_Region'].forEach((item) { + _pharmaciesList.add(PharmaciesModel.fromJson(item)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _requestGetPharmaciesModel.toJson()); + } catch (error) { + throw error; + } + } + + Future getMedicineList({String name}) async { + _requestGetPharmaciesModel.pHRItemName = name ?? 'panadol'; + await baseAppClient.post(GET_PHARMACY_LIST, + onSuccess: (dynamic response, int statusCode) { + _pharmaciesList.clear(); + response['PharmList'].forEach((item) { + _pharmaciesList.add(PharmaciesModel.fromJson(item)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _requestGetPharmaciesModel.toJson()); + } +} diff --git a/lib/core/viewModels/pharmacies_view_model.dart b/lib/core/viewModels/pharmacies_view_model.dart new file mode 100644 index 00000000..da40fbe3 --- /dev/null +++ b/lib/core/viewModels/pharmacies_view_model.dart @@ -0,0 +1,36 @@ +import '../../locator.dart'; +import 'base_view_model.dart'; +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart'; +import 'package:diplomaticquarterapp/core/service/pharmacies_service.dart'; + +class PharmacyViewModel extends BaseViewModel { + bool isFinished = true; + bool hasError = false; + String errorMsg = ''; + PharmacyService _pharmacyService = locator(); + + List get pharmacy => _pharmacyService.pharmaciesList; + + Future getMedicine() async { + setState(ViewState.Busy); + await _pharmacyService.getMedicine(); + if (_pharmacyService.hasError) { + error = _pharmacyService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } + + Future getMedicine2({String name}) async { + hasError = false; + _pharmacyService.clearPharmaciesLis(); + setState(ViewState.BusyLocal); + await _pharmacyService.getMedicine(drugName: name); + if (_pharmacyService.hasError) { + error = _pharmacyService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } +} diff --git a/lib/locator.dart b/lib/locator.dart index 3d44f4ce..f6a76c1c 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -2,6 +2,8 @@ import 'package:get_it/get_it.dart'; import 'core/service/hospital_service.dart'; import 'core/viewModels/hospital_view_model.dart'; +import 'core/viewModels/pharmacies_view_model.dart'; +import 'core/service/pharmacies_service.dart'; GetIt locator = GetIt.instance; @@ -9,7 +11,9 @@ GetIt locator = GetIt.instance; void setupLocator() { /// Services locator.registerLazySingleton(() => HospitalService()); + locator.registerLazySingleton(() => PharmacyService()); /// View Model locator.registerFactory(() => HospitalViewModel()); + locator.registerFactory(() => PharmacyViewModel()); } diff --git a/lib/main.dart b/lib/main.dart index 186ec52f..5a65fd3b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -72,8 +73,8 @@ class MyApp extends StatelessWidget { ), ), ), - initialRoute: '/', - routes: {'/': (context) => LandingPage()}, + initialRoute: HOME, + routes: routes, debugShowCheckedModeBanner: false, ), ), diff --git a/lib/models/Appointments/FreeSlot.dart b/lib/models/Appointments/FreeSlot.dart new file mode 100644 index 00000000..46692982 --- /dev/null +++ b/lib/models/Appointments/FreeSlot.dart @@ -0,0 +1,12 @@ +class FreeSlot { + List event; + DateTime slot; + + + FreeSlot(this.slot, this.event); + + @override + String toString() { + return '{ ${this.slot}, ${this.event} }'; + } +} \ No newline at end of file diff --git a/lib/models/Appointments/appoDetailsButtons.dart b/lib/models/Appointments/appoDetailsButtons.dart new file mode 100644 index 00000000..adce8b93 --- /dev/null +++ b/lib/models/Appointments/appoDetailsButtons.dart @@ -0,0 +1,24 @@ +class AppoDetailsButton { + String title; + String subtitle; + String icon; + String caller; + + AppoDetailsButton({this.title, this.subtitle, this.icon, this.caller}); + + AppoDetailsButton.fromJson(Map json) { + title = json['title']; + subtitle = json['subtitle']; + icon = json['icon']; + caller = json['caller']; + } + + Map toJson() { + final Map data = new Map(); + data['title'] = this.title; + data['subtitle'] = this.subtitle; + data['icon'] = this.icon; + data['caller'] = this.caller; + return data; + } +} diff --git a/lib/models/Appointments/getClinicsRequest.dart b/lib/models/Appointments/getClinicsRequest.dart new file mode 100644 index 00000000..e69de29b diff --git a/lib/models/Clinics/ClinicListResponse.dart b/lib/models/Clinics/ClinicListResponse.dart new file mode 100644 index 00000000..cabb47b2 --- /dev/null +++ b/lib/models/Clinics/ClinicListResponse.dart @@ -0,0 +1,77 @@ +class ListClinicCentralized { + int clinicID; + String clinicDescription; + Null clinicDescriptionN; + int age; + int gender; + bool isLiveCareClinicAndOnline; + int liveCareClinicID; + int liveCareServiceID; + + ListClinicCentralized( + {this.clinicID, + this.clinicDescription, + this.clinicDescriptionN, + this.age, + this.gender, + this.isLiveCareClinicAndOnline, + this.liveCareClinicID, + this.liveCareServiceID}); + + ListClinicCentralized.fromJson(Map json) { + clinicID = json['ClinicID']; + clinicDescription = json['ClinicDescription']; + clinicDescriptionN = json['ClinicDescriptionN']; + age = json['Age']; + gender = json['Gender']; + isLiveCareClinicAndOnline = json['IsLiveCareClinicAndOnline']; + liveCareClinicID = json['LiveCareClinicID']; + liveCareServiceID = json['LiveCareServiceID']; + } + + Map toJson() { + final Map data = new Map(); + data['ClinicID'] = this.clinicID; + data['ClinicDescription'] = this.clinicDescription; + data['ClinicDescriptionN'] = this.clinicDescriptionN; + data['Age'] = this.age; + data['Gender'] = this.gender; + data['IsLiveCareClinicAndOnline'] = this.isLiveCareClinicAndOnline; + data['LiveCareClinicID'] = this.liveCareClinicID; + data['LiveCareServiceID'] = this.liveCareServiceID; + return data; + } +} + +class ListGetBookScheduleConfigsList { + int iD; + String description; + Null descriptionN; + bool value; + bool isActive; + + ListGetBookScheduleConfigsList( + {this.iD, + this.description, + this.descriptionN, + this.value, + this.isActive}); + + ListGetBookScheduleConfigsList.fromJson(Map json) { + iD = json['ID']; + description = json['Description']; + descriptionN = json['DescriptionN']; + value = json['Value']; + isActive = json['IsActive']; + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['Description'] = this.description; + data['DescriptionN'] = this.descriptionN; + data['Value'] = this.value; + data['IsActive'] = this.isActive; + return data; + } +} diff --git a/lib/models/Request.dart b/lib/models/Request.dart new file mode 100644 index 00000000..03aa7760 --- /dev/null +++ b/lib/models/Request.dart @@ -0,0 +1,33 @@ +class Request { + var ClinicID; + var PatientOutSA; + var PatientID; + var ProjectID; + var LanguageID; + var DeviceTypeID; + var AppointmentNo; + var IPAdress; + var VersionID; + var Channel; + var PatientTypeID; + var PatientType; + var isDentalAllowedBackend; + var IsIrisPrescription; + var TokenID; + var SessionID; + var PatientIdentificationID; + var PatientMobileNumber; + var BookedBy; + var Latitude; + var Longitude; + var OutSA; + var Note; + var IsActiveAppointment; + var RequestType; + var InvoiceNo; + var EncounterType; + var generalid; + var ServiceID; + var StrAppointmentDate; + var SKU; +} \ No newline at end of file diff --git a/lib/pages/BookAppointment/BookConfirm.dart b/lib/pages/BookAppointment/BookConfirm.dart new file mode 100644 index 00000000..58f0a344 --- /dev/null +++ b/lib/pages/BookAppointment/BookConfirm.dart @@ -0,0 +1,314 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; +import 'package:rating_bar/rating_bar.dart'; + +import 'BookSuccess.dart'; + +class BookConfirm extends StatefulWidget { + @override + _BookConfirmState createState() => _BookConfirmState(); +} + +class _BookConfirmState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(TranslationBase.of(context).bookAppo), + ), + body: SingleChildScrollView( + child: Container( + margin: EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.only(bottom: 5.0), + alignment: Alignment.center, + child: Text(TranslationBase.of(context).confirmAppoHeading, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 22.0, + color: new Color(0xFF60686b), + letterSpacing: 0.9))), + Divider( + color: Colors.grey[400], + ), + Container( + margin: EdgeInsets.only(top: 15.0), + child: Text(TranslationBase.of(context).docInfo, + style: TextStyle( + fontSize: 22.0, + color: Colors.black, + letterSpacing: 0.9))), + Container( + child: Card( + color: Colors.white, + margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 16.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + side: BorderSide(color: Colors.grey[400], width: 0.6)), + child: Container( + padding: EdgeInsets.all(7.0), + width: MediaQuery.of(context).size.width, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network( + "https://hmgwebservices.com/Images/MobileImages/OALAY/2477.png", + fit: BoxFit.fill, + height: 70.0, + width: 70.0), + ), + Container( + width: MediaQuery.of(context).size.width * 0.6, + margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Dr. EYAD ISMAIL ABU-JAYAD", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + Container( + margin: EdgeInsets.only(top: 3.0), + child: Text("INTERNAL MEDICINE CLINIC", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 3.0, bottom: 3.0), + child: Text("General Practioner", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + mainAxisSize: MainAxisSize.max, + children: [ + RatingBar.readOnly( + initialRating: 4.0, + size: 20.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + ], + ), + ], + ), + ), + ], + ), + ), + ), + ), + Container( + margin: EdgeInsets.only(top: 15.0), + child: Text(TranslationBase.of(context).appoInfo, + style: TextStyle( + fontSize: 22.0, + color: Colors.black, + letterSpacing: 0.9))), + Container( + child: Card( + color: Colors.white, + margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 16.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + side: BorderSide(color: Colors.grey[400], width: 0.6)), + child: Container( + padding: EdgeInsets.all(7.0), + width: MediaQuery.of(context).size.width, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0), + child: Image.asset( + "assets/images/new-design/icon_hospital.png"), + ), + Container( + margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), + child: Text("Hospital: Olaya Hospital", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0), + child: Image.asset( + "assets/images/new-design/icon_hospital.png"), + ), + Container( + margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), + child: Text("Clinic: INTERNAL MEDICINE CLINIC", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + child: Icon( + Icons.today, + color: Colors.grey[700], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), + child: Text("Date: Olaya Hospital", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + child: Icon( + Icons.timer, + color: Colors.grey[700], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), + child: Text("Hospital: Olaya Hospital", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + ), + ], + ), + ], + ), + ), + ), + ), + Container( + margin: EdgeInsets.only(top: 15.0), + child: Text(TranslationBase.of(context).patientInfo, + style: TextStyle( + fontSize: 22.0, + color: Colors.black, + letterSpacing: 0.9))), + Container( + child: Card( + color: Colors.white, + margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 16.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + side: BorderSide(color: Colors.grey[400], width: 0.6)), + child: Container( + padding: EdgeInsets.all(7.0), + width: MediaQuery.of(context).size.width, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.all(10.0), + child: Image.asset( + "assets/images/new-design/appointment_info.png", + fit: BoxFit.fill, + height: 60.0, + width: 60.0), + ), + Container( + width: MediaQuery.of(context).size.width * 0.6, + margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("TAMER FANASHEH", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[900], + letterSpacing: 1.0)), + Container( + margin: EdgeInsets.only(top: 5.0), + child: Text("Gender: Male", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 5.0, bottom: 3.0), + child: Text("Age: 33", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + bottomSheet: Container( + width: MediaQuery.of(context).size.width, + height: 50.0, + margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0), + child: ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width * 0.7, + height: 45.0, + child: RaisedButton( + color: new Color(0xFF60686b), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + navigateToBookSuccess(context); + }, + child: Text(TranslationBase.of(context).bookNow, style: TextStyle(fontSize: 18.0)), + ), + ), + ), + ); + } + + Future navigateToBookSuccess(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => BookSuccess())); + } +} diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart new file mode 100644 index 00000000..460d4fff --- /dev/null +++ b/lib/pages/BookAppointment/BookSuccess.dart @@ -0,0 +1,277 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class BookSuccess extends StatefulWidget { + @override + _BookSucceState createState() => _BookSucceState(); +} + +class _BookSucceState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( +// appBar: AppBar( +// title: Text("Book Success"), +// bottomOpacity: 0.0, +// elevation: 0.0, +// backgroundColor: new Color(0xFF20bc44), +// ), + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + width: MediaQuery.of(context).size.width, + padding: EdgeInsets.only(bottom: 10.0), + color: new Color(0xFF20bc44), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.only(top: 40.0), + child: Text(TranslationBase.of(context).bookSuccess, + style: TextStyle( + color: Colors.white, + fontSize: 18.0, + fontWeight: FontWeight.bold, + letterSpacing: 0.9)), + ), + Container( + margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 20.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.all(10.0), + child: Image.asset( + "assets/images/new-design/check-icon.png", + fit: BoxFit.fill, + height: 80.0, + width: 80.0), + ), + Container( + margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text("Olaya Hospital", style: _getTextStyling()), + Container( + margin: EdgeInsets.only(top: 5.0), + child: + Text("Insurance", style: _getTextStyling()), + ), + Container( + margin: EdgeInsets.only(top: 5.0, bottom: 3.0), + child: Text("INTERNAL MEDICINE CLINIC", + style: _getTextStyling()), + ), + Container( + margin: EdgeInsets.only(top: 5.0, bottom: 3.0), + child: Text( + "Thursday, 31 December 2020, 13:15:00", + style: _getTextStyling()), + ), + Container( + margin: EdgeInsets.only(top: 5.0, bottom: 3.0), + child: Text("Dr. EYAD ISMAIL ABU-JAYAB", + style: _getTextStyling()), + ), + ], + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all(color: Colors.white, width: 0.5)), + margin: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 10.0), + child: Table( + border: TableBorder( + verticalInside: + BorderSide(width: 0.5, color: Colors.white)), + children: [ + TableRow(children: [ + TableCell(child: _getNormalText(TranslationBase.of(context).patientShare)), + TableCell( + child: _getNormalText(TranslationBase.of(context).patientShareWithTax)), + ]), + TableRow(children: [ + TableCell(child: _getHeadingText("SR 35.7")), + TableCell(child: _getHeadingText("SR 41.06")), + ]), + ], + ), + ), + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.only(top: 30.0, bottom: 40.0), + alignment: Alignment.center, + child: Text(TranslationBase.of(context).confirmAppo, + style: TextStyle(fontSize: 18.0, letterSpacing: 0.8)), + ), + Flex( + direction: Axis.horizontal, + children: [ + Expanded( + child: Container( + padding: EdgeInsets.only(left: 10.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + _getBulletPoint("1"), + Container( + child: Text( + "Please confirm the appointment to avoid the cancellation", + overflow: TextOverflow.fade, + style: TextStyle(fontSize: 13.0)), + ), + ], + ), + ), + ), + ], + ), + Flex( + direction: Axis.horizontal, + children: [ + Expanded( + child: Container( + padding: EdgeInsets.only(top: 20.0, left: 10.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + _getBulletPoint("2"), + Container( + width: MediaQuery.of(context).size.width * 0.8, + child: Text( + "The online payment process will be available 24 hours before the appointment.", + overflow: TextOverflow.clip, + style: TextStyle(fontSize: 13.0)), + ), + ], + ), + ), + ), + ], + ), + Container( + margin: EdgeInsets.fromLTRB(50.0, 20.0, 50.0, 20.0), + child: Image.asset( + "assets/images/new-design/payment-method.png"), + ), + Container( + alignment: Alignment.bottomCenter, + height: MediaQuery.of(context).size.height * 0.32, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width * 0.7, + height: 45.0, + child: RaisedButton( + color: new Color(0xFF60686b), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + }, + child: + Text(TranslationBase.of(context).confirm.toUpperCase(), style: TextStyle(fontSize: 18.0)), + ), + ), + ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width * 0.7, + height: 45.0, + child: RaisedButton( + color: new Color(0xFFc5272d), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + navigateToHome(context); + }, + child: + Text(TranslationBase.of(context).confirmLater.toUpperCase(), style: TextStyle(fontSize: 18.0)), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ); + } + + _getTextStyling() { + return TextStyle(fontSize: 14.0, color: Colors.white, letterSpacing: 0.7); + } + + _getBulletPoint(bulletPoint) { + return Container( + margin: EdgeInsets.only(left: 20.0, right: 20.0), + decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.black), + width: 20.0, + height: 20.0, + child: Center( + child: Text(bulletPoint, + style: TextStyle( + color: Colors.white, + fontSize: 12.0, + )), + ), + ); + } + + _getHeadingText(text) { + return Container( + padding: EdgeInsets.only(bottom: 10.0), + child: Text(text, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 26.0, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.white))); + } + + Future navigateToHome(context) async { + Navigator.popUntil( + context, ModalRoute.withName('/')); + } + + _getNormalText(text) { + return Container( + margin: EdgeInsets.only(top: 5.0), + padding: EdgeInsets.only(top: 5.0, bottom: 5.0), + child: Text(text, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.white)), + ); + } +} diff --git a/lib/pages/BookAppointment/BookingOptions.dart b/lib/pages/BookAppointment/BookingOptions.dart new file mode 100644 index 00000000..b6dc4c82 --- /dev/null +++ b/lib/pages/BookAppointment/BookingOptions.dart @@ -0,0 +1,51 @@ +import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/CardCommon.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; + +import '../../uitl/translations_delegate_base.dart'; + +class BookingOptions extends StatelessWidget { + @override + Widget build(BuildContext context) { + return AppScaffold( + // appBar: AppBar(title: Text(TranslationBase.of(context).bookAppo)) , + body: Container( + margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(TranslationBase.of(context).searchBy, + style: TextStyle( + fontSize: 24.0, + letterSpacing: 1.0, + fontWeight: FontWeight.bold, + color: new Color(0xFF60686b))), + Container( + margin: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: CardCommon( + image: + 'assets/images/new-design/search_by_clinic.png', + text: TranslationBase.of(context).clinic, + subText: TranslationBase.of(context).name), + ), + Expanded( + child: CardCommon( + image: + 'assets/images/new-design/search_by_doctor.png', + text: TranslationBase.of(context).doctor, + subText: TranslationBase.of(context).name), + ) + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart new file mode 100644 index 00000000..41479828 --- /dev/null +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -0,0 +1,181 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; +import 'package:rating_bar/rating_bar.dart'; + +import 'BookConfirm.dart'; +import 'components/DocAvailableAppointments.dart'; +import 'components/DocInfo.dart'; + +class DoctorProfile extends StatefulWidget { + @override + _DoctorProfileState createState() => _DoctorProfileState(); +} + +class _DoctorProfileState extends State + with SingleTickerProviderStateMixin { + TabController _tabController; + bool showFooterButton = false; + + @override + void initState() { + _tabController = new TabController(length: 2, vsync: this); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(TranslationBase.of(context).bookAppo), + actions: [ + IconButton( + icon: Icon( + Icons.today, + color: Colors.white, + ), + onPressed: () { + print('Login'); + }, + ) + ], + ), + bottomSheet: showFooterButton + ? Container( + width: MediaQuery.of(context).size.width, + height: 50.0, + margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), + child: ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width * 0.7, + height: 45.0, + child: RaisedButton( + color: new Color(0xFF60686b), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + navigateToBookConfirm(context); + }, + child: + Text(TranslationBase.of(context).bookNow, style: TextStyle(fontSize: 18.0)), + ), + ), + ) + : null, + body: Container( + color: new Color(0xFFf6f6f6), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + color: Colors.white, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(top: 20.0), + alignment: Alignment.center, + child: ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network( + "https://hmgwebservices.com/Images/MobileImages/OALAY/2477.png", + fit: BoxFit.fill, + height: 120.0, + width: 120.0), + ), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + alignment: Alignment.center, + child: Text("Dr. EYAD ISMAIL ABU-JAYAD", + style: TextStyle( + fontSize: 20.0, + color: Colors.grey[900], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + alignment: Alignment.center, + child: Text("INTERNAL MEDICINE CLINIC", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[900], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: RatingBar.readOnly( + initialRating: 4.0, + size: 35.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + ), + Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: Text("(2322 Reviews)", + style: TextStyle( + fontSize: 14.0, + color: Colors.blue[800], + letterSpacing: 1.0, + decoration: TextDecoration.underline, + )), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Divider( + color: Colors.grey[500], + ), + ), + TabBar( + onTap: (index) { + setState(() { + index == 1 + ? showFooterButton = true + : showFooterButton = false; + print(showFooterButton); + }); + }, + tabs: [ + Tab( + child: Text(TranslationBase.of(context).docInfo, + style: TextStyle(color: Colors.black))), + Tab( + child: Text(TranslationBase.of(context).availableAppo, + style: TextStyle(color: Colors.black)), + ) + ], + controller: _tabController, + ), + ], + ), + ), + Container( + height: MediaQuery.of(context).size.height * 0.68, + child: TabBarView( + physics: NeverScrollableScrollPhysics(), + children: [DoctorInformation(), DocAvailableAppointments()], + controller: _tabController, + ), + ), + ], + ), + ), + ), + ); + } + + Future navigateToBookConfirm(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => BookConfirm())); + } +} diff --git a/lib/pages/BookAppointment/Search.dart b/lib/pages/BookAppointment/Search.dart new file mode 100644 index 00000000..a83dee33 --- /dev/null +++ b/lib/pages/BookAppointment/Search.dart @@ -0,0 +1,40 @@ +import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByClinic.dart'; +import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByDoctor.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class Search extends StatefulWidget { + @override + _SearchState createState() => _SearchState(); +} + +class _SearchState extends State with SingleTickerProviderStateMixin { + TabController _tabController; + + @override + void initState() { + _tabController = new TabController(length: 2, vsync: this); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + bottom: TabBar( + tabs: [ + Tab(text: TranslationBase.of(context).clinicName), + Tab( + text: TranslationBase.of(context).doctorName, + ) + ], + controller: _tabController, + ), + title: Text(TranslationBase.of(context).bookAppo), + ), + body: TabBarView( + physics: NeverScrollableScrollPhysics(), + children: [SearchByClinic(), SearchByDoctor()], + controller: _tabController)); + } +} diff --git a/lib/pages/BookAppointment/SearchResults.dart b/lib/pages/BookAppointment/SearchResults.dart new file mode 100644 index 00000000..1fc356c5 --- /dev/null +++ b/lib/pages/BookAppointment/SearchResults.dart @@ -0,0 +1,27 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +import 'widgets/DoctorView.dart'; + +class SearchResults extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(TranslationBase.of(context).bookAppo), + ), + body: Container( + child: SingleChildScrollView( + child: Column( + children: [ + DoctorView(), + DoctorView(), + DoctorView(), + DoctorView(), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart new file mode 100644 index 00000000..851b6615 --- /dev/null +++ b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart @@ -0,0 +1,223 @@ +import 'dart:convert'; + +import 'package:diplomaticquarterapp/models/Appointments/FreeSlot.dart'; +import 'package:flutter/material.dart'; +import 'package:table_calendar/table_calendar.dart'; + +import '../../../uitl/date_uitl.dart'; + +class DocAvailableAppointments extends StatefulWidget { + @override + _DocAvailableAppointmentsState createState() => + _DocAvailableAppointmentsState(); +} + +class _DocAvailableAppointmentsState extends State + with TickerProviderStateMixin { + Map _events; + AnimationController _animationController; + CalendarController _calendarController; + + var selectedDate = ""; + var jsonFreeSlots; + + List docFreeSlots = []; + + @override + void initState() { + // TODO: implement initState + super.initState(); + final _selectedDay = DateTime.now(); + + this.selectedDate = DateUtil.getMonthDayYearDateFormatted(DateTime.now()); + + _events = { + _selectedDay: ['Event A0'] + }; + + _getJSONSlots().then((value) => { + setState(() => {_events.clear(), _events = value}) + }); + +// _selectedEvents = _events[_selectedDay] ?? []; + _calendarController = CalendarController(); + + _animationController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 400), + ); + + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + _calendarController.dispose(); + super.dispose(); + } + + void _onDaySelected(DateTime day, List events) { + print('CALLBACK: _onDaySelected'); + setState(() { +// _selectedEvents = events; + this.selectedDate = DateUtil.getMonthDayYearDateFormatted(day); + }); + } + + void _onVisibleDaysChanged( + DateTime first, DateTime last, CalendarFormat format) { + print('CALLBACK: _onVisibleDaysChanged'); + } + + void _onCalendarCreated( + DateTime first, DateTime last, CalendarFormat format) { + print('CALLBACK: _onCalendarCreated'); + } + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20.0) + ), + margin: EdgeInsets.all(20.0), + padding: EdgeInsets.only(bottom: 10.0, top: 10.0), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Text(selectedDate, + style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold)), + _buildTableCalendarWithBuilders(), + ], + ), + ), + ); + } + + Future> _getJSONSlots() async { + Map _eventsParsed; + List slotsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/freeSlots.json"); + jsonFreeSlots = json.decode(data.toString()); + for (var i = 0; i < 4000; i++) { + slotsList.add(FreeSlot( + DateUtil.convertStringToDate(jsonFreeSlots['FreeTimeSlots'][i]), + ['slot'])); + } + _eventsParsed = + Map.fromIterable(slotsList, key: (e) => e.slot, value: (e) => e.event); + return _eventsParsed; + } + + Widget _buildTableCalendarWithBuilders() { + return TableCalendar( + locale: 'en_US', + calendarController: _calendarController, + events: _events, +// holidays: _holidays, + initialCalendarFormat: CalendarFormat.month, + startDay: DateTime.now(), + formatAnimation: FormatAnimation.slide, + startingDayOfWeek: StartingDayOfWeek.sunday, + weekendDays: [DateTime.friday, DateTime.saturday], + availableGestures: AvailableGestures.horizontalSwipe, + availableCalendarFormats: const { + CalendarFormat.month: '', + CalendarFormat.week: '', + }, + calendarStyle: CalendarStyle( + outsideDaysVisible: false, + weekendStyle: TextStyle().copyWith(color: Colors.blue[800]), + holidayStyle: TextStyle().copyWith(color: Colors.blue[800]), + ), + daysOfWeekStyle: DaysOfWeekStyle( + weekendStyle: TextStyle().copyWith(color: Colors.blue[600]), + ), + headerStyle: HeaderStyle( + centerHeaderTitle: true, + formatButtonVisible: false, + ), + builders: CalendarBuilders( + selectedDayBuilder: (context, date, _) { + return FadeTransition( + opacity: Tween(begin: 0.0, end: 1.0).animate(_animationController), + child: Container( + margin: const EdgeInsets.all(4.0), + padding: const EdgeInsets.only(top: 5.0, left: 6.0), + color: Colors.transparent, + width: 0, + height: 0, + child: Text( + '${date.day}', + style: TextStyle().copyWith(fontSize: 16.0), + ), + ), + ); + }, + todayDayBuilder: (context, date, _) { + return Container( + margin: const EdgeInsets.all(4.0), + padding: const EdgeInsets.only(top: 5.0, left: 6.0), + color: Colors.amber[400], + width: 0, + height: 0, + child: Text( + '${date.day}', + style: TextStyle().copyWith(fontSize: 16.0), + ), + ); + }, + markersBuilder: (context, date, events, holidays) { + final children = []; + + if (events.isNotEmpty) { + children.add( + Positioned( + right: 4, + bottom: 4, + child: _buildEventsMarker(date, events), + ), + ); + } + + return children; + }, + ), + onDaySelected: (date, events) { + _onDaySelected(date, events); + _animationController.forward(from: 0.0); + }, + onVisibleDaysChanged: _onVisibleDaysChanged, + onCalendarCreated: _onCalendarCreated, + ); + } + + Widget _buildEventsMarker(DateTime date, List events) { + return Container( +// duration: const Duration(milliseconds: 10), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _calendarController.isSelected(date) + ? Colors.green[400] + : _calendarController.isToday(date) + ? Colors.brown[300] + : Colors.blue[400], + ), + width: 40.0, + height: 40.0, + child: Center( + child: Text( + '${date.day}', + style: TextStyle().copyWith( + color: Colors.white, + fontSize: 14.0, + ), + ), + ), + ); + } +} diff --git a/lib/pages/BookAppointment/components/DocInfo.dart b/lib/pages/BookAppointment/components/DocInfo.dart new file mode 100644 index 00000000..8416357b --- /dev/null +++ b/lib/pages/BookAppointment/components/DocInfo.dart @@ -0,0 +1,154 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class DoctorInformation extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), + child: Column( + children: [ + Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(15.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Image.asset( + "assets/images/new-design/doctor_information_icon.png"), + Container( + margin: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 0.0), + child: Text(TranslationBase.of(context).docInfo, + style: + TextStyle(fontSize: 16.0, letterSpacing: 0.8)), + ), + ], + ), + ), + Container( + padding: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 10.0), + child: Table( + children: [ + TableRow(children: [ + TableCell(child: _getHeadingText(TranslationBase.of(context).gender)), + TableCell(child: _getHeadingText(TranslationBase.of(context).nationality)), + ]), + TableRow(children: [ + TableCell(child: _getNormalText("Male")), + TableCell(child: _getNormalTextWithIcon("Palestinian")), + ]), + ], + ), + ), + Divider( + color: Colors.grey[400], + ), + Container( + margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _getHeadingText(TranslationBase.of(context).clinic), + _getNormalText("INTERNAL MEDICINE CLINIC") + ], + ), + ) + ], + ), + ), + Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(15.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Image.asset( + "assets/images/new-design/doctor_qualification_icon.png"), + Container( + margin: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 0.0), + child: Text(TranslationBase.of(context).docQualifications, + style: + TextStyle(fontSize: 16.0, letterSpacing: 0.8)), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _getHeadingText(TranslationBase.of(context).clinic), + _getNormalText("INTERNAL MEDICINE CLINIC") + ], + ), + ) + ], + ), + ), + ], + ), + ); + } + + _getHeadingText(text) { + return Text(text, + style: TextStyle( + fontSize: 13, + fontFamily: 'Open-Sans', + fontWeight: FontWeight.bold, + letterSpacing: 0.5, + color: Colors.grey[800])); + } + + _getNormalText(text) { + return Container( + margin: EdgeInsets.only(top: 5.0), + child: Text(text, + style: TextStyle( + fontSize: 13, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.grey[700])), + ); + } + + _getNormalTextWithIcon(text) { + return Container( + margin: EdgeInsets.only(top: 5.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text(text, + style: TextStyle( + fontSize: 13, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.grey[700])), + Container( + margin: EdgeInsets.only(left: 5.0, right: 5.0), + child: Image.network( + "https://hmgwebservices.com/Images/flag/PSE.png", + width: 18.0, + height: 18.0), + ), + ], + ), + ); + } +} diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart new file mode 100644 index 00000000..d09fde11 --- /dev/null +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -0,0 +1,113 @@ +import 'package:diplomaticquarterapp/models/Clinics/ClinicListResponse.dart'; +import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; +import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class SearchByClinic extends StatefulWidget { + @override + _SearchByClinicState createState() => _SearchByClinicState(); +} + +class _SearchByClinicState extends State { + bool nearestAppo = false; + String dropdownValue; + List clinicsList = []; + + @override + void initState() { + // TODO: implement initState + getClinicsList(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Checkbox( + activeColor: new Color(0xFFc5272d), + value: nearestAppo, + onChanged: (bool value) { + setState(() { + nearestAppo = value; + }); + }, + ), + Text(TranslationBase.of(context).nearestAppo, + style: TextStyle(fontSize: 16.0, letterSpacing: 0.9)), + ], + ), + Container( + height: 60.0, + decoration: BoxDecoration( + color: Colors.white, + border: Border.all( + color: Colors.grey[400], + width: 1.0, + ), + borderRadius: BorderRadius.circular(10), + ), + margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 20.0), + padding: EdgeInsets.all(10.0), + width: MediaQuery.of(context).size.width, + child: DropdownButtonHideUnderline( + child: DropdownButton( + hint: new Text("Select Clinic"), + value: dropdownValue, + items: clinicsList.map((item) { + return new DropdownMenuItem( + value: item.clinicID.toString(), + child: new Text(item.clinicDescription), + ); + }).toList(), + onChanged: (newValue) { + setState(() { + dropdownValue = newValue; + print(dropdownValue); + getDoctorsList(); + }); + }, + ), + )), + ], + ), + ); + } + + getClinicsList() { + ClinicListService service = new ClinicListService(); + service.getClinicsList().then((res) { + if (res['MessageStatus'] == 1) { + setState(() { + res['ListClinicCentralized'].forEach((v) { + clinicsList.add(new ListClinicCentralized.fromJson(v)); + }); + }); + } else {} + }).catchError((err) { + print(err); + }); + } + + getDoctorsList() { + DoctorsListService service = new DoctorsListService(); + service.getDoctorsList(int.parse(dropdownValue), 0).then((res) { + print(res['DoctorList']); +// if (res['MessageStatus'] == 1) { +// setState(() { +// res['ListClinicCentralized'].forEach((v) { +// clinicsList.add(new ListClinicCentralized.fromJson(v)); +// }); +// }); +// } else {} + }).catchError((err) { + print(err); + }); + } +} diff --git a/lib/pages/BookAppointment/components/SearchByDoctor.dart b/lib/pages/BookAppointment/components/SearchByDoctor.dart new file mode 100644 index 00000000..95ef0100 --- /dev/null +++ b/lib/pages/BookAppointment/components/SearchByDoctor.dart @@ -0,0 +1,116 @@ +import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +import '../SearchResults.dart'; + +class SearchByDoctor extends StatefulWidget { + @override + _SearchByDoctorState createState() => _SearchByDoctorState(); +} + +class _SearchByDoctorState extends State { + TextEditingController doctorNameController = new TextEditingController(); + bool _isButtonDisabled; + + @override + void initState() { + _isButtonDisabled = true; + } + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.only(top: 10.0, bottom: 15.0), + child: Text(TranslationBase.of(context).searchByDocText, + style: TextStyle(fontSize: 16.0, letterSpacing: 0.9)), + ), + Container( + decoration: BoxDecoration(color: Colors.white), + child: TextField( + controller: doctorNameController, + onChanged: (content) { + _onDocTextChanged(content); + }, + decoration: InputDecoration( + labelText: TranslationBase.of(context).enterDocName, + fillColor: Colors.white, + prefixIcon: Icon(Icons.search), + border: OutlineInputBorder())), + ), + Expanded( + child: Align( + alignment: FractionalOffset.bottomCenter, + child: _buildCounterButton(), + ), + ), + ], + ), + ); + } + + Widget _buildCounterButton() { + return new ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width, + height: 45.0, + child: RaisedButton( + color: new Color(0xFF60686b), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: _isButtonDisabled ? null : _searchDoctor, + child: Text(TranslationBase.of(context).search, + style: TextStyle(fontSize: 18.0)), + ), + ); + } + + getDoctorsList() { + DoctorsListService service = new DoctorsListService(); + service.getDoctorsListByName(doctorNameController.text).then((res) { + print(res['DoctorList']); + if (res['MessageStatus'] == 1) { +// setState(() { +// res['ListClinicCentralized'].forEach((v) { +// clinicsList.add(new ListClinicCentralized.fromJson(v)); +// }); +// }); + navigateToSearchResults(context); + } else {} + }).catchError((err) { + print(err); + }); + } + + _onDocTextChanged(content) { + print(content); + if (content.length >= 4) { + setState(() { + _isButtonDisabled = false; + }); + } else { + setState(() { + _isButtonDisabled = true; + }); + } + print(_isButtonDisabled); + } + + void _searchDoctor() { + getDoctorsList(); + } + + Future navigateToSearchResults(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => SearchResults())); + } +} diff --git a/lib/pages/BookAppointment/widgets/CardBottom.dart b/lib/pages/BookAppointment/widgets/CardBottom.dart new file mode 100644 index 00000000..e982d854 --- /dev/null +++ b/lib/pages/BookAppointment/widgets/CardBottom.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; + +class CardBottom extends StatelessWidget { + final backgroundImage; + final text; + final subtext; + + const CardBottom( + {@required this.backgroundImage, + @required this.text, + @required this.subtext}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () {}, + child: Container( + height: 110, + margin: EdgeInsets.all(4.0), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey[300], + blurRadius: 3.0, + spreadRadius: 0.0, +// offset: Offset(2.0), // shadow direction: bottom right + ) + ], + image: DecorationImage( + image: AssetImage(this.backgroundImage), fit: BoxFit.fill), + borderRadius: BorderRadius.circular(5)), + child: Column( + children: [ + Container( + margin: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 5.0), + child: null, + ), + Container( + width: MediaQuery.of(context).size.width * 0.48, + padding: EdgeInsets.fromLTRB(12.0, 0.0, 0.0, 0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(this.text, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + color: Colors.white, + fontSize: 16.0, + fontWeight: FontWeight.bold)), + Container( + padding: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 0.0), + child: Text(this.subtext, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle(color: Colors.white, fontSize: 12.0)), + ), + Container( + padding: EdgeInsets.fromLTRB(0.0, 25.0, 0.0, 0.0), + child: Text("View All", + overflow: TextOverflow.clip, + style: TextStyle( + color: Colors.white, + fontSize: 16.0, + fontWeight: FontWeight.bold)), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/BookAppointment/widgets/CardCommon.dart b/lib/pages/BookAppointment/widgets/CardCommon.dart new file mode 100644 index 00000000..2f05fa91 --- /dev/null +++ b/lib/pages/BookAppointment/widgets/CardCommon.dart @@ -0,0 +1,62 @@ +import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; +import 'package:flutter/material.dart'; + +class CardCommon extends StatelessWidget { + final image; + final text; + final subText; + + const CardCommon( + {@required this.image, @required this.text, @required this.subText}); + + @override + Widget build(BuildContext context) { + + return GestureDetector( + onTap: () { + navigateToSearch(context); + }, + child: Container( + margin: EdgeInsets.fromLTRB(9.0, 9.0, 9.0, 9.0), + decoration: BoxDecoration(boxShadow: [ + BoxShadow(color: Colors.grey[400], blurRadius: 2.0, spreadRadius: 0.0) + ], borderRadius: BorderRadius.circular(10), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0), + child: Text(this.text, + overflow: TextOverflow.clip, + style: TextStyle( + color: new Color(0xFFc5272d), + letterSpacing: 1.0, + fontSize: 20.0)), + ), + Container( + margin: EdgeInsets.fromLTRB(10.0, 0.0, 10.0, 0.0), + child: Text(this.subText, + overflow: TextOverflow.clip, + style: TextStyle( + color: Colors.black, + letterSpacing: 1.0, + fontSize: 15.0)), + ), + Container( + alignment: Alignment.bottomRight, + margin: EdgeInsets.fromLTRB(0.0, 0.0, 10.0, 8.0), + child: Image.asset(this.image, width: 60.0, height: 60.0), + ), + ], + ), + ), + ); + } + + Future navigateToSearch(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => Search())); + } + +} diff --git a/lib/pages/BookAppointment/widgets/CardHome.dart b/lib/pages/BookAppointment/widgets/CardHome.dart new file mode 100644 index 00000000..551c9cf4 --- /dev/null +++ b/lib/pages/BookAppointment/widgets/CardHome.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; + +class CardHome extends StatelessWidget { + final image; + final backgroundImage; + final text; + final textColor; + + const CardHome( + {@required this.image, + @required this.backgroundImage, + @required this.text, + @required this.textColor}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () {}, + child: Container( + height: 140.0, + margin: EdgeInsets.fromLTRB(9.0, 9.0, 8.0, 9.0), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey[400], + blurRadius: 2.0, + spreadRadius: 0.0 + ) + ], + image: DecorationImage( + image: AssetImage(this.backgroundImage), fit: BoxFit.fill), + borderRadius: BorderRadius.circular(5)), + child: Column( + children: [ + Container( + margin: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 5.0), + child: Image.asset(this.image, width: 60.0, height: 60.0), + ), + Container( + width: MediaQuery.of(context).size.width * 0.29, + padding: EdgeInsets.all(5.0), + child: Text(this.text, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + color: this.textColor, + fontSize: 15.0, + fontWeight: FontWeight.w500)), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart new file mode 100644 index 00000000..6c13c205 --- /dev/null +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -0,0 +1,98 @@ +import 'package:flutter/material.dart'; +import 'package:rating_bar/rating_bar.dart'; + +import '../DoctorProfile.dart'; + +class DoctorView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + navigateToDoctorProfile(context); + }, + child: Card( + margin: EdgeInsets.fromLTRB(20.0, 16.0, 20.0, 8.0), + color: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + child: Container( + decoration: BoxDecoration(), + padding: EdgeInsets.all(7.0), + width: MediaQuery.of(context).size.width, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network( + "https://hmgwebservices.com/Images/MobileImages/OALAY/2477.png", + fit: BoxFit.fill, + height: 60.0, + width: 60.0), + ), + Container( + width: MediaQuery.of(context).size.width * 0.6, + margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Dr. EYAD ISMAIL ABU-JAYAD", + style: TextStyle( + fontSize: 14.0, + color: Colors.grey[700], + letterSpacing: 1.0)), + Container( + margin: EdgeInsets.only(top: 3.0), + child: Text("INTERNAL MEDICINE CLINIC", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 3.0, bottom: 3.0), + child: Text("General Practioner", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisSize: MainAxisSize.max, + children: [ + RatingBar.readOnly( + initialRating: 4.0, + size: 20.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + Container( + child: Image.network( + "https://hmgwebservices.com/Images/flag/PSE.png", + width: 25.0, + height: 25.0), + ), + ], + ), + ], + ), + ), + ], + ), + ), + ), + ); + } + + Future navigateToDoctorProfile(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => DoctorProfile())); + } + +} diff --git a/lib/pages/BookAppointment/widgets/TopCard.dart b/lib/pages/BookAppointment/widgets/TopCard.dart new file mode 100644 index 00000000..2d5bef61 --- /dev/null +++ b/lib/pages/BookAppointment/widgets/TopCard.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class TopCard extends StatelessWidget { + TopCard({@required this.image, @required this.isSVG}); + + final String image; + final bool isSVG; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () {}, + child: Card( + margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), + color: Colors.white.withOpacity(0.3), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 100.0, + padding: EdgeInsets.all(7.0), + width: MediaQuery.of(context).size.width * 0.45, + child: this.isSVG + ? SvgPicture.asset(this.image) + : Image.asset(this.image), + ), + ), + ); + } +} diff --git a/lib/pages/MyAppointments/AppointmentDetails.dart b/lib/pages/MyAppointments/AppointmentDetails.dart new file mode 100644 index 00000000..ffb5f6be --- /dev/null +++ b/lib/pages/MyAppointments/AppointmentDetails.dart @@ -0,0 +1,139 @@ +import 'package:diplomaticquarterapp/pages/BookAppointment/components/DocAvailableAppointments.dart'; +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:rating_bar/rating_bar.dart'; +import 'Components/AppointmentActions.dart'; + + +class AppointmentDetails extends StatefulWidget { + @override + _AppointmentDetailsState createState() => _AppointmentDetailsState(); +} + +class _AppointmentDetailsState extends State with SingleTickerProviderStateMixin { + + TabController _tabController; + bool showFooterButton = false; + + @override + void initState() { + _tabController = new TabController(length: 2, vsync: this); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("Eyad Ismail Abu-Jayab"), + ), + body: Container( + color: new Color(0xFFf6f6f6), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + color: Colors.white, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(top: 20.0), + alignment: Alignment.center, + child: ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network( + "https://hmgwebservices.com/Images/MobileImages/OALAY/2477.png", + fit: BoxFit.fill, + height: 120.0, + width: 120.0), + ), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + alignment: Alignment.center, + child: Text("Dr. EYAD ISMAIL ABU-JAYAD", + style: TextStyle( + fontSize: 20.0, + color: Colors.grey[900], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + alignment: Alignment.center, + child: Text("INTERNAL MEDICINE CLINIC", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[900], + letterSpacing: 1.0)), + ), + Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: RatingBar.readOnly( + initialRating: 4.0, + size: 35.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + ), + Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: Text("(2322 Reviews)", + style: TextStyle( + fontSize: 14.0, + color: Colors.blue[800], + letterSpacing: 1.0, + decoration: TextDecoration.underline, + )), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Divider( + color: Colors.grey[500], + ), + ), + TabBar( + onTap: (index) { + setState(() { + index == 1 + ? showFooterButton = true + : showFooterButton = false; + print(showFooterButton); + }); + }, + tabs: [ + Tab( + child: Text(TranslationBase.of(context).appoActions, + style: TextStyle(color: Colors.black))), + Tab( + child: Text(TranslationBase.of(context).availableAppo, + style: TextStyle(color: Colors.black)), + ) + ], + controller: _tabController, + ), + ], + ), + ), + Container( + height: MediaQuery.of(context).size.height * 0.8, + child: TabBarView( + physics: NeverScrollableScrollPhysics(), + children: [AppointmentActions(), DocAvailableAppointments()], + controller: _tabController, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/MyAppointments/Components/AppointmentActions.dart b/lib/pages/MyAppointments/Components/AppointmentActions.dart new file mode 100644 index 00000000..16f50800 --- /dev/null +++ b/lib/pages/MyAppointments/Components/AppointmentActions.dart @@ -0,0 +1,272 @@ +import 'dart:convert'; + +import 'package:diplomaticquarterapp/models/Appointments/appoDetailsButtons.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentModel.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/models/BookedButtons.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class AppointmentActions extends StatefulWidget { + @override + _AppointmentActionsState createState() => _AppointmentActionsState(); +} + +class _AppointmentActionsState extends State { + List appoButtonsList = []; + var appointment = new AppointmentModel(); + + @override + void initState() { + appointment.PatientStatusType = 0; + appointment.IsOnlineCheckedIN = true; + + _getAppointmentActionButtons(); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + var size = MediaQuery.of(context).size; + final double itemHeight = ((size.height - kToolbarHeight - 24) * 0.42) / 2; + final double itemWidth = size.width / 2; + + return Container( + margin: EdgeInsets.all(5.0), + child: CustomScrollView( + primary: false, + physics: NeverScrollableScrollPhysics(), + slivers: [ + SliverPadding( + padding: const EdgeInsets.fromLTRB(15, 0, 15, 0), + sliver: SliverGrid.count( + crossAxisCount: 2, + childAspectRatio: (itemWidth / itemHeight), + children: appoButtonsList + .map((e) => GestureDetector( + onTap: () { + _handleButtonClicks(e); + }, + child: Container( + height: 100.0, + margin: EdgeInsets.all(9.0), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey[400], + blurRadius: 2.0, + spreadRadius: 0.0) + ], + borderRadius: BorderRadius.circular(10), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + margin: + EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0), + child: Text(e.title, + overflow: TextOverflow.clip, + style: TextStyle( + color: new Color(0xFFc5272d), + letterSpacing: 1.0, + fontSize: 20.0)), + ), + Container( + margin: + EdgeInsets.fromLTRB(10.0, 0.0, 10.0, 0.0), + child: Text(e.subtitle, + overflow: TextOverflow.clip, + style: TextStyle( + color: Colors.black, + letterSpacing: 1.0, + fontSize: 15.0)), + ), + Container( + alignment: Alignment.bottomRight, + margin: + EdgeInsets.fromLTRB(0.0, 20.0, 10.0, 8.0), + child: Image.asset(e.icon, + width: 40.0, height: 40.0), + ), + ], + ), + ), + )) + .toList(), + ), + ), + ], + ), + ); + } + + _handleButtonClicks(AppoDetailsButton) { + print(AppoDetailsButton.caller); + } + + _getAppointmentActionButtons() { + if (appointment != null) { + if (isConfirmed()) { + if (appointment.IsOnlineCheckedIN) { + _getConfirmedCheckInAppoActionsList(); + } else { + _getConfirmedAppoActionsList(); + } + } else { + print("isConfirmed Null"); + } + if (isBooked()) { + if (appointment.IsOnlineCheckedIN) { + _getBookedCheckInAppoActionsList(); + } else { + _getBookedAppoActionsList(); + } + } else { + print("isBooked Null"); + } + if (isArrived()) { + if (appointment.ClinicID == 17) { + _getArrivedInvoiceAppoActionsList(); + } else { + _getArrivedAppoActionsList(); + } + } else { + print("isArrived Null"); + } + } else { + print("Appo Null"); + } + } + + bool isConfirmed() { + return AppointmentType.isConfirmed(this.appointment); + } + + bool isArrived() { + return AppointmentType.isArrived(this.appointment); + } + + bool isCheckedIn() { + return this.appointment.IsOnlineCheckedIN; + } + + bool isBooked() { + return AppointmentType.isBooked(this.appointment); + } + + Future> _getBookedAppoActionsList() async { + print("_getBookedAppoActionsList"); + var bookButtonsJson; + List buttonsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/bookedButtons.json"); + bookButtonsJson = json.decode(data); + for (var i = 0; i < bookButtonsJson.length; i++) { + buttonsList.add(AppoDetailsButton( + title: bookButtonsJson[i]['title'], + subtitle: bookButtonsJson[i]['subtitle'], + icon: bookButtonsJson[i]['icon'], + caller: bookButtonsJson[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } + + Future> _getBookedCheckInAppoActionsList() async { +// BookedButtons.getContext(context); + print("_getBookedCheckInAppoActionsList"); + List buttonsList = []; + for (var i = 0; i < BookedButtons.buttons.length; i++) { + buttonsList.add(AppoDetailsButton( + title: BookedButtons.buttons[i]['title'], + subtitle: BookedButtons.buttons[i]['subtitle'], + icon: BookedButtons.buttons[i]['icon'], + caller: BookedButtons.buttons[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } + + Future> _getConfirmedAppoActionsList() async { + var bookButtonsJson; + List buttonsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/bookedButtons.json"); + bookButtonsJson = json.decode(data); + for (var i = 0; i < bookButtonsJson.length; i++) { + buttonsList.add(AppoDetailsButton( + title: bookButtonsJson[i]['title'], + subtitle: bookButtonsJson[i]['subtitle'], + icon: bookButtonsJson[i]['icon'], + caller: bookButtonsJson[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } + + Future> _getConfirmedCheckInAppoActionsList() async { + var bookButtonsJson; + List buttonsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/bookedButtons.json"); + bookButtonsJson = json.decode(data); + for (var i = 0; i < bookButtonsJson.length; i++) { + buttonsList.add(AppoDetailsButton( + title: bookButtonsJson[i]['title'], + subtitle: bookButtonsJson[i]['subtitle'], + icon: bookButtonsJson[i]['icon'], + caller: bookButtonsJson[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } + + Future> _getArrivedAppoActionsList() async { + var bookButtonsJson; + List buttonsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/bookedButtons.json"); + bookButtonsJson = json.decode(data); + for (var i = 0; i < bookButtonsJson.length; i++) { + buttonsList.add(AppoDetailsButton( + title: bookButtonsJson[i]['title'], + subtitle: bookButtonsJson[i]['subtitle'], + icon: bookButtonsJson[i]['icon'], + caller: bookButtonsJson[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } + + Future> _getArrivedInvoiceAppoActionsList() async { + var bookButtonsJson; + List buttonsList = []; + String data = await DefaultAssetBundle.of(context) + .loadString("assets/json/bookedButtons.json"); + bookButtonsJson = json.decode(data); + for (var i = 0; i < bookButtonsJson.length; i++) { + buttonsList.add(AppoDetailsButton( + title: bookButtonsJson[i]['title'], + subtitle: bookButtonsJson[i]['subtitle'], + icon: bookButtonsJson[i]['icon'], + caller: bookButtonsJson[i]['caller'], + )); + } + setState(() { + appoButtonsList = buttonsList; + }); + } +} diff --git a/lib/pages/MyAppointments/models/AppointmentModel.dart b/lib/pages/MyAppointments/models/AppointmentModel.dart new file mode 100644 index 00000000..304ae7ed --- /dev/null +++ b/lib/pages/MyAppointments/models/AppointmentModel.dart @@ -0,0 +1,84 @@ +//Appointment Model to be used in all the appointment based pages & components + +class AppointmentModel { + + static var SHARED_DATA = 'appointment-model'; + static var PATIENT_DATA = 'patient-model'; + var DoctorSpeciality = []; + + var List_HIS_GetContactLensPerscription = []; + var List_HIS_GetGlassPerscription = []; + var SetupID; + var ProjectID; + var AppointmentNo; + var AppointmentDate; + var AppointmentDateN; + var AppointmentType; + var BookDate; + var PatientType; + var PatientID; + var ClinicID; + var DoctorID; + var EndDate; + var StartTime; + var EndTime; + var Status; + var VisitType; + var VisitFor; + var PatientStatusType; + var CompanyID; + var BookedBy; + var BookedOn; + var ConfirmedBy; + var ConfirmedOn; + var ArrivalChangedBy; + var ArrivedOn; + var EditedBy; + var EditedOn; + var DoctorName; + var DoctorNameN; + var StatusDesc; + var StatusDescN; + var VitalStatus; + var VitalSignAppointmentNo; + var ClinicName; + var ComplainExists; + var DoctorImageURL; + var DoctorNameObj; + var DoctorRate; + var DoctorTitle; + var Gender; + var GenderDescription; + var IsActiveDoctor; + var IsActiveDoctorProfile; + var IsExecludeDoctor; + var IsMedicalReportRequested; + var ProjectName; + var QR; + var SMSButtonVisable; + var DoctorRatingDetailsList; + var AvgDoctorRatingList; + var IsLiveCareAppointment; + var OriginalClinicID; + var OriginalProjectID; + var StrAppointmentDate; + /* + the check in parameters + */ + // if onlince checked in mean user paid the appointment + var IsOnlineCheckedIN; + + // if user is allowed to pay for the appointment + var ISAllowOnlineCheckedIN; + + var PatientShare; + var CompanyName; + var PatientTaxAmount; + var PatientShareWithTax; + var IsFollowup; + var IsDoctorAllowVedioCall; + + static String getAppointmentTransID(appo) { + return appo.ProjectID + '-' + appo.ClinicID + '-' + appo.AppointmentNo; + } +} \ No newline at end of file diff --git a/lib/pages/MyAppointments/models/AppointmentType.dart b/lib/pages/MyAppointments/models/AppointmentType.dart new file mode 100644 index 00000000..2ac004f4 --- /dev/null +++ b/lib/pages/MyAppointments/models/AppointmentType.dart @@ -0,0 +1,40 @@ +class AppointmentType { + static var BOOKED = 0; + static const BOOKED_STR = 'booked'; + static var CONFIRMED = 42; + static const CONFIRMED_STR = 'confirmed'; + static var ARRIVED = 43; + static const ARRIVED_STR = 'arrived'; + + static bool isConfirmed(appo) { + return AppointmentType.isValid(appo) && + appo.PatientStatusType == AppointmentType.CONFIRMED; + } + + static bool isBooked(appo) { + return AppointmentType.isValid(appo) && + appo.PatientStatusType == AppointmentType.BOOKED; + } + + static bool isArrived(appo) { + return AppointmentType.isValid(appo) && + appo.PatientStatusType == AppointmentType.ARRIVED; + } + + static isValid(appo) { + return appo != null && appo.PatientStatusType != null; + } + + static int getType(typeName) { + switch (typeName) { + case AppointmentType.BOOKED_STR: + return AppointmentType.BOOKED; + case AppointmentType.ARRIVED_STR: + return AppointmentType.ARRIVED; + case AppointmentType.CONFIRMED_STR: + return AppointmentType.CONFIRMED; + default: + return AppointmentType.BOOKED; + } + } +} diff --git a/lib/pages/MyAppointments/models/BookedButtons.dart b/lib/pages/MyAppointments/models/BookedButtons.dart new file mode 100644 index 00000000..f10d0a09 --- /dev/null +++ b/lib/pages/MyAppointments/models/BookedButtons.dart @@ -0,0 +1,60 @@ +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; + +class BookedButtons { + static var context; + + static var buttons = [ + { + "title": TranslationBase.of(context).confirm, + "subtitle": TranslationBase.of(context).appointment, + "icon": "assets/images/new-design/confirm_icon.png", + "caller": "confirmAppointment" + }, +// { +// "title": "confirm", +// "subtitle": "Appointment", +// "icon": "assets/images/new-design/confirm_icon.png", +// "caller": "confirmAppointment" +// }, + { + "title": "reschedule", + "subtitle": "appointment", + "icon": "assets/images/new-design/reschedule_icon.png", + "caller": "openReschedule" + }, + { + "title": "cancel", + "subtitle": "appointment", + "icon": "assets/images/new-design/cancel_icon.png", + "caller": "onCancelAppointment" + }, + { + "title": "raise", + "subtitle": "complaint", + "icon": "assets/images/new-design/Complaint_icon.png", + "caller": "insertComplaint" + }, + { + "title": "add", + "subtitle": "reminder", + "icon": "assets/images/new-design/reminder_icon.png", + "caller": "addReminder" + }, + { + "title": "hospital", + "subtitle": "locations", + "icon": "assets/images/new-design/location_icon.png", + "caller": "navigateToProject" + }, + { + "title": "online", + "subtitle": "payment", + "icon": "assets/images/new-design/check-in.png", + "caller": "goToTodoList(31)" + } + ]; + + static setContext(context) { + BookedButtons.context = context; + } +} diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart new file mode 100644 index 00000000..85ce348d --- /dev/null +++ b/lib/pages/ToDoList/ToDo.dart @@ -0,0 +1,31 @@ +import 'package:diplomaticquarterapp/pages/ToDoList/widgets/upcomingCard.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; + +class ToDo extends StatefulWidget { + @override + _ToDoState createState() => _ToDoState(); +} + +class _ToDoState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(TranslationBase.of(context).todoList), + ), + body: SingleChildScrollView( + child: Container( + child: Column( + children: [ + TodoListCard(), + TodoListCard(), + TodoListCard(), + TodoListCard(), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/ToDoList/widgets/upcomingCard.dart b/lib/pages/ToDoList/widgets/upcomingCard.dart new file mode 100644 index 00000000..e6c7fa84 --- /dev/null +++ b/lib/pages/ToDoList/widgets/upcomingCard.dart @@ -0,0 +1,180 @@ +import 'package:diplomaticquarterapp/pages/MyAppointments/AppointmentDetails.dart'; +import 'package:flutter/material.dart'; +import 'package:rating_bar/rating_bar.dart'; + +class TodoListCard extends StatefulWidget { + @override + _TodoListCardState createState() => _TodoListCardState(); +} + +class _TodoListCardState extends State { + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(10.0), + child: Card( + margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), + color: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + child: Container( + width: MediaQuery.of(context).size.width, + padding: EdgeInsets.all(10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + children: [ + Image.asset("assets/images/new-design/time_icon.png", + width: 20.0, height: 20.0), + Container( + margin: EdgeInsets.only(left: 10.0, right: 30.0), + child: Text("Monday, 31 August 2020 09:30", + style: TextStyle(fontSize: 12.0)), + ), + Image.asset( + "assets/images/new-design/hospital_address_icon.png", + width: 20.0, + height: 20.0), + Container( + margin: EdgeInsets.only(left: 10.0, right: 10.0), + child: Text("Olaya Hospital", + style: TextStyle(fontSize: 12.0)), + ), + ], + ), + Container( + margin: EdgeInsets.only(top: 5.0), + child: Divider( + color: Colors.grey[500], + ), + ), + Flex( + direction: Axis.horizontal, + children: [ + Expanded( + flex: 1, + child: Container( + height: MediaQuery.of(context).size.height * 0.1, + margin: EdgeInsets.only(top: 5.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network( + "https://hmgwebservices.com/Images/MobileImages/OALAY/2477.png", + fit: BoxFit.fill), + ), + ), + ), + Expanded( + flex: 3, + child: Container( + margin: + EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Dr. EYAD ISMAIL ABU-JAYAD", + style: TextStyle( + fontSize: 14.0, + color: Colors.black, + fontWeight: FontWeight.bold, + letterSpacing: 1.0)), + Container( + margin: EdgeInsets.only(top: 3.0, bottom: 3.0), + child: Text("General Practioner", + style: TextStyle( + fontSize: 12.0, + color: Colors.grey[600], + letterSpacing: 1.0)), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisSize: MainAxisSize.max, + children: [ + RatingBar.readOnly( + initialRating: 4.0, + size: 20.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + ], + ), + ], + ), + ), + ), + Expanded( + flex: 1, + child: Container( +// height: MediaQuery.of(context).size.height * 0.12, + margin: EdgeInsets.only(top: 20.0), + child: Column( + children: [ + Image.asset( + "assets/images/new-design/confirm_button.png", + width: 50.0, + height: 50.0), + Container( + margin: EdgeInsets.only(top: 5.0), + child: Text("Confirm", + textAlign: TextAlign.center, + style: TextStyle(fontSize: 12.0)), + ) + ], + ), + ), + ) + ], + ), + Divider( + color: Colors.grey[500], + ), + Flex( + direction: Axis.horizontal, + children: [ + Expanded( + flex: 2, + child: Container( + child: Text( + "Please confirm the appointment to avoid cancellation", + style: TextStyle( + fontSize: 12.0, color: Colors.grey[700])), + ), + ), + Expanded( + flex: 1, + child: GestureDetector( + onTap: () { + navigateToAppointmentDetails(context); + }, + child: Container( + child: Text("More Details", + textAlign: TextAlign.end, + style: TextStyle( + fontSize: 12.0, + color: Colors.red[600], + decoration: TextDecoration.underline)), + ), + ), + ) + ], + ) + ], + ), + ), + ), + ); + } + + Future navigateToAppointmentDetails(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => AppointmentDetails())); + } + +} diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index 0c449410..d94251bd 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -4,6 +4,8 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart'; import '../base/base_view.dart'; @@ -15,24 +17,23 @@ class HomePage extends StatefulWidget { class _HomePageState extends State { @override Widget build(BuildContext context) { - return BaseView( - onModelReady: (model) => model.getHospitals(), - builder: (BuildContext context, HospitalViewModel model, Widget child) => + return BaseView( + // onModelReady: (model) => model.getMedicine(), + builder: (BuildContext context, PharmacyViewModel model, Widget child) => AppScaffold( baseViewModel: model, body: Column( children: [ InkWell( onTap: () { - model.getHospitals(); + model.getMedicine(); }, child: Container( - child: Texts('call api '), + child: Texts('call api'), ), - ), Expanded( - child: _getHospitals(model.hospitals), + child: _getHospitals(model.pharmacy), ) // BaseView( // onModelReady: (dctorViewModel) => dctorViewModel.getHospitals(), @@ -60,10 +61,10 @@ class _HomePageState extends State { ); } - Widget _getHospitals(List hospitals) => ListView.builder( - itemCount: hospitals.length, - itemBuilder: (BuildContext context, int index) => Container( - child: Texts(hospitals[index].name), - ), - ); + Widget _getHospitals(List hospitals) => ListView.builder( + itemCount: hospitals.length, + itemBuilder: (BuildContext context, int index) => Container( + child: Texts(hospitals[index].itemDes), + ), + ); } diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index b92804a5..50c32c78 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -1,4 +1,9 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/model/auth/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/pages/landing/replay_page.dart'; +import 'package:diplomaticquarterapp/providers/auth_provider.dart'; +import 'package:diplomaticquarterapp/pages/pharmacies/medicine_search_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_page.dart'; import 'package:diplomaticquarterapp/pages/medical/my_admissions_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -6,7 +11,7 @@ import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.da import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - +import 'package:firebase_messaging/firebase_messaging.dart'; import 'home_page.dart'; class LandingPage extends StatefulWidget { @@ -17,7 +22,8 @@ class LandingPage extends StatefulWidget { class _LandingPageState extends State { int currentTab = 0; PageController pageController; - + final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); + final authService = new AuthProvider(); _changeCurrentTab(int tab) { setState(() { currentTab = tab; @@ -29,6 +35,14 @@ class _LandingPageState extends State { void initState() { super.initState(); pageController = PageController(keepPage: true); + _firebaseMessaging.getToken().then((String token) { + sharedPref.setString(PUSH_TOKEN, token); + if (token != null) { + checkUserStatus(token); + } + + //assert(token != null); + }); } @override @@ -57,7 +71,7 @@ class _LandingPageState extends State { body: PageView( physics: NeverScrollableScrollPhysics(), controller: pageController, - children: [HomePage(), ReplayPage(), MedicalPage(), MyAdmissionsPage()], + children: [HomePage(), MedicineSearch(), MedicalPage(), MyAdmissionsPage()], ), bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab), ); @@ -68,11 +82,19 @@ class _LandingPageState extends State { case 0: return TranslationBase.of(context).home; case 1: - return 'asd'; + return 'Search Medicine'; case 2: return TranslationBase.of(context).mySchedule; case 3: return TranslationBase.of(context).services; + case 4: + return TranslationBase.of(context).bookAppo; } } + + void checkUserStatus(token) { + authService + .selectDeviceImei(token) + .then((SelectDeviceIMEIRES value) => print(value)); + } } diff --git a/lib/pages/login/forgot-password.dart b/lib/pages/login/forgot-password.dart new file mode 100644 index 00000000..c1fa7b18 --- /dev/null +++ b/lib/pages/login/forgot-password.dart @@ -0,0 +1,95 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class ForgotPassword extends StatefulWidget { + @override + _ForgotPassword createState() => _ForgotPassword(); +} + +class _ForgotPassword extends State { + String selectedType = 'Saudi Arabia'; + final TextEditingController nationalIDorFile = null; + final TextEditingController mobileNo = null; + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).forgotPassword, + isShowAppBar: true, + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: 10, left: 20, right: 20), + height: SizeConfig.realScreenHeight * .8, + width: SizeConfig.realScreenWidth, + child: Column(children: [ + Expanded( + flex: 1, + child: AppText( + TranslationBase.of(context).forgotDesc, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.left, + )), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + // add Expanded to have your dropdown button fill remaining space + child: DropdownButtonHideUnderline( + child: DropdownButton( + isExpanded: true, + value: selectedType, + iconSize: 40, + elevation: 16, + onChanged: (String newValue) => { + setState(() { + selectedType = newValue; + }) + }, + items: [ + 'Saudi Arabia', + 'Dubai', + ].map>( + (String value) { + return DropdownMenuItem( + value: value, + child: Text(value), + ); + }).toList()))), + ], + ), + MobileNo(controller: mobileNo), + ], + ), + ), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: RaisedButton( + color: Colors.grey, + textColor: Colors.white, + child: Text(TranslationBase.of(context).submit), + onPressed: () => {}, + )) + ], + ), + ], + )) + ]), + ))); + } +} diff --git a/lib/pages/login/login-type.dart b/lib/pages/login/login-type.dart new file mode 100644 index 00000000..c0697099 --- /dev/null +++ b/lib/pages/login/login-type.dart @@ -0,0 +1,162 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/routes.dart'; + +class LoginType extends StatelessWidget { + static int loginType = 0; + + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).welcome, + isShowAppBar: true, + body: Padding( + padding: EdgeInsets.all(20), + child: Column( + children: [ + Expanded( + flex: 4, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Image.asset( + 'assets/images/habib-logo.png', + height: 80, + width: 80, + ), + AppText( + TranslationBase.of(context).logintypeRadio, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.left, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: InkWell( + onTap: () => { + LoginType.loginType = 1, + Navigator.of(context) + .pushNamed(LOGIN_PAGE) + }, + child: RoundedContainer( + borderColor: Colors.grey, + showBorder: true, + child: Padding( + padding: EdgeInsets.fromLTRB( + 20, 10, 20, 10), + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/id_card_icon.png', + height: SizeConfig + .imageSizeMultiplier * + 12, + width: SizeConfig + .imageSizeMultiplier * + 15, + ), + SizedBox( + height: 20, + ), + AppText( + TranslationBase.of(context) + .nationalID, + fontSize: + SizeConfig.textMultiplier * + 2, + ) + ], + ), + )))), + Expanded( + child: InkWell( + onTap: () => { + LoginType.loginType = 2, + Navigator.of(context) + .pushNamed(LOGIN_PAGE) + }, + child: RoundedContainer( + borderColor: Colors.grey, + showBorder: true, + child: Padding( + padding: EdgeInsets.fromLTRB( + 25, 10, 25, 10), + child: Column( + children: [ + Image.asset( + 'assets/images/my_file_white_icon.png', + height: SizeConfig + .imageSizeMultiplier * + 12, + width: SizeConfig + .imageSizeMultiplier * + 15, + ), + SizedBox( + height: 20, + ), + AppText( + TranslationBase.of(context) + .fileNo, + fontSize: + SizeConfig.textMultiplier * + 2, + ) + ], + ), + )))) + ], + ), + Divider( + color: Colors.grey, + height: 2, + ), + Center( + child: InkWell( + onTap: () => { + Navigator.of(context) + .pushNamed(FORGOT_PASSWORD) + }, + child: AppText( + TranslationBase.of(context).forgotPassword, + fontSize: SizeConfig.textMultiplier * 3, + margin: 10, + underline: true))) + ]), + ), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: RaisedButton( + color: Colors.grey, + textColor: Colors.white, + child: + Text(TranslationBase.of(context).registerNow), + onPressed: () => { + Navigator.of(context).pushNamed( + REGISTER, + ) + }, + )) + ], + ), + ], + )) + ], + ))); + } +} diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart new file mode 100644 index 00000000..7bb61da5 --- /dev/null +++ b/lib/pages/login/login.dart @@ -0,0 +1,163 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/model/auth/check_paitent_authentication_req.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/pages/login/login-type.dart'; +import 'package:diplomaticquarterapp/providers/auth_provider.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/utils.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; +import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class Login extends StatefulWidget { + @override + _Login createState() => _Login(); +} + +class _Login extends State { + final util = Utils(); + final nationalIDorFile = TextEditingController(); + final int loginType = LoginType.loginType; + String mobileNo; + String countryCode = '966'; + bool isButtonDisabled = true; + final authService = new AuthProvider(); + var sharedPref = new AppSharedPreferences(); + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).login, + isShowAppBar: true, + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: 10, left: 20, right: 20), + height: SizeConfig.realScreenHeight * .8, + width: SizeConfig.realScreenWidth, + child: Column(children: [ + Expanded( + flex: 1, + child: AppText( + TranslationBase.of(context).enterNationalId, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.left, + )), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + MobileNo( + onNumberChange: (value) => + {mobileNo = value, validateForm()}, + onCountryChange: (value) => countryCode = value), + Container( + child: TextFields( + controller: nationalIDorFile, + onChanged: (value) => {validateForm()}, + prefixIcon: Icon( + loginType == 1 + ? Icons.chrome_reader_mode + : Icons.receipt, + color: Colors.red), + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + hintText: loginType == 1 + ? TranslationBase.of(context).nationalID + : TranslationBase.of(context).fileNo, + )) + ], + ), + ), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: RaisedButton( + color: isButtonDisabled == true + ? Colors.grey + : Colors.grey[600], + textColor: Colors.white, + child: Text(TranslationBase.of(context).login), + onPressed: () => {this.startLogin()}, + )) + ], + ), + ], + )) + ]), + ))); + } + + startLogin() { + if (isButtonDisabled == false) { + checkUserAuthentication(); + } + } + + void validateForm() { + if (validateIDBox(nationalIDorFile.text) == true && + mobileNo != null && + util.isSAUDIIDValid(nationalIDorFile.text) == true) { + setState(() { + isButtonDisabled = false; + }); + } else { + setState(() { + isButtonDisabled = true; + }); + } + } + + bool validateIDBox(String value) { + Pattern pattern = loginIDPattern(); //r'^\d+(?:\.\d+)?$'; + + RegExp regex = new RegExp(pattern); + return regex.hasMatch(value); + } + + String loginIDPattern() { + var length = loginType == 1 ? 10 : 7; + return "([0-9]{" + length.toString() + "})"; + } + + checkUserAuthentication() { + var request = CheckPatientAuthenticationReq(); + request.isRegister = false; + request.patientMobileNumber = int.parse(mobileNo); + request.zipCode = countryCode; + request.searchType = this.loginType; + request.deviceTypeID = this.loginType; + if (this.loginType == 1) { + request.patientIdentificationID = this.nationalIDorFile.text; + request.patientID = 0; + } else { + request.patientIdentificationID = ''; + request.patientID = int.parse(nationalIDorFile.text); + } + sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); + authService.checkPatientAuthentication(request).then((value) => { + if (value.isSMSSent) + { + sharedPref.setString(LOGIN_TOKEN_ID, value.LogInTokenID), + sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), + } + else + { + if (value.IsAuthenticated) {this.checkActivationCode()} + } + }); + } + + checkActivationCode() {} +} diff --git a/lib/pages/login/register.dart b/lib/pages/login/register.dart new file mode 100644 index 00000000..6c58ba72 --- /dev/null +++ b/lib/pages/login/register.dart @@ -0,0 +1,139 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/pages/login/login-type.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; +import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class Register extends StatefulWidget { + @override + _Register createState() => _Register(); +} + +class _Register extends State { + final TextEditingController nationalIDorFile = null; + final int loginType = LoginType.loginType; + final TextEditingController mobileNo = null; + var isHijri; + + DateTime selectedDate; + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).login, + isShowAppBar: true, + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: 10, left: 20, right: 20), + height: SizeConfig.realScreenHeight * .8, + width: SizeConfig.realScreenWidth, + child: Column(children: [ + Expanded( + flex: 1, + child: AppText( + TranslationBase.of(context).enterNationalId, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.left, + )), + Expanded( + flex: 4, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + MobileNo(controller: mobileNo), + Container( + child: TextFields( + controller: nationalIDorFile, + prefixIcon: + Icon(Icons.chrome_reader_mode, color: Colors.red), + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + hintText: TranslationBase.of(context).nationalID, + )), + Row( + children: [ + Expanded( + child: Row( + children: [ + Radio( + value: 1, + groupValue: isHijri, + onChanged: (value) { + setState(() { + isHijri = value; + }); + }, + ), + Text(TranslationBase.of(context).hijriDate), + ], + ), + ), + Expanded( + child: Row( + children: [ + Radio( + value: 0, + groupValue: isHijri, + onChanged: (value) { + setState(() { + isHijri = value; + }); + }, + ), + Text(TranslationBase.of(context).gregorianDate), + ], + ), + ), + ], + ), + Row(children: [ + Expanded( + child: RaisedButton.icon( + onPressed: () => {_selectDate(context)}, + icon: Icon(Icons.date_range), + label: Text(selectedDate != null + ? "${selectedDate.toLocal()}".split(' ')[0] + : TranslationBase.of(context).dob))) + ]) + ], + ), + ), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: RaisedButton( + color: Colors.grey, + textColor: Colors.white, + child: Text(TranslationBase.of(context).login), + onPressed: () => {}, + )) + ], + ), + ], + )) + ]), + ))); + } + + Future _selectDate(BuildContext context) async { + final DateTime picked = await showDatePicker( + context: context, + initialDate: DateTime.now(), + firstDate: DateTime(2015, 8), + lastDate: DateTime(2101)); + if (picked != null && picked != selectedDate) + setState(() { + selectedDate = picked; + }); + } +} diff --git a/lib/pages/login/welcome.dart b/lib/pages/login/welcome.dart new file mode 100644 index 00000000..978ff449 --- /dev/null +++ b/lib/pages/login/welcome.dart @@ -0,0 +1,85 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/routes.dart'; + +class WelcomeLogin extends StatelessWidget { + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).welcome, + isShowAppBar: true, + body: Padding( + padding: EdgeInsets.all(20), + child: Column( + children: [ + Expanded( + flex: 3, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Image.asset( + 'assets/images/habib-logo.png', + height: 80, + width: 80, + ), + Text( + TranslationBase.of(context).welcome, + style: TextStyle(fontSize: 30), + textAlign: TextAlign.left, + ), + Text( + TranslationBase.of(context).welcomeText, + style: TextStyle(fontSize: 24), + textAlign: TextAlign.left, + ), + Text( + TranslationBase.of(context).welcomeText2, + style: TextStyle(fontSize: 24), + textAlign: TextAlign.left, + ) + ]), + ), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: RaisedButton( + color: Colors.red[900], + textColor: Colors.white, + child: Text(TranslationBase.of(context).yes), + onPressed: () => { + Navigator.of(context).pushNamed( + LOGIN_TYPE, + ) + }, + )) + ], + ), + Row( + children: [ + Expanded( + child: RaisedButton( + child: Text(TranslationBase.of(context).no), + onPressed: () => { + Navigator.of(context).pushNamed( + REGISTER, + ) + }, + )) + ], + ), + ], + )) + ], + ))); + } +} diff --git a/lib/pages/pharmacies/medicine_search_screen.dart b/lib/pages/pharmacies/medicine_search_screen.dart new file mode 100644 index 00000000..200a7838 --- /dev/null +++ b/lib/pages/pharmacies/medicine_search_screen.dart @@ -0,0 +1,145 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/utils.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart'; +import '../base/base_view.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/BottomButton.dart'; +import 'package:diplomaticquarterapp/widgets/pharmacy/drug_item.dart'; +import '../../locator.dart'; +import 'package:diplomaticquarterapp/core/service/pharmacies_service.dart'; +import 'package:diplomaticquarterapp/pages/pharmacies/pharmacies_list_screen.dart'; + +class MedicineSearch extends StatefulWidget { + @override + _MedicineSearchState createState() => _MedicineSearchState(); +} + +class _MedicineSearchState extends State { + final textController = TextEditingController(); + final _formKey = GlobalKey(); + @override + Widget build(BuildContext context) { + return BaseView( + builder: (BuildContext context, PharmacyViewModel model, Widget child) => + AppScaffold( + baseViewModel: model, + appBarTitle: 'Search Medicine', + body: Column( + children: [ + Padding( + padding: EdgeInsets.only( + bottom: SizeConfig.heightMultiplier * 1, + right: SizeConfig.heightMultiplier * 2.5, + top: SizeConfig.heightMultiplier * 4, + left: SizeConfig.heightMultiplier * 2.5, + ), + child: Form( + key: _formKey, + child: TextFields( + hintText: 'Search Medicine here ', + inputAction: TextInputAction.search, + onSaved: (value) {}, + onSubmit: (value) { + searchMedicine(model); + }, + controller: textController, + validator: (value) { + if (value.isEmpty) { + return 'please enter medicine name'; + } + return null; + }, + ), + ), + ), + Container( + margin: EdgeInsets.only( + bottom: SizeConfig.heightMultiplier * 0.0, + right: SizeConfig.heightMultiplier * 5, + top: SizeConfig.heightMultiplier * 1, + left: SizeConfig.heightMultiplier * 5, + ), + child: Wrap( + children: [ + Container( + child: Button( + loading: model.state == ViewState.BusyLocal, + label: 'Search', + onTap: () { + searchMedicine(model); + }), + width: 350.0, + ), + ], + ), + ), + Container( + margin: + EdgeInsets.only(left: SizeConfig.heightMultiplier * 2), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + 'You Can Find ' + + '${model.pharmacy == null ? '0' : model.pharmacy.length.toString()}' + ' Item In Search ', + ), + ], + ), + ), + if (model.state == ViewState.ErrorLocal) + Container( + child: Texts(model.error), + ), + Expanded( + child: Container( + width: SizeConfig.screenWidth * 0.85, + //child: _getHospitals(model.pharmacy), + child: ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: model.pharmacy == null + ? 0 + : model.pharmacy.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: model.pharmacy[index].itemDes, + url: model.pharmacy[index].productImage), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PharmaciesList()), + ); + }, + ); + }), + ), + ) + ], + )), + ); + } + + searchMedicine(PharmacyViewModel model) { + Utils.hideKeyboard(context); + if (_formKey.currentState.validate()) + model.getMedicine2(name: textController.text); + } + + Widget _getHospitals(List hospitals) => ListView.builder( + itemCount: hospitals.length, + itemBuilder: (BuildContext context, int index) => Container( + child: Texts(hospitals[index].itemDes), + ), + ); +} diff --git a/lib/pages/pharmacies/pharmacies_list_screen.dart b/lib/pages/pharmacies/pharmacies_list_screen.dart new file mode 100644 index 00000000..8a43af56 --- /dev/null +++ b/lib/pages/pharmacies/pharmacies_list_screen.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:flutter/cupertino.dart'; +import '../base/base_view.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; +import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart'; +import 'dart:typed_data'; +import 'dart:convert'; + +import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart'; +import 'package:map_launcher/map_launcher.dart'; + +class PharmaciesList extends StatefulWidget { + String medicineID; + int url; + + PharmaciesList({this.url, this.medicineID}); + + @override + _PharmaciesListState createState() => _PharmaciesListState(); + +// +} + +class _PharmaciesListState extends State { + @override + Widget build(BuildContext context) { + return BaseView( + //onModelReady: (model) => model.getMedicine(), + builder: (BuildContext context, PharmacyViewModel model, Widget child) => + AppScaffold( + appBarTitle: 'Pharmacies List', + body: !model.isFinished + ? AppCircularProgressIndicator() + : model.hasError + ? Center( + child: Text( + model.errorMsg, + style: TextStyle(color: Colors.red), + ), + ) + : Container( + height: SizeConfig.screenHeight, + child: ListView( + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: AlwaysScrollableScrollPhysics(), + children: [ + RoundedContainer( + child: Row( + children: [ + Expanded( + flex: 1, + child: ClipRRect( + borderRadius: BorderRadius.all( + Radius.circular(7), + ), + child: Image.memory( + dataFromBase64String( + widget.url.toString()), + height: + SizeConfig.imageSizeMultiplier * 19, + width: + SizeConfig.imageSizeMultiplier * 18, + fit: BoxFit.cover, + ), + ), + ), + Expanded( + flex: 3, + child: Column( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.stretch, + children: [], + ), + ) + ], + )) + ], + ), + )), + ); + } + + Image imageFromBase64String(String base64String) { + return Image.memory(base64Decode(base64String)); + } + + Uint8List dataFromBase64String(String base64String) { + return base64Decode(base64String); + } + + String base64String(Uint8List data) { + return base64Encode(data); + } +} diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart new file mode 100644 index 00000000..3590355b --- /dev/null +++ b/lib/providers/auth_provider.dart @@ -0,0 +1,124 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/model/auth/check_paitent_authentication_req.dart'; +import 'package:diplomaticquarterapp/core/model/auth/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/cupertino.dart'; + +// SharedPreferences sharedPref = new SharedPreferences(); +enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } +AppSharedPreferences sharedPref = new AppSharedPreferences(); + +const String INSERT_DEVICE_IMEI = '/Patients.svc/REST/Patient_INSERTDeviceIMEI'; +const String SELECT_DEVICE_IMEI = + '/Patients.svc/REST/Patient_SELECTDeviceIMEIbyIMEI'; +const String CHECK_PATIENT_AUTH = + '/Authentication.svc/REST/CheckPatientAuthentication'; + +class AuthProvider with ChangeNotifier { + bool isLogin = false; + bool isLoading = true; + AuthProvider() { + getUserAuthentication(); + } + + void getUserAuthentication() async { + Map profile = await sharedPref.getObject(USER_PROFILE); + if (profile != null) { + isLoading = false; + isLogin = true; + } else { + isLoading = false; + isLogin = false; + } + notifyListeners(); + } + + APP_STATUS get stutas { + if (isLoading) { + return APP_STATUS.LOADING; + } else { + if (this.isLogin) { + return APP_STATUS.AUTHENTICATED; + } else { + return APP_STATUS.UNAUTHENTICATED; + } + } + } + + // Future login(UserModel userInfo) async { + // try { + // dynamic localRes; + + // await BaseAppClient.post(LOGIN_URL, + // onSuccess: (dynamic response, int statusCode) { + // localRes = response; + // }, onFailure: (String error, int statusCode) { + // throw error; + // }, body: userInfo.toJson()); + + // return Future.value(localRes); + // } catch (error) { + // print(error); + // throw error; + // } + // } + + Future insertDeviceImei(imei) async { + try { + dynamic localRes; + + await new BaseAppClient().post(INSERT_DEVICE_IMEI, + onSuccess: (dynamic response, int statusCode) { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: imei); + return Future.value(localRes); + } catch (error) { + print(error); + throw error; + } + } + + Future selectDeviceImei(imei) async { + try { + dynamic localRes; + await new BaseAppClient().post(SELECT_DEVICE_IMEI, + onSuccess: (dynamic response, int statusCode) { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: imei); + return Future.value(localRes); + } catch (error) { + print(error); + throw error; + } + } + + Future checkPatientAuthentication( + CheckPatientAuthenticationReq request) async { + request.versionID = VERSION_ID; + request.channel = CHANNEL; + request.iPAdress = IP_ADDRESS; + request.generalid = GENERAL_ID; + request.languageID = 2; + request.patientOutSA = request.zipCode == '966' ? 0 : 1; + try { + dynamic localRes; + await new BaseAppClient().post(CHECK_PATIENT_AUTH, + onSuccess: (dynamic response, int statusCode) { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request.toJson()); + return Future.value(localRes); + } catch (error) { + print(error); + throw error; + } + } +} diff --git a/lib/routes.dart b/lib/routes.dart new file mode 100644 index 00000000..8b3d1d4b --- /dev/null +++ b/lib/routes.dart @@ -0,0 +1,25 @@ +import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; +import 'package:diplomaticquarterapp/pages/login/forgot-password.dart'; +import 'package:diplomaticquarterapp/pages/login/welcome.dart'; +import 'package:diplomaticquarterapp/pages/login/login-type.dart'; +import 'package:diplomaticquarterapp/pages/login/login.dart'; +import 'package:diplomaticquarterapp/pages/login/register.dart'; + +const String INIT_ROUTE = '/'; +const String ROOT = 'root'; +const String HOME = '/'; +const String LOGIN = 'login'; +const String WELCOME_LOGIN = 'welcome-login'; +const String LOGIN_TYPE = 'login-type'; +const String LOGIN_PAGE = 'login-page'; +const String FORGOT_PASSWORD = 'forgot-password'; +const String REGISTER = 'register'; +var routes = { + // ROOT: (_) => RootPage(), + HOME: (_) => LandingPage(), + WELCOME_LOGIN: (_) => WelcomeLogin(), + LOGIN_TYPE: (_) => LoginType(), + LOGIN_PAGE: (_) => Login(), + FORGOT_PASSWORD: (_) => ForgotPassword(), + REGISTER: (_) => Register() +}; diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart new file mode 100644 index 00000000..c477ed3c --- /dev/null +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -0,0 +1,88 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/base_service.dart'; +import 'package:diplomaticquarterapp/models/Request.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; + +class DoctorsListService extends BaseService{ + AppSharedPreferences sharedPref = AppSharedPreferences(); + AppGlobal appGlobal = new AppGlobal(); + + Future getDoctorsList(int clinicID, int projectID) async { + Map request; + var languageID = await sharedPref.getString(APP_LANGUAGE); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": 0, + "TokenID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null, + "ClinicID": 21, + "ProjectID": 0, + "ContinueDentalPlan": false, + "IsSearchAppointmnetByClinicID": true, + "PatientID": 0, + "gender": 0, + "age": 0, + "IsGetNearAppointment": false, + "Latitude": 0, + "Longitude": 0, + "License": true + }; + + dynamic localRes; + + await baseAppClient.post(GET_DOCTORS_LIST_URL, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + + Future getDoctorsListByName(String docName) async { + Map request; + var languageID = await sharedPref.getString(APP_LANGUAGE); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": 0, + "TokenID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null, + "ClinicID": 0, + "ProjectID": 0, + "ContinueDentalPlan": false, + "IsSearchAppointmnetByClinicID": false, + "DoctorName": docName, + "PatientID": 0, + "gender": 0, + "age": 0, + "IsGetNearAppointment": false, + "Latitude": 0, + "Longitude": 0, + "License": true + }; + + dynamic localRes; + + await baseAppClient.post(GET_DOCTORS_LIST_URL, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + +} diff --git a/lib/services/clinic_services/get_clinic_service.dart b/lib/services/clinic_services/get_clinic_service.dart new file mode 100644 index 00000000..b9a023f0 --- /dev/null +++ b/lib/services/clinic_services/get_clinic_service.dart @@ -0,0 +1,38 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/base_service.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/models/Request.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; + +class ClinicListService extends BaseService { + AppSharedPreferences sharedPref = AppSharedPreferences(); + AppGlobal appGlobal = new AppGlobal(); + + Future getClinicsList() async { + Map request; + var languageID = await sharedPref.getString(APP_LANGUAGE); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": 0, + "TokenID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null + }; + + dynamic localRes; + + await baseAppClient.post(GET_CLINICS_LIST_URL, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } +} diff --git a/lib/uitl/date_uitl.dart b/lib/uitl/date_uitl.dart index db735892..c70e05b7 100644 --- a/lib/uitl/date_uitl.dart +++ b/lib/uitl/date_uitl.dart @@ -99,7 +99,7 @@ class DateUtil { return getMonth(dateTime.month) + " " + dateTime.day.toString() + - "," + + ", " + dateTime.year.toString(); else return ""; diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index f9630b6d..26d30363 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -38,7 +38,94 @@ class TranslationBase { String get logout => localizedValues['logout'][locale.languageCode]; + String get bookAppo => localizedValues['bookAppo'][locale.languageCode]; + String get searchBy => localizedValues['searchBy'][locale.languageCode]; + + String get clinic => localizedValues['clinic'][locale.languageCode]; + + String get name => localizedValues['name'][locale.languageCode]; + + String get doctor => localizedValues['doctor'][locale.languageCode]; + + String get clinicName => localizedValues['clinicName'][locale.languageCode]; + + String get doctorName => localizedValues['doctorName'][locale.languageCode]; + + String get nearestAppo => localizedValues['nearestAppo'][locale.languageCode]; + + String get searchByDocText => localizedValues['searchByDocText'][locale.languageCode]; + + String get enterDocName => localizedValues['enterDocName'][locale.languageCode]; + + String get search => localizedValues['search'][locale.languageCode]; + + String get bookNow => localizedValues['bookNow'][locale.languageCode]; + + String get docInfo => localizedValues['docInfo'][locale.languageCode]; + + String get appoInfo => localizedValues['appoInfo'][locale.languageCode]; + + String get availableAppo => localizedValues['availableAppo'][locale.languageCode]; + + String get gender => localizedValues['gender'][locale.languageCode]; + + String get nationality => localizedValues['nationality'][locale.languageCode]; + + String get docQualifications => localizedValues['docQualifications'][locale.languageCode]; + + String get confirmAppoHeading => localizedValues['confirmAppoHeading'][locale.languageCode]; + + String get patientInfo => localizedValues['patientInfo'][locale.languageCode]; + + String get bookSuccess => localizedValues['bookSuccess'][locale.languageCode]; + + String get patientShare => localizedValues['patientShare'][locale.languageCode]; + + String get patientShareWithTax => localizedValues['patientShareWithTax'][locale.languageCode]; + + String get confirmAppo => localizedValues['confirmAppo'][locale.languageCode]; + + String get confirm => localizedValues['confirm'][locale.languageCode]; + + String get confirmLater => localizedValues['confirmLater'][locale.languageCode]; + + String get todoList => localizedValues['todoList'][locale.languageCode]; + + String get appoActions => localizedValues['appoActions'][locale.languageCode]; + + String get appointment => localizedValues['appointment'][locale.languageCode]; + String get login => localizedValues['login'][locale.languageCode]; + String get loginregister => + localizedValues['loginregister'][locale.languageCode]; + String get welcome => localizedValues['welcome'][locale.languageCode]; + String get welcomeText => + localizedValues['welcome_text'][locale.languageCode]; + String get welcomeText2 => + localizedValues['welcome_text2'][locale.languageCode]; + String get yes => localizedValues['yes'][locale.languageCode]; + String get no => localizedValues['no'][locale.languageCode]; + String get logintypeRadio => + localizedValues['logintyperadio'][locale.languageCode]; + String get registerNow => localizedValues['registernow'][locale.languageCode]; + String get nationalID => localizedValues['nationalID'][locale.languageCode]; + String get fileNo => localizedValues['fileNo'][locale.languageCode]; + String get forgotPassword => + localizedValues['forgotFileNo'][locale.languageCode]; + String get enterNationalId => + localizedValues['enter-national-id'][locale.languageCode]; + String get profileInfo => + localizedValues['profile-info'][locale.languageCode]; + String get submit => localizedValues['submit'][locale.languageCode]; + String get forgotDesc => localizedValues['forgot-desc'][locale.languageCode]; + String get dob => localizedValues['dob'][locale.languageCode]; + String get hijriDate => localizedValues['hijri-date'][locale.languageCode]; + String get gregorianDate => + localizedValues['gregorian-date'][locale.languageCode]; + String get searchMedicine => + localizedValues['searchMedicine'][locale.languageCode]; + String get searchMedicineHere => + localizedValues['searchMedicineHere'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/uitl/utils.dart b/lib/uitl/utils.dart index 1c2da2b6..ac586b7d 100644 --- a/lib/uitl/utils.dart +++ b/lib/uitl/utils.dart @@ -42,4 +42,42 @@ class Utils { static hideKeyboard(BuildContext context) { FocusScope.of(context).unfocus(); } + + bool isSAUDIIDValid(String id) { + if (id == null) { + return false; + } + try { + id = id.toString(); + id = id.trim(); + var returnValue = int.parse(id); + var sum = 0; + if (returnValue > 0) { + var type = int.parse(id[0]); + + if (id.length != 10) { + return false; + } + if (type != 2 && type != 1) { + return false; + } + + for (var i = 0; i < 10; i++) { + if (i % 2 == 0) { + var a = id[i]; + var x = int.parse(a) * 2; + var b = x.toString(); + if (b.length == 1) { + b = "0" + b; + } + sum += int.parse(b[0]) + int.parse(b[1]); + } else { + sum += int.parse(id[i]); + } + } + return sum % 10 == 0; + } + } catch (err) {} + return false; + } } diff --git a/lib/widgets/bottom_navigation/bottom_nav_bar.dart b/lib/widgets/bottom_navigation/bottom_nav_bar.dart index 70931184..5966ec46 100644 --- a/lib/widgets/bottom_navigation/bottom_nav_bar.dart +++ b/lib/widgets/bottom_navigation/bottom_nav_bar.dart @@ -1,3 +1,5 @@ +import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; +import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; @@ -21,6 +23,12 @@ class _BottomNavBarState extends State { widget.changeIndex(index); setState(() { _index = index; + + // Navigate to Appointment Booking Flow + // if (_index == 4) navigateToBookingOptions(context); + + // Navigate to upcoming list + //if (_index == 3) navigateToToDoList(context); }); } @@ -52,20 +60,31 @@ class _BottomNavBarState extends State { currentIndex: 1, name: TranslationBase.of(context).replay2, ), - Expanded( - child: SizedBox( - height: 50, - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox(height: 22) - ], - ), - ), +// Expanded( +// child: SizedBox( +// height: 50, +// child: Column( +// mainAxisSize: MainAxisSize.min, +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// SizedBox(height: 22), +// ], +// ), +// ), +// ), + + // Added Calendar Icon to access book appointment flow + BottomNavigationItem( + icon: EvaIcons.calendar, + activeIcon: EvaIcons.calendarOutline, + changeIndex: _changeIndex, + index: _index, + currentIndex: 4, + name: TranslationBase.of(context).bookAppo, ), + BottomNavigationItem( - icon:EvaIcons.person, + icon: EvaIcons.person, activeIcon: EvaIcons.person, changeIndex: _changeIndex, index: _index, @@ -85,4 +104,13 @@ class _BottomNavBarState extends State { ), ); } + + Future navigateToBookingOptions(context) async { + Navigator.push( + context, MaterialPageRoute(builder: (context) => BookingOptions())); + } + + Future navigateToToDoList(context) async { + Navigator.push(context, MaterialPageRoute(builder: (context) => ToDo())); + } } diff --git a/lib/widgets/bottom_navigation/bottom_navigation_item.dart b/lib/widgets/bottom_navigation/bottom_navigation_item.dart index b248e4ac..500f4917 100644 --- a/lib/widgets/bottom_navigation/bottom_navigation_item.dart +++ b/lib/widgets/bottom_navigation/bottom_navigation_item.dart @@ -46,8 +46,11 @@ class BottomNavigationItem extends StatelessWidget { SizedBox( height: 5, ), + + // Added TextAlign Property Texts( name, + textAlign: TextAlign.center, color: currentIndex == index ? Theme.of(context).primaryColor : Theme.of(context).dividerColor, diff --git a/lib/widgets/card/rounded_container.dart b/lib/widgets/card/rounded_container.dart new file mode 100644 index 00000000..a6cb36e2 --- /dev/null +++ b/lib/widgets/card/rounded_container.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; + +// OWNER : Ibrahim albitar +// DATE : 05-04-2020 +// DESCRIPTION : Custom widget for rounded container and custom decoration + +class RoundedContainer extends StatefulWidget { + final double width; + final double height; + final double raduis; + final Color backgroundColor; + final double margin; + final double elevation; + final bool showBorder; + final Color borderColor; + final bool customCornerRaduis; + final double topLeft; + final double bottomRight; + final double topRight; + final double bottomLeft; + final Widget child; + final double borderWidth; + + RoundedContainer( + {@required this.child, + this.width, + this.height, + this.raduis = 10, + this.backgroundColor = Colors.white, + this.margin = 10, + this.elevation = 1, + this.showBorder = false, + this.borderColor = Colors.red, + this.customCornerRaduis = false, + this.topLeft = 0, + this.topRight = 0, + this.bottomRight = 0, + this.bottomLeft = 0, + this.borderWidth = 1}); + + @override + _RoundedContainerState createState() => _RoundedContainerState(); +} + +class _RoundedContainerState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: widget.width, + height: widget.height, + margin: EdgeInsets.all(widget.margin), + decoration: widget.showBorder == true + ? BoxDecoration( + color: Theme.of(context).primaryColor, + border: Border.all( + color: widget.borderColor, width: widget.borderWidth), + borderRadius: widget.customCornerRaduis + ? BorderRadius.only( + topLeft: Radius.circular(widget.topLeft), + topRight: Radius.circular(widget.topRight), + bottomRight: Radius.circular(widget.bottomRight), + bottomLeft: Radius.circular(widget.bottomLeft)) + : BorderRadius.circular(widget.raduis), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 10, + blurRadius: 5, + offset: Offset(0, 5), // changes position of shadow + ), + ]) + : null, + child: Card( + margin: EdgeInsets.all(0), + shape: RoundedRectangleBorder( + borderRadius: widget.customCornerRaduis + ? BorderRadius.only( + topLeft: Radius.circular(widget.topLeft), + topRight: Radius.circular(widget.topRight), + bottomRight: Radius.circular(widget.bottomRight), + bottomLeft: Radius.circular(widget.bottomLeft)) + : BorderRadius.circular(widget.raduis), + ), + color: widget.backgroundColor, + child: widget.child, + )); + } +} diff --git a/lib/widgets/data_display/text.dart b/lib/widgets/data_display/text.dart index 5360a7d6..851c678d 100644 --- a/lib/widgets/data_display/text.dart +++ b/lib/widgets/data_display/text.dart @@ -15,6 +15,7 @@ class Texts extends StatefulWidget { final String style; final bool allowExpand; final double fontSize; + final String fontWeight; Texts(this.text, {Key key, @@ -30,7 +31,8 @@ class Texts extends StatefulWidget { this.maxLines, this.readMore = false, this.style, - this.fontSize}) + this.fontSize, + this.fontWeight}) : super(key: key); @override @@ -208,8 +210,7 @@ class _TextsState extends State { ) : TextStyle( fontStyle: widget.italic ? FontStyle.italic : null, - color: - widget.color ?? Colors.black, + color: widget.color ?? Colors.black, fontSize: widget.fontSize ?? _getFontSize(), letterSpacing: widget.variant == "overline" ? 1.5 : null, diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index c1e92443..4a5071d1 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/list/flexible_container.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; @@ -6,8 +7,6 @@ import 'package:flutter/material.dart'; import '../../config/size_config.dart'; import 'drawer_item_widget.dart'; - - class AppDrawer extends StatefulWidget { @override _AppDrawerState createState() => _AppDrawerState(); @@ -32,11 +31,11 @@ class _AppDrawerState extends State { child: InkWell( child: DrawerHeader( child: Column( - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( child: Image.asset('assets/images/logo.png'), - margin: EdgeInsets.only(top: 10, bottom: 15), + margin: EdgeInsets.all(20), ), SizedBox( height: 1, @@ -45,36 +44,18 @@ class _AppDrawerState extends State { ), ), SizedBox(height: 15), - CircleAvatar( - radius: SizeConfig.imageSizeMultiplier * 12, - backgroundColor: Colors.white, - //TODO add backgroundImage: NetworkImage(''), - ), - Padding( - padding: EdgeInsets.only(top: 10), - child: Texts( - 'Patient', - color: Colors.black, - fontSize: SizeConfig.textMultiplier * 2, - )), - Texts("Director of medical records", - //TODO: Make The Dr Title Dynamic and check overflow issue. - - color: Colors.black87), - RaisedButton( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(18.0), - side: BorderSide(color: Colors.red), - ), - child: Texts( - TranslationBase.of(context).logout, - color: Colors.white, - ), - onPressed: () async { - Navigator.pop(context); - //TODO add await helpers.logout(); - }, - ), + // CircleAvatar( + // radius: SizeConfig.imageSizeMultiplier * 12, + // backgroundColor: Colors.white, + // //TODO add backgroundImage: NetworkImage(''), + // ), + // Padding( + // padding: EdgeInsets.only(top: 10), + // child: Texts( + // 'Patient', + // color: Colors.black, + // fontSize: SizeConfig.textMultiplier * 2, + // )), ], ), ), @@ -85,10 +66,12 @@ class _AppDrawerState extends State { ), InkWell( child: DrawerItem( - TranslationBase.of(context).settings, Icons.settings), + TranslationBase.of(context).loginregister, + Icons.lock), onTap: () { - Navigator.pop(context); - //TODO add fun + Navigator.of(context).pushNamed( + WELCOME_LOGIN, + ); }, ), ], diff --git a/lib/widgets/drawer/drawer_item_widget.dart b/lib/widgets/drawer/drawer_item_widget.dart index 06dcd170..3357ef8d 100644 --- a/lib/widgets/drawer/drawer_item_widget.dart +++ b/lib/widgets/drawer/drawer_item_widget.dart @@ -25,7 +25,7 @@ class _DrawerItemState extends State { @override Widget build(BuildContext context) { return Container( - margin: EdgeInsets.only(top: 5, bottom: 5, left: 10, right: 10), + margin: EdgeInsets.only(top: 5, bottom: 15, left: 10, right: 10), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -34,21 +34,26 @@ class _DrawerItemState extends State { color: widget.iconColor, size: SizeConfig.imageSizeMultiplier * 5, ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - widget.title, - color: widget.textColor, - fontSize: SizeConfig.textMultiplier * 2.3, - ), - Texts( - widget.subTitle, - color: widget.textColor, - fontSize: SizeConfig.textMultiplier * 2.5, - ), - ], - ), + Padding( + padding: widget.subTitle == '' + ? EdgeInsets.only(top: 20) + : EdgeInsets.only(top: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + widget.title, + color: widget.textColor, + fontSize: SizeConfig.textMultiplier * 2.3, + ), + Texts( + widget.subTitle, + color: widget.textColor, + fontSize: SizeConfig.textMultiplier * 2.5, + ), + ], + ), + ) ], ), ); diff --git a/lib/widgets/input/text_field.dart b/lib/widgets/input/text_field.dart index 900c3401..5429dd39 100644 --- a/lib/widgets/input/text_field.dart +++ b/lib/widgets/input/text_field.dart @@ -46,7 +46,7 @@ class TextFields extends StatefulWidget { this.suffixIcon, this.autoFocus, this.onChanged, - this.initialValue, + // this.initialValue, this.minLines, this.maxLines, this.inputFormatters, @@ -68,18 +68,20 @@ class TextFields extends StatefulWidget { this.maxLength, this.prefixIcon, this.bare = false, + this.onTap, this.fontSize = 16.0, this.fontWeight = FontWeight.w700, this.autoValidate = false}) : super(key: key); final String hintText; - final String initialValue; + // final String initialValue; final String type; final bool autoFocus; final IconData suffixIcon; final Color suffixIconColor; - final IconData prefixIcon; + final Icon prefixIcon; + final VoidCallback onTap; final TextEditingController controller; final TextInputType keyboardType; final FormFieldValidator validator; @@ -196,6 +198,10 @@ class _TextFieldsState extends State { decoration: widget.bare ? null : BoxDecoration(boxShadow: [ + // BoxShadow( + // color: Color.fromRGBO(70, 68, 167, focus ? 0.20 : 0), + // offset: Offset(0.0, 13.0), + // blurRadius: focus ? 34.0 : 12.0) BoxShadow( color: Color.fromRGBO(110, 68, 80, focus ? 0.20 : 0), offset: Offset(0.0, 13.0), @@ -217,7 +223,7 @@ class _TextFieldsState extends State { minLines: widget.minLines ?? 1, maxLines: widget.maxLines ?? 1, maxLengthEnforced: widget.maxLengthEnforced, - initialValue: widget.initialValue, + // initialValue: widget.initialValue, onChanged: widget.onChanged, focusNode: _focusNode, maxLength: widget.maxLength ?? null, @@ -255,19 +261,7 @@ class _TextFieldsState extends State { ? Colors.transparent : Theme.of(context).backgroundColor, suffixIcon: _buildSuffixIcon(), - prefixIcon: widget.type != "search" - ? widget.prefixIcon != null - ? Padding( - padding: EdgeInsets.only( - left: 28.0, top: 14.0, bottom: 14.0, right: 0), - child: Text( - "\$", - style: TextStyle( - fontSize: 14, fontWeight: FontWeight.w800), - ), - ) - : null - : Icon(EvaIcons.search, size: 20.0, color: Colors.grey[500]), + prefixIcon: widget.prefixIcon, errorStyle: TextStyle( fontSize: 14.0, fontWeight: widget.fontWeight, @@ -277,35 +271,23 @@ class _TextFieldsState extends State { color: Theme.of(context) .errorColor .withOpacity(widget.bare ? 0.0 : 0.5), - width: 2.0), + width: 1.0), borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: Theme.of(context) .errorColor .withOpacity(widget.bare ? 0.0 : 0.5), - width: 2.0), + width: 1.0), borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)), focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context) - .dividerColor - .withOpacity(widget.bare ? 0.0 : 1.0), - width: 2.0), + borderSide: BorderSide(color: Colors.grey, width: 1.0), borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)), disabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context) - .dividerColor - .withOpacity(widget.bare ? 0.0 : 1.0), - width: 2.0), + borderSide: BorderSide(color: Colors.grey, width: 1.0), borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)), enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context) - .dividerColor - .withOpacity(widget.bare ? 0.0 : 1.0), - width: 2.0), + borderSide: BorderSide(color: Colors.grey, width: 1.0), borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0), ), ), diff --git a/lib/widgets/mobile-no/mobile_no.dart b/lib/widgets/mobile-no/mobile_no.dart new file mode 100644 index 00000000..2c17a669 --- /dev/null +++ b/lib/widgets/mobile-no/mobile_no.dart @@ -0,0 +1,125 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +// OWNER : Ibrahim albitar +// DATE : 12-04-2020 +// DESCRIPTION : Customization for Texts in app + +class MobileNo extends StatefulWidget { + final bool disabled; + // final String data; + final List countries = [ + new Countries(name: 'Saudi Arabia', code: '966'), + new Countries(name: 'Dubai', code: '971'), + ]; + final double margin; + final double marginTop; + final double marginRight; + final double marginBottom; + final double marginLeft; + final TextEditingController controller; + final Function onNumberChange; + final Function onCountryChange; + MobileNo( + {this.disabled = false, + this.marginTop = 0, + this.marginRight = 0, + this.marginBottom = 0, + this.controller, + this.marginLeft = 0, + this.onNumberChange, + this.onCountryChange, + this.margin = 0}); + + @override + _MobileNo createState() => _MobileNo(); +} + +class _MobileNo extends State { + var _selectedType = '966'; + String countryCode = '966'; + @override + Widget build(BuildContext context) { + return Visibility( + child: Column(children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + // add Expanded to have your dropdown button fill remaining space + child: Padding( + padding: EdgeInsets.all(10), + child: DropdownButtonHideUnderline( + child: DropdownButton( + isExpanded: true, + value: _selectedType, + iconSize: 40, + elevation: 16, + onChanged: (value) => { + widget.onCountryChange(value), + setState(() { + countryCode = value; + _selectedType = value; + }) + }, + items: widget.countries + .map>((Countries value) { + return DropdownMenuItem( + value: value.code, + child: Text(value.name), + ); + }).toList())))), + ], + ), + Container( + padding: EdgeInsets.all(5), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(10)), + child: Row(children: [ + Expanded( + flex: 1, + child: Icon( + Icons.phone, + color: Colors.red, + )), + Expanded( + flex: 1, + child: Text( + countryCode, + overflow: TextOverflow.clip, + )), + Expanded( + flex: 4, + child: Container( + margin: widget.margin != null + ? EdgeInsets.all(widget.margin) + : EdgeInsets.only( + top: widget.marginTop, + right: widget.marginRight, + bottom: widget.marginBottom, + left: widget.marginLeft), + child: TextField( + controller: widget.controller, + keyboardType: TextInputType.phone, + // onChanged: (value) { + // widget.controller.text = countryCode; + // }, + onChanged: (value) => widget.onNumberChange(value), + decoration: InputDecoration( + border: InputBorder.none, hintText: '5xxxxxxxx'), + ), + ), + ) + ]), + ) + ])); + } +} + +class Countries { + final String name; + final String code; + Countries({this.name, this.code}); +} diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index 89bb4336..062b40d8 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -1,4 +1,7 @@ import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import '../progress_indicator/app_loader_widget.dart'; +import 'arrow_back.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/others/network_base_view.dart b/lib/widgets/others/network_base_view.dart index 8188db26..78c47783 100644 --- a/lib/widgets/others/network_base_view.dart +++ b/lib/widgets/others/network_base_view.dart @@ -19,7 +19,9 @@ class NetworkBaseView extends StatelessWidget { buildBaseViewWidget() { switch (baseViewModel.state) { + case ViewState.ErrorLocal: case ViewState.Idle: + case ViewState.BusyLocal: return child; break; case ViewState.Busy: diff --git a/lib/widgets/others/rounded_container.dart b/lib/widgets/others/rounded_container.dart new file mode 100644 index 00000000..93dc6cc4 --- /dev/null +++ b/lib/widgets/others/rounded_container.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; + +class RoundedContainer extends StatefulWidget { + final double width; + final double height; + final double raduis; + final Color backgroundColor; + final double margin; + final double elevation; + final bool showBorder; + final Color borderColor; + final bool customCornerRaduis; + final double topLeft; + final double bottomRight; + final double topRight; + final double bottomLeft; + final Widget child; + final double borderWidth; + + RoundedContainer( + {@required this.child, + this.width, + this.height, + this.raduis = 10, + this.backgroundColor = Colors.white, + this.margin = 10, + this.elevation = 1, + this.showBorder = false, + this.borderColor = Colors.red, + this.customCornerRaduis = false, + this.topLeft = 0, + this.topRight = 0, + this.bottomRight = 0, + this.bottomLeft = 0, + this.borderWidth = 1}); + + @override + _RoundedContainerState createState() => _RoundedContainerState(); +} + +class _RoundedContainerState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: widget.width, + height: widget.height, + margin: EdgeInsets.all(widget.margin), + decoration: widget.showBorder == true + ? BoxDecoration( + color: Theme.of(context).primaryColor, + border: Border.all( + color: widget.borderColor, width: widget.borderWidth), + borderRadius: widget.customCornerRaduis + ? BorderRadius.only( + topLeft: Radius.circular(widget.topLeft), + topRight: Radius.circular(widget.topRight), + bottomRight: Radius.circular(widget.bottomRight), + bottomLeft: Radius.circular(widget.bottomLeft)) + : BorderRadius.circular(widget.raduis), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 10, + blurRadius: 5, + offset: Offset(0, 5), // changes position of shadow + ), + ]) + : null, + child: Card( + margin: EdgeInsets.all(0), + shape: RoundedRectangleBorder( + borderRadius: widget.customCornerRaduis + ? BorderRadius.only( + topLeft: Radius.circular(widget.topLeft), + topRight: Radius.circular(widget.topRight), + bottomRight: Radius.circular(widget.bottomRight), + bottomLeft: Radius.circular(widget.bottomLeft)) + : BorderRadius.circular(widget.raduis), + ), + color: widget.backgroundColor, + child: widget.child, + )); + } +} diff --git a/lib/widgets/pharmacy/drug_item.dart b/lib/widgets/pharmacy/drug_item.dart new file mode 100644 index 00000000..608b1b98 --- /dev/null +++ b/lib/widgets/pharmacy/drug_item.dart @@ -0,0 +1,84 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/config/size_config.dart'; + +import 'package:flutter/material.dart'; + +class MedicineItemWidget extends StatefulWidget { + final String label; + final Color backgroundColor; + final bool showBorder; + final Color borderColor; + final String url; + + MedicineItemWidget( + {@required this.label, + this.backgroundColor = Colors.white, + this.showBorder = false, + this.borderColor = Colors.white, + this.url}); + + @override + _MedicineItemWidgetState createState() => _MedicineItemWidgetState(); +} + +class _MedicineItemWidgetState extends State { + @override + Widget build(BuildContext context) { + return new RoundedContainer( + height: SizeConfig.heightMultiplier * 10.5, + child: Padding( + padding: const EdgeInsets.all(2.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (widget.url != null) + Container( + height: 39, + width: 39, + child: ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(7)), + child: Image.memory( + dataFromBase64String(widget.url), + height: SizeConfig.imageSizeMultiplier * 11, + width: SizeConfig.imageSizeMultiplier * 11, + fit: BoxFit.cover, + ), + ), + ), + Expanded( + child: Padding( + padding: EdgeInsets.all(3), + child: Align( + alignment: Alignment.centerLeft, + child: Texts(widget.label), + ), + ), + ) + ], + ), + ), + backgroundColor: widget.backgroundColor, + showBorder: widget.showBorder, + borderColor: widget.borderColor, + margin: 4, + raduis: 10, + ); + } + + Image imageFromBase64String(String base64String) { + return Image.memory(base64Decode(base64String)); + } + + Uint8List dataFromBase64String(String base64String) { + return base64Decode(base64String); + } + + String base64String(Uint8List data) { + return base64Encode(data); + } +} diff --git a/lib/widgets/text/app_texts_widget.dart b/lib/widgets/text/app_texts_widget.dart new file mode 100644 index 00000000..e3989719 --- /dev/null +++ b/lib/widgets/text/app_texts_widget.dart @@ -0,0 +1,74 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +// OWNER : Ibrahim albitar +// DATE : 12-04-2020 +// DESCRIPTION : Customization for Texts in app + +class AppText extends StatefulWidget { + final String data; + final Color color; + final FontWeight fontWeight; + final double fontSize; + final String fontFamily; + final double margin; + final double marginTop; + final double marginRight; + final double marginBottom; + final double marginLeft; + final bool visibility; + final TextAlign textAlign; + final Color backGroundcolor; + final bool underline; + AppText(this.data, + {this.color = Colors.black, + this.fontWeight = FontWeight.normal, + this.fontSize, + this.fontFamily = 'WorkSans', + this.margin, + this.marginTop = 0, + this.marginRight = 0, + this.marginBottom = 0, + this.marginLeft = 0, + this.visibility = true, + this.textAlign, + this.underline = false, + this.backGroundcolor = Colors.white}); + + @override + _AppTextState createState() => _AppTextState(); +} + +class _AppTextState extends State { + @override + Widget build(BuildContext context) { + return Visibility( + visible: widget.visibility, + child: Container( + margin: widget.margin != null + ? EdgeInsets.all(widget.margin) + : EdgeInsets.only( + top: widget.marginTop, + right: widget.marginRight, + bottom: widget.marginBottom, + left: widget.marginLeft), + child: Text( + widget.data, + textAlign: widget.textAlign, + overflow: TextOverflow.clip, + style: TextStyle( + color: widget.color, + fontWeight: widget.fontWeight, + fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2), + fontFamily: widget.fontFamily, + decoration: widget.underline == true + ? TextDecoration.underline + : TextDecoration.none + // backgroundColor:widget.backGroundcolor + ), + ), + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 426404b8..f9fc0baa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,6 +38,7 @@ dependencies: url_launcher: ^5.5.0 shared_preferences: ^0.5.8 flutter_flexible_toast: ^0.1.4 + firebase_messaging: ^6.0.16 # Progress bar progress_hud_v2: ^2.0.0 @@ -68,6 +69,20 @@ dependencies: # Qr code Scanner barcode_scan: ^3.0.1 + # Rating Stars + rating_bar: ^0.2.0 + + # Calendar + table_calendar: ^2.2.3 + + # SVG Images + flutter_svg: ^0.17.4 + + # Location Helper + map_launcher: ^0.8.1 + + + @@ -85,6 +100,8 @@ flutter: assets: - assets/images/ - assets/images/medical/ + - assets/images/new-design/ + - assets/json/ fonts: - family: WorkSans