Merge branch 'haroon-new-design' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into haroon-new-design

merge-requests/429/head
Haroon Amjad 5 years ago
commit 134ccb7ee1

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="612px" height="612px" viewBox="0 0 612 612" style="enable-background:new 0 0 612 612;" xml:space="preserve">
<g>
<g id="_x32__22_">
<g>
<path d="M535.5,0h-459C34.253,0,0,34.253,0,76.5v459C0,577.747,34.253,612,76.5,612h459c42.247,0,76.5-34.253,76.5-76.5v-459
C612,34.253,577.747,0,535.5,0z M229.5,459c10.557,0,19.125,8.568,19.125,19.125s-8.568,19.125-19.125,19.125h-95.089
c-5.355,0-10.156-2.219-13.617-5.757c-3.71-3.137-6.043-7.707-6.043-13.368V382.5c0-10.557,8.568-19.125,19.125-19.125
S153,371.943,153,382.5l-0.421,49.075l91.379-91.38l27.043,27.043L179.239,459H229.5z M243.958,271.824l-91.379-91.398L153,229.5
c0,10.557-8.568,19.125-19.125,19.125s-19.125-8.568-19.125-19.125v-95.625c0-5.661,2.333-10.232,6.043-13.388
c3.461-3.519,8.281-5.737,13.617-5.737H229.5c10.557,0,19.125,8.568,19.125,19.125S240.057,153,229.5,153h-50.261l91.781,91.781
L243.958,271.824z M497.25,478.125c0,5.661-2.333,10.231-6.044,13.388c-3.461,3.538-8.28,5.737-13.616,5.737H382.5
c-10.557,0-19.125-8.568-19.125-19.125S371.943,459,382.5,459h50.261l-91.781-91.781l27.043-27.042l91.379,91.379L459,382.5
c0-10.557,8.568-19.125,19.125-19.125s19.125,8.568,19.125,19.125V478.125z M497.25,229.5c0,10.557-8.568,19.125-19.125,19.125
S459,240.057,459,229.5l0.421-49.075l-91.38,91.379l-27.042-27.043L432.761,153H382.5c-10.557,0-19.125-8.568-19.125-19.125
s8.568-19.125,19.125-19.125h95.09c5.336,0,10.155,2.219,13.616,5.757c3.711,3.136,6.044,7.707,6.044,13.368V229.5z"/>
</g>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -50,7 +50,7 @@ const Map localizedValues = {
'searchByDocText': {'en': 'Type the name of the doctor to help you find him', 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه'}, 'searchByDocText': {'en': 'Type the name of the doctor to help you find him', 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه'},
'enterDocName': {'en': 'Enter Doctor name', 'ar': 'أدخل إسم الطبيب'}, 'enterDocName': {'en': 'Enter Doctor name', 'ar': 'أدخل إسم الطبيب'},
'search': {'en': 'Search', 'ar': 'بحث'}, 'search': {'en': 'Search', 'ar': 'بحث'},
'noResultFound': {'en': 'No Result Found', 'ar': 'المنتج غير موجود'}, 'noResultFound': {'en': 'No Result Found', 'ar': 'لم يتم العثور على نتائج'},
'pleaseEnterProductName': {'en': 'Please Enter Product Name', 'ar': 'ادخل اسم المنتج'}, 'pleaseEnterProductName': {'en': 'Please Enter Product Name', 'ar': 'ادخل اسم المنتج'},
'bookNow': {'en': 'BOOK NOW', 'ar': 'احجز الآن'}, 'bookNow': {'en': 'BOOK NOW', 'ar': 'احجز الآن'},
'docInfo': {'en': 'Doctor Information', 'ar': 'معلومات الطبيب'}, 'docInfo': {'en': 'Doctor Information', 'ar': 'معلومات الطبيب'},
@ -60,7 +60,7 @@ const Map localizedValues = {
'nationality': {'en': 'Nationality', 'ar': 'الجنسية'}, 'nationality': {'en': 'Nationality', 'ar': 'الجنسية'},
'neverWait': {'en': 'Never wait in queue', 'ar': 'لا تنتظر في قائمة الانتظار'}, 'neverWait': {'en': 'Never wait in queue', 'ar': 'لا تنتظر في قائمة الانتظار'},
'reminderTitle': {'en': 'You have appointment with Dr. ', 'ar': 'لديك موعد مع د'}, 'reminderTitle': {'en': 'You have appointment with Dr. ', 'ar': 'لديك موعد مع د'},
'appointmentCalendar': {'en': 'Would you like to set a reminder for this appointment in your calendar?', 'ar': 'هل ترغب في تعيين تذكير لهذا الموعد في التقويم الخاص بك؟'}, 'appointmentCalendar': {'en': 'Would you like to set a reminder for this appointment in your calendar?', 'ar': 'هل ترغب في إضافة تذكير لهذا الموعد في التقويم الخاص بك؟'},
'appointmentSuccess': {'en': 'Appointment is successfully booked', 'ar': 'تم حجز الموعد بنجاح'}, 'appointmentSuccess': {'en': 'Appointment is successfully booked', 'ar': 'تم حجز الموعد بنجاح'},
'docQualifications': {'en': 'Doctor Qualifications', 'ar': 'مؤهلات الطبيب'}, 'docQualifications': {'en': 'Doctor Qualifications', 'ar': 'مؤهلات الطبيب'},
'pressAgain': {'en': 'Press again to exit the app', 'ar': 'اضغط مرة أخرى للخروج من التطبيق'}, 'pressAgain': {'en': 'Press again to exit the app', 'ar': 'اضغط مرة أخرى للخروج من التطبيق'},
@ -68,14 +68,14 @@ const Map localizedValues = {
'patientInfo': {'en': 'Patient Information', 'ar': 'معلومات المريض'}, 'patientInfo': {'en': 'Patient Information', 'ar': 'معلومات المريض'},
'doctorFilter': {'en': 'Doctors will be filtered based on your gender and age', 'ar': 'سيتم تصفية الأطباء بناءً على جنسك وعمرك'}, 'doctorFilter': {'en': 'Doctors will be filtered based on your gender and age', 'ar': 'سيتم تصفية الأطباء بناءً على جنسك وعمرك'},
'bookSuccess': {'en': 'Book Success', 'ar': 'تم حجز الموعد بنجاح'}, 'bookSuccess': {'en': 'Book Success', 'ar': 'تم حجز الموعد بنجاح'},
'patientShare': {'en': 'Patient Share', 'ar': 'المبلغ المستحق'}, 'patientShare': {'en': 'Patient Share', 'ar': 'نسبة العميل'},
'patientShareWithTax': {'en': 'Patient Share with Tax', 'ar': 'المبلغ الإجمالي المستحق'}, 'patientShareWithTax': {'en': 'Patient Share with Tax', 'ar': 'المبلغ الإجمالي المستحق مع الضريبة'},
'confirmAppo': {'en': 'Confirm Appointment', 'ar': 'تأكيد الموعد'}, 'confirmAppo': {'en': 'Confirm Appointment', 'ar': 'تأكيد الموعد'},
'confirm': {'en': 'Confirm', 'ar': 'تأكيد'}, 'confirm': {'en': 'Confirm', 'ar': 'تأكيد'},
'confirmLiveCare': {'en': 'Confirm LiveCare', 'ar': 'تأكيد لايف كير'}, 'confirmLiveCare': {'en': 'Confirm LiveCare', 'ar': 'تأكيد لايف كير'},
'waitingForDoctor': {'en': 'Waiting for doctor', 'ar': 'في انتظار الطبيب'}, 'waitingForDoctor': {'en': 'Waiting for doctor', 'ar': 'في انتظار الطبيب'},
'appointment': {'en': 'Appointment', 'ar': 'الموعد'}, 'appointment': {'en': 'Appointment', 'ar': 'الموعد'},
'confirmLater': {'en': 'Confirm Later', 'ar': 'تأكيد لاحقا'}, 'confirmLater': {'en': 'Confirm Later', 'ar': 'التاكيد لاحقا'},
'todoList': {'en': 'Todo List', 'ar': 'مهامي'}, 'todoList': {'en': 'Todo List', 'ar': 'مهامي'},
'appoActions': {'en': 'Appointment Actions', 'ar': 'إجراءات الموعد'}, 'appoActions': {'en': 'Appointment Actions', 'ar': 'إجراءات الموعد'},
'date': {'en': 'Date', 'ar': 'التاريخ'}, 'date': {'en': 'Date', 'ar': 'التاريخ'},
@ -89,13 +89,13 @@ const Map localizedValues = {
'agreeTo': {'en': 'I agree the', 'ar': 'أوافق على'}, 'agreeTo': {'en': 'I agree the', 'ar': 'أوافق على'},
'termsConditoins': {'en': 'Terms and Conditions', 'ar': 'الأحكام والشروط'}, 'termsConditoins': {'en': 'Terms and Conditions', 'ar': 'الأحكام والشروط'},
'cancelAppoMsg': {'en': 'Are you sure you want to cancel this appointment?', 'ar': 'هل أنت متأكد أنك تريد إلغاء هذا الموعد؟'}, 'cancelAppoMsg': {'en': 'Are you sure you want to cancel this appointment?', 'ar': 'هل أنت متأكد أنك تريد إلغاء هذا الموعد؟'},
'changePayment': {'en': 'Change Payment Method', 'ar': 'قم بتغيير آلية الدفع'}, 'changePayment': {'en': 'Change Payment Method', 'ar': 'تغيير آلية الدفع'},
'upcoming-noAction': {'en': 'No Action Required', 'ar': 'لا يوجد إجراء مطلوب'}, 'upcoming-noAction': {'en': 'No Action Required', 'ar': 'لا يلزم اتخاذ أي إجراء'},
'upcoming-confirm': {'en': 'Please confirm the appointment to avoid cancellation', 'ar': 'يرجى تأكيد الموعد لتفادي الإلغاء'}, 'upcoming-confirm': {'en': 'Please confirm the appointment to avoid cancellation', 'ar': 'يرجى تأكيد الموعد لتفادي الإلغاء'},
"book-success-confirm-more-24-1-2": {"en": "The online payment process will be available 24 hours before the appointment.", "ar": "- عملية الدفع الالكتروني ستكون متاحة قبل الموعد ب 24 ساعة."}, "book-success-confirm-more-24-1-2": {"en": "The online payment process will be available 24 hours before the appointment.", "ar": "- عملية الدفع الالكتروني ستكون متاحة قبل الموعد ب 24 ساعة."},
'upcoming-payment-pending': {'en': 'Online Payment will be Activated before 24 Hours of Appointment Time', 'ar': 'سيتم تفعيل خدمة الدفع الالكتروني قبل 24 ساعة من موعد الحجز'}, 'upcoming-payment-pending': {'en': 'Online Payment will be Activated before 24 Hours of Appointment Time', 'ar': 'سيتم تفعيل خدمة الدفع الالكتروني قبل 24 ساعة من موعد الحجز'},
'upcoming-payment-now': {'en': 'Pay Online now to avoid long waiting queue', 'ar': 'ادفع الآن لتفادي الانتظار'}, 'upcoming-payment-now': {'en': 'Pay Online now to avoid long waiting queue', 'ar': 'ادفع الآن لتفادي طابور الانتظار'},
'upcoming-QR': {'en': 'Use the QR Code to Check-In in hospital', 'ar': 'استخدم الرمز لتسجيل الحضور في المستشفى'}, 'upcoming-QR': {'en': 'Use the QR Code to Check-In in hospital', 'ar': 'استخدم الرمز لتسجيل الحضور بشكل آلي في المستشفى'},
'upcoming-virtual': {'en': 'This is a virtual appointment, Please adhere to the instructions for a seamless experience.', 'ar': 'هذا موعد اتصال مرئي عن بعد ، يرجى اتباع تعليمات الخدمة.'}, 'upcoming-virtual': {'en': 'This is a virtual appointment, Please adhere to the instructions for a seamless experience.', 'ar': 'هذا موعد اتصال مرئي عن بعد ، يرجى اتباع تعليمات الخدمة.'},
'upcoming-livecare': {'en': 'This is a LiveCare appointment', 'ar': 'هذا موعد لايف كير'}, 'upcoming-livecare': {'en': 'This is a LiveCare appointment', 'ar': 'هذا موعد لايف كير'},
'upcoming-details': {'en': 'More Details', 'ar': 'المزيد'}, 'upcoming-details': {'en': 'More Details', 'ar': 'المزيد'},
@ -108,33 +108,32 @@ const Map localizedValues = {
'online': {'en': 'Online', 'ar': 'الالكترونية'}, 'online': {'en': 'Online', 'ar': 'الالكترونية'},
'payment': {'en': 'Payment', 'ar': 'الدفع'}, 'payment': {'en': 'Payment', 'ar': 'الدفع'},
'cancel-nocaps': {'en': 'Cancel', 'ar': 'الغاء'}, 'cancel-nocaps': {'en': 'Cancel', 'ar': 'الغاء'},
'set-reminder': {'en': 'Set Reminder', 'ar': 'تعيين تذكير'}, 'set-reminder': {'en': 'Set Reminder', 'ar': 'إضافة تذكير'},
"national-id-number": {"en": "National ID Number", "ar": "رقم الهوية الوطنيةالاقامة"}, "national-id-number": {"en": "National ID Number", "ar": "رقم الهوية الوطنية / الاقامة"},
"medical-file-number": {"en": "Medical File Number", "ar": "رقم الملف الطبي"}, "medical-file-number": {"en": "Medical File Number", "ar": "رقم الملف الطبي"},
'login': {'en': 'Login', 'ar': 'تسجيل الدخول'}, 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'},
'loginregister': {'en': 'Login / Register', 'ar': 'تسجيل الدخول'}, 'loginregister': {'en': 'Login / Register', 'ar': 'دخول/ تسجيل'},
'poweredBy': {'en': 'Powered By', 'ar': 'مشغل بواسطة'}, 'poweredBy': {'en': 'Powered by', 'ar': 'مشغل بواسطة'},
"welcome": {"en": "Welcome", "ar": "مرحبا"}, "welcome": {"en": "Welcome", "ar": "مرحبا"},
"welcome-to": {"en": "Welcome to", "ar": "مرحبا بك في"}, "welcome-to": {"en": "Welcome to", "ar": "مرحبا بك في"},
"patient-app": {"en": "Patient App", "ar": "تطبيق المريض"}, "patient-app": {"en": "Patient App", "ar": "تطبيق المرضى"},
"welcome_text": {"en": "Dr. Sulaiman Al Habib Mobile Application", "ar": "الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك"}, "welcome_text": {"en": "Dr. Sulaiman Al Habib Mobile Application", "ar": "الدكتور سليمان الحبيب لتطبيقات الهاتف"},
"dr-sulaiman-text": {"en": "Dr. Sulaiman Al Habib", "ar": "د. سليمان الحبيب"}, "dr-sulaiman-text": {"en": "Dr. Sulaiman Al Habib", "ar": "د. سليمان الحبيب"},
'welcome_text2': {'en': 'Have you visited AlHabib Medical Group before? ', 'ar': 'هل قمت بزيارة مجموعة الحبيب الطبية من قبل؟'}, 'welcome_text2': {'en': 'Have you visited AlHabib Medical Group before? ', 'ar': 'هل قمت بزيارة مجموعة الحبيب الطبية من قبل؟'},
'yes': {'en': 'Yes', 'ar': 'نعم'}, 'yes': {'en': 'Yes', 'ar': 'نعم'},
'no': {'en': 'No', 'ar': 'لا'}, 'no': {'en': 'No', 'ar': 'لا'},
"logintyperadio": {"en": "Choose from below options to login to your medical file.", "ar": "اختر من الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي."}, "logintyperadio": {"en": " Choose from the below options to login to your medical file.", "ar": " اختر احدى الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي "},
"registernow": {"en": "Register Now", "ar": "تسجيل الان"}, "registernow": {"en": "Register Now", "ar": "سجل الان"},
"nationalID": {"en": "Enter the Identification Number", "ar": "أدخل رقم الهوية الوطنية او الاقامة"}, "nationalID": {"en": "Enter the Identification Number", "ar": "أدخل رقم الهوية الوطنية او الاقامة"},
"national-id": {"en": "National ID", "ar": "رقم الهوية"}, "national-id": {"en": "National ID", "ar": "رقم الهوية"},
"fileNo": {"en": "File Number", "ar": "رقم الملف"}, "fileNo": {"en": "File Number", "ar": "رقم الملف"},
"fileno": {"en": "File No", "ar": "رقم الملف"}, "fileno": {"en": "File No", "ar": "رقم الملف"},
"forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"}, "forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"},
"forgotFileNoTitle": {"en": "Forgot medical file", "ar": "نسيت رقم الملف"}, "forgotFileNoTitle": {"en": "Forgot medical file", "ar": "نسيت رقم الملف الطبي"},
"enter-national-id": {"en": "Please enter mobile number and identification number", "ar": "الرجاء إدخال رقم الجوال ورقم الهوية"}, "enter-national-id": {"en": "Please enter mobile number and identification number", "ar": "الرجاء إدخال رقم الجوال ورقم الهوية"},
"profile-info": {"en": "Please enter profile information", "ar": "الرجاء إدخال معلومات الملف الشخصي"}, "profile-info": {"en": "Please enter profile information", "ar": "الرجاء إدخال معلومات الملف الشخصي"},
"submit": {"en": "Submit", "ar": "ارسال"}, "submit": {"en": "Submit", "ar": "ارسال"},
"forgot-desc": {"en": "Enter the mobile number to receive the Medical file Number via SMS", "ar": "أدخل رقم الجوال المسجل لاستلام رقم الملف عن طريق الرسائل النصية"}, "forgot-desc": {"en": "Enter the mobile number to receive the Medical File Number via SMS", "ar": "أدخل رقم الجوال المسجل لاستلام رقم الملف عن طريق الرسائل النصية"},
"dob": {"en": "Birth Date:", "ar": "تاريخ الميلاد"}, "dob": {"en": "Birth Date:", "ar": "تاريخ الميلاد"},
"hijri-date": {"en": "Hijri Date", "ar": "التاريخ الهجري"}, "hijri-date": {"en": "Hijri Date", "ar": "التاريخ الهجري"},
"gregorian-date": {"en": "Gregorian Date", "ar": "التاريخ الميلادي"}, "gregorian-date": {"en": "Gregorian Date", "ar": "التاريخ الميلادي"},
@ -146,19 +145,19 @@ const Map localizedValues = {
"verify-with-whatsapp": {"en": "Whatsapp", "ar": " الواتس اب"}, "verify-with-whatsapp": {"en": "Whatsapp", "ar": " الواتس اب"},
"verify-through": {"en": "Verify Through", "ar": " تحقق من خلال"}, "verify-through": {"en": "Verify Through", "ar": " تحقق من خلال"},
"last-login": {"en": "LAST LOGIN AT:", "ar": "آخر تسجيل دخول"}, "last-login": {"en": "LAST LOGIN AT:", "ar": "آخر تسجيل دخول"},
"last-login-with": {"en": "VERIFICATION TYPE:", "ar": "نوع التحقق:"}, "last-login-with": {"en": "VERIFICATION TYPE:", "ar": "طريقة التحقق:"},
"verify-fingerprint": { "verify-fingerprint": {
"en": "To activate the fingerprint login service, please verify data by using one of the following options.", "en": "To activate the fingerprint login service, please verify data by using one of the following options.",
"ar": "لتفعيل خدمة الدخول بالبصمة، يرجى اختيار احدى القنوات التالية للتحقق من البيانات" "ar": "لتفعيل خدمة الدخول بالبصمة، يرجى اختيار احدى القنوات التالية للتحقق من البيانات"
}, },
'searchMedicine': {'en': 'Search Medicine', 'ar': 'البحث عن الدواء'}, 'searchMedicine': {'en': 'Search Medicine', 'ar': 'البحث عن الدواء'},
'pharmaciesList': {'en': 'Pharmacies List', 'ar': 'قائمة الصيدلايات'}, 'pharmaciesList': {'en': 'Pharmacies List', 'ar': 'قائمة الصيدليات'},
'searchMedicineHere': {'en': 'Search Medicine Here', 'ar': 'ابحث عن الدواء هنا'}, 'searchMedicineHere': {'en': 'Search Medicine Here', 'ar': 'ابحث عن الدواء هنا'},
'description': {'en': 'Description', 'ar': 'الوصف'}, 'description': {'en': 'Description', 'ar': 'الوصف'},
'howToUse': {'en': 'How to Use', 'ar': 'طريقة الأستخدام'}, 'howToUse': {'en': 'How to Use', 'ar': 'طريقة الأستخدام'},
'price': {'en': 'Price', 'ar': 'السعر'}, 'price': {'en': 'Price', 'ar': 'السعر'},
'youCanFindItIn': {'en': 'You can find it in', 'ar': 'يمكنكة ان تجده في'}, 'youCanFindItIn': {'en': 'You can find it in', 'ar': 'يمكنك ان تجده في'},
'pleaseEnterMedicineName': {'en': 'Please Enter Medicine Name', 'ar': 'الرجائ ادخال اسم الدواء'}, 'pleaseEnterMedicineName': {'en': 'Please Enter Medicine Name', 'ar': 'الرجاء ادخال اسم الدواء'},
"verification_message": {"en": "Please enter the Verification Code sent to", "ar": "الرجاء ادخال رمز التحقق الذي تم إرساله إلى"}, "verification_message": {"en": "Please enter the Verification Code sent to", "ar": "الرجاء ادخال رمز التحقق الذي تم إرساله إلى"},
"validation_message": {"en": "The verification code expires in", "ar": "تنتهي صلاحية رمز التحقق خلال"}, "validation_message": {"en": "The verification code expires in", "ar": "تنتهي صلاحية رمز التحقق خلال"},
"arabic-change": {"en": "عربي", "ar": "English"}, "arabic-change": {"en": "عربي", "ar": "English"},
@ -168,7 +167,7 @@ const Map localizedValues = {
"before": {"en": "Before", "ar": "قبل"}, "before": {"en": "Before", "ar": "قبل"},
"minute": {"en": "Minutes", "ar": "دقيقة"}, "minute": {"en": "Minutes", "ar": "دقيقة"},
"hour": {"en": "Hour", "ar": "ساعة"}, "hour": {"en": "Hour", "ar": "ساعة"},
"reminderSuccess": {"en": "The reminder has been added successfully", "ar": "يضاف التذكير بنجاح"}, "reminderSuccess": {"en": "The reminder has been added successfully", "ar": "تمت إضافة التذكير بنجاح"},
"patientShareToDo": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"}, "patientShareToDo": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"},
"patientTaxToDo": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"}, "patientTaxToDo": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"},
"patientShareTotalToDo": {"en": "Total amount Due: ", "ar": "المبلغ الإجمالي المستحق:"}, "patientShareTotalToDo": {"en": "Total amount Due: ", "ar": "المبلغ الإجمالي المستحق:"},
@ -189,10 +188,10 @@ const Map localizedValues = {
"confirmed": {"en": "Confirmed", "ar": "مؤكد"}, "confirmed": {"en": "Confirmed", "ar": "مؤكد"},
"arrived": {"en": "Arrived", "ar": "تم الحضور"}, "arrived": {"en": "Arrived", "ar": "تم الحضور"},
"payNowBookSuccess": {"en": "Pay now via Al Habib App", "ar": "ادفع الآن عبر تطبيق الحبيب"}, "payNowBookSuccess": {"en": "Pay now via Al Habib App", "ar": "ادفع الآن عبر تطبيق الحبيب"},
"payNowBookSuccesstext1": {"en": "Pay Now using online payment service From secure payment gateways", "ar": "ادفع الآن باستخدام خدمة الدفع عبر الإنترنت من بوابات الدفع الآمنة"}, "payNowBookSuccesstext1": {"en": "Pay Now using online payment service from secure payment gateways", "ar": " ادفع الآن من خلال خدمة الدفع الالكتروني الآمنة"},
"payNowBookSuccesstext2": {"en": "You can also Pay Later via online payment Or in Hospital", "ar": "يمكنك أيضًا الدفع لاحقًا عبر الدفع عبر الإنترنت أو في المستشفى"}, "payNowBookSuccesstext2": {"en": "You can also Pay Later via online payment or in Hospital", "ar": "يمكنك أيضًا الدفع لاحقًا عبر الدفع الالكتروني أو في المستشفى"},
'payLater': {'en': 'Pay Later', 'ar': 'ادفع لاحقا'}, 'payLater': {'en': 'Pay Later', 'ar': 'ادفع لاحقا'},
'askDocNotAllowed': {'en': 'This service will be available for last 15 days doctor Visit only', 'ar': 'هذه الخدمة متاحة للزيارات خلال اخر 15 يوم فقط'}, 'askDocNotAllowed': {'en': 'This service will be available for last 15 days doctor Visit only', 'ar': 'هذه الخدمة متاحة للزيارات خلال اخر 15 يوم فقط'},
"more-verify": {"en": "More Verification Options", "ar": "المزيد من خيارات التحقق"}, "more-verify": {"en": "More Verification Options", "ar": "المزيد من خيارات التحقق"},
"welcome-back": {"en": "Welcome back!", "ar": "مرحبا بعودتك!"}, "welcome-back": {"en": "Welcome back!", "ar": "مرحبا بعودتك!"},
"account-info": {"en": "Would you like to login with current username?", "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"}, "account-info": {"en": "Would you like to login with current username?", "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"},
@ -229,6 +228,7 @@ const Map localizedValues = {
'heart': {'en': 'Heart Rate', 'ar': 'معدل النبض'}, 'heart': {'en': 'Heart Rate', 'ar': 'معدل النبض'},
"heightUnit": {"en": "height unit", "ar": "وحدة الطول"}, "heightUnit": {"en": "height unit", "ar": "وحدة الطول"},
"weightUnit": {"en": "Weight Unit", "ar": "وحدة الوزن"}, "weightUnit": {"en": "Weight Unit", "ar": "وحدة الوزن"},
"unit": {"en": "Unit", "ar": "وحدة"},
"request": {"en": "Request", "ar": "طلبات الاضافة"}, "request": {"en": "Request", "ar": "طلبات الاضافة"},
"member-name": {"en": "Member Name", "ar": "اسم العضو"}, "member-name": {"en": "Member Name", "ar": "اسم العضو"},
"switch-login": {"en": "Switch User", "ar": "تغير المستخدم"}, "switch-login": {"en": "Switch User", "ar": "تغير المستخدم"},
@ -236,7 +236,7 @@ const Map localizedValues = {
"allow-view": {"en": "Allow", "ar": "قبول"}, "allow-view": {"en": "Allow", "ar": "قبول"},
"reject-view": {"en": "Reject", "ar": "رفض"}, "reject-view": {"en": "Reject", "ar": "رفض"},
"delete-view": {"en": "Delete", "ar": "حذف"}, "delete-view": {"en": "Delete", "ar": "حذف"},
// "my-family": {"en": "MY FAMILY", "ar": "عائلتي"}, "my-family": {"en": "MY FAMILY", "ar": "عائلتي"},
"approvals": {"en": "Approvals", "ar": "موافقات التأمين"}, "approvals": {"en": "Approvals", "ar": "موافقات التأمين"},
"approvalNo": {"en": "Approval No:", "ar": "رقم الموافقة: "}, "approvalNo": {"en": "Approval No:", "ar": "رقم الموافقة: "},
"companyName": {"en": "Company Name:", "ar": "اسم الشركة: "}, "companyName": {"en": "Company Name:", "ar": "اسم الشركة: "},
@ -246,13 +246,13 @@ const Map localizedValues = {
"procedureName": {"en": "Procedure Name:", "ar": "اسم الاجراء:"}, "procedureName": {"en": "Procedure Name:", "ar": "اسم الاجراء:"},
"procedure": {"en": "Procedure", "ar": "اسم الاجراء:"}, "procedure": {"en": "Procedure", "ar": "اسم الاجراء:"},
"procedureStatus": {"en": "Procedure Status: ", "ar": "حالة الاجراء"}, "procedureStatus": {"en": "Procedure Status: ", "ar": "حالة الاجراء"},
"usageStatus": {"en": "Usage Status", "ar": "جالة الاستخدام"}, "usageStatus": {"en": "Usage Status", "ar": "حالة الاستخدام"},
"unusedCount": {"en": "Unused Count:", "ar": "غير مستخدم:"}, "unusedCount": {"en": "Unused Count:", "ar": "غير مستخدم:"},
"totalApproval": {"en": "Total approval unused", "ar": "اجمالي الموافقات الغير مستخدمة"}, "totalApproval": {"en": "Total approval unused", "ar": "اجمالي الموافقات الغير مستخدمة"},
"category": {"en": "Category: ", "ar": "الفئة"}, "category": {"en": "Category: ", "ar": "الفئة"},
"expirationDate": {"en": "Expiration Date: ", "ar": "تاريخ الانتهاء"}, "expirationDate": {"en": "Expiration Date: ", "ar": "تاريخ الانتهاء"},
"patientCard": {"en": "Patient Card ID: ", "ar": "رقم الاشتراك"}, "patientCard": {"en": "Patient Card ID: ", "ar": "رقم الاشتراك"},
"policyNumber": {"en": "Policy Number: ", "ar": "رقم بوليصة التاميت:"}, "policyNumber": {"en": "Policy Number: ", "ar": "رقم بوليصة التامين:"},
"seeDetails": {"en": "SEE DETAILS", "ar": "منافعك التامينية"}, "seeDetails": {"en": "SEE DETAILS", "ar": "منافعك التامينية"},
"insuranceCards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"}, "insuranceCards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"},
"requestType": {"en": "Request Type", "ar": "نوع الاستفسار"}, "requestType": {"en": "Request Type", "ar": "نوع الاستفسار"},
@ -260,14 +260,13 @@ const Map localizedValues = {
"remove-family-member": {"en": "Remove this member?", "ar": "إزالة ملف العضو؟"}, "remove-family-member": {"en": "Remove this member?", "ar": "إزالة ملف العضو؟"},
"MyMedicalFile": {"en": "My Medical File", 'ar': 'ملف الطبي الالكتروني'}, "MyMedicalFile": {"en": "My Medical File", 'ar': 'ملف الطبي الالكتروني'},
"myMedicalFileSubTitle": {"en": "All your medical records", 'ar': 'جميع سجلاتك الطبية'}, "myMedicalFileSubTitle": {"en": "All your medical records", 'ar': 'جميع سجلاتك الطبية'},
"viewMore": {"en": "View More", 'ar': 'عرض المزيد'}, "viewMore": {"en": "View More", 'ar': 'عرض المزيد'},
"homeHealthCareService": {"en": "Home Health Care Service", 'ar': 'الرعاية الصحية المنزلية'}, "homeHealthCareService": {"en": "Home Health Care Service", 'ar': 'الرعاية الصحية المنزلية'},
"OnlinePharmacy": {"en": "Online Pharmacy", 'ar': 'صيدليات الحبيب'}, "OnlinePharmacy": {"en": "Online Pharmacy", 'ar': 'صيدليات الحبيب'},
"EmergencyService": {"en": "Emergency Service", 'ar': 'الفحص الطبي الشامل'}, "EmergencyService": {"en": "Emergency Service", 'ar': 'الفحص الطبي الشامل'},
"OnlinePaymentService": {"en": "Online Payment Service", 'ar': 'خدمة الدفع الإلكتدوني'}, "OnlinePaymentService": {"en": "Online Payment Service", 'ar': 'خدمة الدفع الإلكتروني'},
"OffersAndPackages": {"en": "Online transfer request", 'ar': 'طلب التحويل الالكتروني'}, "OffersAndPackages": {"en": "Online transfer request", 'ar': 'طلب التحويل الالكتروني'},
"ComprehensiveMedicalCheckup": {"en": "Comprehensive Medical Check up", 'ar': 'فحص طبي شامل'}, "ComprehensiveMedicalCheckup": {"en": "Comprehensive Medical Check-up", 'ar': 'فحص طبي شامل'},
"HMGService": {"en": "HMG Service", 'ar': 'جميع خدمات الحبيب'}, "HMGService": {"en": "HMG Service", 'ar': 'جميع خدمات الحبيب'},
"ViewAllHabibMedicalService": {"en": "View All Habib Medical Service", 'ar': 'عرض خدمات الحبيب الطبية'}, "ViewAllHabibMedicalService": {"en": "View All Habib Medical Service", 'ar': 'عرض خدمات الحبيب الطبية'},
"viewAll": {"en": "View All", 'ar': 'عرض الكل'}, "viewAll": {"en": "View All", 'ar': 'عرض الكل'},
@ -282,10 +281,8 @@ const Map localizedValues = {
"en": "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.", "en": "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.",
"ar": "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك." "ar": "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك."
}, },
"user-view-requester": {"en": "User Wants to View Your Medical File", "ar": "أشخاص يرغبون في الاطلاع على ملفك الطبي"},
"user-view-requester": {"en": "User Wants To View Your Medical File", "ar": "أشخاص يرغبون الاطلاع على ملفك الطبي"}, "user-view": {"en": "User Can View Your Medical File", "ar": "أشخاص مصرح لهم الاطلاع على ملفك الطبي"},
"user-view": {"en": "User Can View Your Medical File", "ar": "أشخاص يمكنهم الاطلاع على ملفك الطبي"},
"parking": {"en": "Parking", "ar": "مواقف"}, "parking": {"en": "Parking", "ar": "مواقف"},
"alhabiServices": {"en": "HMG Service", "ar": "خدمات الحبيب"}, "alhabiServices": {"en": "HMG Service", "ar": "خدمات الحبيب"},
"parkingTitle": { "parkingTitle": {
@ -300,12 +297,12 @@ const Map localizedValues = {
"ar": "ar":
"خدمة المواقف، تتيح هذه الخدمة للمستخدم معلومات عن موقف السيارة ليسهل عليه العودة لها لاحقاً ، 1- بالضغط على زر (قراءة الكود) تستطيع حفظ البيانات الخاصة بالموقف. 2-بالضغط على زر(عرض موقف سيارتي) يعرض لك موقع السيارة في خرائط قوقل. 3- لإعادة قراءة موقف آخرعن طريق الضغط على زر(مسح بيانات الموقف)." "خدمة المواقف، تتيح هذه الخدمة للمستخدم معلومات عن موقف السيارة ليسهل عليه العودة لها لاحقاً ، 1- بالضغط على زر (قراءة الكود) تستطيع حفظ البيانات الخاصة بالموقف. 2-بالضغط على زر(عرض موقف سيارتي) يعرض لك موقع السيارة في خرائط قوقل. 3- لإعادة قراءة موقف آخرعن طريق الضغط على زر(مسح بيانات الموقف)."
}, },
"appointments": {"en": "Appointments", "ar": "تعيينات"}, "appointments": {"en": "Appointments", "ar": "مواعيد"},
"all2": {"en": "All", "ar": "الكل"}, "all2": {"en": "All", "ar": "الكل"},
"checkinOption": {"en": "Check-In Options", "ar": "تحقق في الخيارات"}, "checkinOption": {"en": "Check-In Options", "ar": "تحقق في الخيارات"},
"readBarcode": {"en": "Read Barcode", "ar": "قراءة الكود"}, "readBarcode": {"en": "Read Barcode", "ar": "قراءة الكود"},
"showMyPark": {"en": "Show My Park", "ar": "عرض بارك"}, "showMyPark": {"en": "Show My Park", "ar": "عرض الموقف"},
"clearMyData": {"en": "clear My Data", "ar": "امسح البيانات"}, "clearMyData": {"en": "Clear My Data", "ar": "امسح البيانات"},
"floor": {"en": "Floor:", "ar": "الطابق"}, "floor": {"en": "Floor:", "ar": "الطابق"},
"gate": {"en": "Gate:", "ar": "بوابة"}, "gate": {"en": "Gate:", "ar": "بوابة"},
"building": {"en": "Building:", "ar": "المبنى"}, "building": {"en": "Building:", "ar": "المبنى"},
@ -318,7 +315,7 @@ const Map localizedValues = {
"MyAppointments": {"en": "My", "ar": "مواعيدي"}, "MyAppointments": {"en": "My", "ar": "مواعيدي"},
"NoBookedAppointments": {"en": "No Booked Appointments", "ar": "لا توجد مواعيد محجوزة"}, "NoBookedAppointments": {"en": "No Booked Appointments", "ar": "لا توجد مواعيد محجوزة"},
"NoConfirmedAppointments": {"en": "No Confirmed Appointments", "ar": "لا توجد مواعيد مؤكدة"}, "NoConfirmedAppointments": {"en": "No Confirmed Appointments", "ar": "لا توجد مواعيد مؤكدة"},
"noArrivedAppointments": {"en": "No Arrived Appointments", "ar": "لم تصل المواعيد"}, "noArrivedAppointments": {"en": "No Arrived Appointments", "ar": "لم يتم حضورها"},
"MyAppointmentsList": {"en": "Appointments", "ar": "قائمة بمواعدي"}, "MyAppointmentsList": {"en": "Appointments", "ar": "قائمة بمواعدي"},
"Radiology": {"en": "Radiology", "ar": "الأشعة"}, "Radiology": {"en": "Radiology", "ar": "الأشعة"},
"RadiologySubtitle": {"en": "Result", "ar": "صور وتقارير"}, "RadiologySubtitle": {"en": "Result", "ar": "صور وتقارير"},
@ -350,19 +347,19 @@ const Map localizedValues = {
"MonthlySubtitle": {"en": "Report", "ar": "الشهرية"}, "MonthlySubtitle": {"en": "Report", "ar": "الشهرية"},
"Sick": {"en": "Sick", "ar": "الإجازات"}, "Sick": {"en": "Sick", "ar": "الإجازات"},
"SickSubtitle": {"en": "Leaves", "ar": "المرضية"}, "SickSubtitle": {"en": "Leaves", "ar": "المرضية"},
"MyBalance": {"en": "My Balance", "ar": "ارصدتي"}, "MyBalance": {"en": "My Balance", "ar": "رصيدي"},
"MyBalanceSubtitle": {"en": "Credit", "ar": "المبالغ"}, "MyBalanceSubtitle": {"en": "Credit", "ar": "المبالغ"},
"PatientCall": {"en": "Patient Call", "ar": "النداء للموعد"}, "PatientCall": {"en": "Patient Call", "ar": "النداء للموعد"},
"PatientCallSubtitle": {"en": "Service", "ar": "خدمة"}, "PatientCallSubtitle": {"en": "Service", "ar": "خدمة"},
"SmartWatches": {"en": "Smart Watches", "ar": "الساعة الذكية"}, "SmartWatches": {"en": "Smart Watches", "ar": "الساعات الذكية"},
"SmartWatchesSubtitle": {"en": "Pairing", "ar": "ربط البيانات"}, "SmartWatchesSubtitle": {"en": "Pairing", "ar": "ربط البيانات"},
"MyTrackers": {"en": "My Trackers", "ar": "تتبع قراءاتي"}, "MyTrackers": {"en": "My Trackers", "ar": "تتبع قراءاتي"},
"MyTrackersSubtitle": {"en": "Service", "ar": "الطبية"}, "MyTrackersSubtitle": {"en": "Service", "ar": "الطبية"},
"AskYour": {"en": "Ask Your", "ar": "إرسل طبيبك"}, "AskYour": {"en": "Ask Your", "ar": "إسال طبيبك"},
"AskYourSubtitle": {"en": "Doctor", "ar": "خدمة"}, "AskYourSubtitle": {"en": "Doctor", "ar": "خدمة"},
"Internet": {"en": "Internet", "ar": "الاتصال"}, "Internet": {"en": "Internet", "ar": "الاتصال"},
"InternetSubtitle": {"en": "Pairing", "ar": "بالإنترنت"}, "InternetSubtitle": {"en": "Pairing", "ar": "بالإنترنت"},
"Chatbot": {"en": "Chatbot", "ar": "تاشت بوت"}, "Chatbot": {"en": "Chatbot", "ar": "شات بوت"},
"ChatbotSubtitle": {"en": "", "ar": ""}, "ChatbotSubtitle": {"en": "", "ar": ""},
"TimeLine": {"en": "Timeline", "ar": "الجدول الزمني"}, "TimeLine": {"en": "Timeline", "ar": "الجدول الزمني"},
"LabOrders": {"en": "Lab Orders", "ar": "تحاليل المختبر"}, "LabOrders": {"en": "Lab Orders", "ar": "تحاليل المختبر"},
@ -379,18 +376,18 @@ const Map localizedValues = {
"km": {"en": "KMs:", "ar": "كم"}, "km": {"en": "KMs:", "ar": "كم"},
"km_": {"en": "KM", "ar": "كم"}, "km_": {"en": "KM", "ar": "كم"},
"PatientHealthSummaryReport": {"en": "Patient Health Summary Report", "ar": " ملخص التقارير الشهرية"}, "PatientHealthSummaryReport": {"en": "Patient Health Summary Report", "ar": " ملخص التقارير الشهرية"},
"ToViewTheTermsAndConditions": {"en": "To View The Terms And Conditions Report", "ar": " عرض الشروط والأحكام "}, "ToViewTheTermsAndConditions": {"en": "To View the Terms and Conditions Report", "ar": " عرض الشروط والأحكام "},
"ClickHere": {"en": "Click here", "ar": "أنقر هنا"}, "ClickHere": {"en": "Click here", "ar": "أنقر هنا"},
"IAgreeToTheTermsAndConditions": {"en": "I agree to the terms and conditions ", "ar": "أوافق على الشروط والاحكام "}, "IAgreeToTheTermsAndConditions": {"en": "I agree to the terms and conditions ", "ar": "موافق على الشروط والاحكام "},
"IAgreeToTheTermsAndConditionsSubtitle": { "IAgreeToTheTermsAndConditionsSubtitle": {
"en": "I agree to the terms and conditions ", "en": "I agree to the terms and conditions ",
"ar": "ar":
"هذا ملخص التقرير الصحي الشهري و الذي يسرد المؤشرات الصحية و نتائج التحاليل لأخر الزيارات. يرجى ملاحظة أن هذا التقرير هو تقرير يتم ارساله بشكل آلي من النظام و لا يعتبر رسمي و لا تؤخذ عليه أي قرارات طبية" "هذا ملخص التقرير الصحي الشهري و الذي يسرد المؤشرات الصحية و نتائج التحاليل لأخر الزيارات. يرجى ملاحظة أن هذا التقرير يتم ارساله بشكل آلي من النظام و لا يعتبر رسمي و لا تؤخذ عليه أي قرارات طبية"
}, },
"Save": {"en": "Save", "ar": "حفظ "}, "Save": {"en": "Save", "ar": "حفظ "},
"UserAgreement": {"en": "User Agreement", "ar": "اتفاقية الخصوصية "}, "UserAgreement": {"en": "User Agreement", "ar": "اتفاقية الخصوصية "},
"UpdateSuccessfully": {"en": "Update Successfully", "ar": "تم التحديث بنجاح"}, "UpdateSuccessfully": {"en": "Update Successfully", "ar": "تم التحديث بنجاح"},
"CHECK_VACCINE_AVAILABILITY": {"en": "CHECK VACCINE AVAILABILITY", "ar": "تحقق من توافر اللقاح"}, "CHECK_VACCINE_AVAILABILITY": {"en": "CHECK VACCINE AVAILABILITY", "ar": "التحقق من توفر اللقاح"},
"MyVaccinesAvailability": {"en": "MyVaccinesAvailability", "ar": "توفر لقاحي"}, "MyVaccinesAvailability": {"en": "MyVaccinesAvailability", "ar": "توفر لقاحي"},
"PaymentService": {"en": "Payment Service", "ar": "خدمة المدفوعات"}, "PaymentService": {"en": "Payment Service", "ar": "خدمة المدفوعات"},
"PaymentOnline": {"en": "Service", "ar": "الالكتروني"}, "PaymentOnline": {"en": "Service", "ar": "الالكتروني"},
@ -399,9 +396,8 @@ const Map localizedValues = {
"BalanceAmount": {"en": "Wallet Amount", "ar": "مبلغ المحفظة"}, "BalanceAmount": {"en": "Wallet Amount", "ar": "مبلغ المحفظة"},
"TotalBalance": {"en": "Total Amount", "ar": "المبلغ الإجمالي"}, "TotalBalance": {"en": "Total Amount", "ar": "المبلغ الإجمالي"},
"CreateAdvancedPayment": {"en": "Recharge Wallet", "ar": "إعادة شحن المحفظة"}, "CreateAdvancedPayment": {"en": "Recharge Wallet", "ar": "إعادة شحن المحفظة"},
"AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"}, "AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"},
"AdvancePaymentLabel": {"en": "You can create and add an Advanced Payment for you account or other accounts.", "ar": "يمكنك تحويل مبلغ لحسابك لدى المجموعة أو لحساب احد المراجعين"}, "AdvancePaymentLabel": {"en": "You can create and add an Advanced Payment for your account or other accounts.", "ar": "يمكنك تحويل مبلغ لحسابك لدى المجموعة أو لحساب احد المراجعين"},
"FileNumber": {"en": "File Number", "ar": "رقم الملف"}, "FileNumber": {"en": "File Number", "ar": "رقم الملف"},
"Amount": {"en": "Amount *", "ar": "المبلغ *"}, "Amount": {"en": "Amount *", "ar": "المبلغ *"},
"DepositorEmail": {"en": "Depositor Email *", "ar": "البريد الإلكتروني للمودع *"}, "DepositorEmail": {"en": "Depositor Email *", "ar": "البريد الإلكتروني للمودع *"},
@ -422,7 +418,7 @@ const Map localizedValues = {
"averageWaitingTime": {"en": "Average Waiting Time:", "ar": "متوسط ​​وقت الانتظار:"}, "averageWaitingTime": {"en": "Average Waiting Time:", "ar": "متوسط ​​وقت الانتظار:"},
"WaterConsumedInWeek": {"en": "Water consumed in a week", "ar": "معدل شرب الماء خلال الاسبوع"}, "WaterConsumedInWeek": {"en": "Water consumed in a week", "ar": "معدل شرب الماء خلال الاسبوع"},
"WaterConsumedInMonth": {"en": "Water consumed in a month", "ar": "معدل شرب الماء خلال الشهر"}, "WaterConsumedInMonth": {"en": "Water consumed in a month", "ar": "معدل شرب الماء خلال الشهر"},
"TheVerificationCodeExpiresIn": {"en": "The Verification Code Expires In", "ar": "تنتهي صلاحية رمز التحقق في"}, "TheVerificationCodeExpiresIn": {"en": "The Verification Code Expires in", "ar": "تنتهي صلاحية رمز التحقق في"},
"PleaseEnterTheVerificationCode": {"en": "Please enter the verification code send to", "ar": "الرجاء إدخال رمز التحقق المرسل إلى"}, "PleaseEnterTheVerificationCode": {"en": "Please enter the verification code send to", "ar": "الرجاء إدخال رمز التحقق المرسل إلى"},
"EyeMeasurements": {"en": "Eye Measurements", "ar": "قياسات النظر"}, "EyeMeasurements": {"en": "Eye Measurements", "ar": "قياسات النظر"},
"Measurements": {"en": "Measurements", "ar": "قياسات"}, "Measurements": {"en": "Measurements", "ar": "قياسات"},
@ -438,7 +434,7 @@ const Map localizedValues = {
"Brand": {"en": "Brand", "ar": "النوع"}, "Brand": {"en": "Brand", "ar": "النوع"},
"Power": {"en": "Power", "ar": "القوة"}, "Power": {"en": "Power", "ar": "القوة"},
"Diameter": {"en": "Diameter", "ar": "القطر"}, "Diameter": {"en": "Diameter", "ar": "القطر"},
"Remarks": {"en": "Remarks", "ar": "ملاحضات"}, "Remarks": {"en": "Remarks", "ar": "ملاحظات"},
"ActiveMedications": {"en": "Active Medications", "ar": "ادويتي النشطة"}, "ActiveMedications": {"en": "Active Medications", "ar": "ادويتي النشطة"},
"ExpDate": {"en": "Active Exp Date :", "VA": "تاريخ الإنتهاء"}, "ExpDate": {"en": "Active Exp Date :", "VA": "تاريخ الإنتهاء"},
"Route": {"en": "Route", "ar": "الطريقة"}, "Route": {"en": "Route", "ar": "الطريقة"},
@ -483,17 +479,16 @@ const Map localizedValues = {
"en": "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.", "en": "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.",
"ar": "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل." "ar": "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل."
}, },
"noReviewsAvailable": {"en": "No Reviews Available", "ar": "لا يوجد تقييمات"}, "noReviewsAvailable": {"en": "No Reviews Available", "ar": "لا يوجد تقييمات"},
"noLocationAvailable": {"en": "No Location Available", "ar": "لا يوجد موقع"}, "noLocationAvailable": {"en": "No Location Available", "ar": "لا يوجد موقع"},
"orders": {"en": "Orders", "ar": "الطلبات"}, "orders": {"en": "Orders", "ar": "الطلبات"},
"lakum": {"en": "Lakum", "ar": "لكم"}, "lakum": {"en": "Lakum", "ar": "برنامج لكم"},
"wishlist": {"en": "Wishlist", "ar": "المفضلة"}, "wishlist": {"en": "Wishlist", "ar": "المفضلة"},
"products": {"en": "Products", "ar": "المنتجات"}, "products": {"en": "Products", "ar": "المنتجات"},
"reviews": {"en": "Reviews", "ar": "التقيمات"}, "reviews": {"en": "Reviews", "ar": "التقيمات"},
"brands": {"en": "Brands", "ar": "العلامات التجارية"}, "brands": {"en": "Brands", "ar": "العلامات التجارية"},
"productDetails": {"en": "Product Details", "ar": "تفاصيل المنتج"}, "productDetails": {"en": "Product Details", "ar": "تفاصيل المنتج"},
// "medicationRefill": {"en": "Medication Refill", "ar": "تعبئة الأدوية"}, "medicationRefill": {"en": "Medication Refill", "ar": "تعبئة الأدوية"},
"pillReminder": {"en": "Pill Reminder", "ar": "تذكير الأدويه"}, "pillReminder": {"en": "Pill Reminder", "ar": "تذكير الأدويه"},
"shippingAddresses": {"en": "Shipping Addresses", "ar": "عناوين الشحن"}, "shippingAddresses": {"en": "Shipping Addresses", "ar": "عناوين الشحن"},
"reachUs": {"en": "Reach Us", "ar": "الوصول لنا"}, "reachUs": {"en": "Reach Us", "ar": "الوصول لنا"},
@ -505,7 +500,7 @@ const Map localizedValues = {
"order": {"en": "My Order", "ar": " طلباتي"}, "order": {"en": "My Order", "ar": " طلباتي"},
"delivered": {"en": "Delivered", "ar": " تم التوصيل"}, "delivered": {"en": "Delivered", "ar": " تم التوصيل"},
"pending": {"en": "Pending", "ar": " معلقة "}, "pending": {"en": "Pending", "ar": " معلقة "},
"enterNameHere": {"en": "Enter the name here", "ar": " أدخل الاسم هنا "}, "enterNameHere": {"en": "Enter Your Name", "ar": "أدخل أسمك"},
"processing": {"en": "Processing", "ar": " تحت المعالجة"}, "processing": {"en": "Processing", "ar": " تحت المعالجة"},
"cancelled": {"en": "Cancelled", "ar": " ملغي"}, "cancelled": {"en": "Cancelled", "ar": " ملغي"},
"writeReview": {"en": "Write Review", "ar": " اكتب تقييمك"}, "writeReview": {"en": "Write Review", "ar": " اكتب تقييمك"},
@ -525,7 +520,6 @@ const Map localizedValues = {
"HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"}, "HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"},
"ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"}, "ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"},
"services2": {"en": "Services", "ar": "خدمات"}, "services2": {"en": "Services", "ar": "خدمات"},
"comprehensive": {"en": "Comprehensive", "ar": "شامل"}, "comprehensive": {"en": "Comprehensive", "ar": "شامل"},
"onlineConsulting": {"en": "Online Consulting", "ar": "استشارات عبر الإنترنت"}, "onlineConsulting": {"en": "Online Consulting", "ar": "استشارات عبر الإنترنت"},
"pendingOrder": {"en": " PENDING", "ar": " معلقة"}, "pendingOrder": {"en": " PENDING", "ar": " معلقة"},
@ -534,7 +528,7 @@ const Map localizedValues = {
"cancelledOrder": {"en": " CANCELLED", "ar": "ملغي"}, "cancelledOrder": {"en": " CANCELLED", "ar": "ملغي"},
"compare": {"en": " Compare", "ar": "مقارنه"}, "compare": {"en": " Compare", "ar": "مقارنه"},
"medicationsRefill": {"en": " Medication Refill", "ar": "طلب أعادة صرف"}, "medicationsRefill": {"en": " Medication Refill", "ar": "طلب أعادة صرف"},
"recommended": {"en": " Recommended For You", "ar": "موصى لك"}, "recommended": {"en": " Recommended for You", "ar": "موصى لك"},
"myPrescription": {"en": " My Prescriptions", "ar": "وصفاتي"}, "myPrescription": {"en": " My Prescriptions", "ar": "وصفاتي"},
"quantity": {"en": " QTY ", "ar": "الكمية"}, "quantity": {"en": " QTY ", "ar": "الكمية"},
"reviewAppointment": {"en": " Review Appointment ", "ar": "مراجعة الموعد"}, "reviewAppointment": {"en": " Review Appointment ", "ar": "مراجعة الموعد"},
@ -548,7 +542,7 @@ const Map localizedValues = {
"subtotal": {"en": "Subtotal", "ar": " المجموع الفرعي"}, "subtotal": {"en": "Subtotal", "ar": " المجموع الفرعي"},
"shipping": {"en": "Shipping", "ar": " الشحن"}, "shipping": {"en": "Shipping", "ar": " الشحن"},
"shipBy": {"en": "SHIP BY:", "ar": "الشحن عن طريق:"}, "shipBy": {"en": "SHIP BY:", "ar": "الشحن عن طريق:"},
"lakumPoints": {"en": "Lakum Points", "ar": "نقاط لكم"}, "lakumPoints": {"en": "Lakum Points", "ar": "نقاط برنامج لكم"},
"use": {"en": "USE", "ar": "استخدم"}, "use": {"en": "USE", "ar": "استخدم"},
"proceedPay": {"en": "PROCEED TO PAY", "ar": "المتابعة للدفع"}, "proceedPay": {"en": "PROCEED TO PAY", "ar": "المتابعة للدفع"},
"vat": {"en": "VAT (15%)", "ar": "(15%) القيمة المضافة"}, "vat": {"en": "VAT (15%)", "ar": "(15%) القيمة المضافة"},
@ -561,17 +555,16 @@ const Map localizedValues = {
"confirmAddress": {"en": "CONFIRM ADDRESS ", "ar": " تأكيد العنوان "}, "confirmAddress": {"en": "CONFIRM ADDRESS ", "ar": " تأكيد العنوان "},
"confirmLocation": {"en": "CONFIRM LOCATION ", "ar": " تأكيد الموقع "}, "confirmLocation": {"en": "CONFIRM LOCATION ", "ar": " تأكيد الموقع "},
"conditionsHMG": {"en": "Terms & Conditions ", "ar": "الشروط و الأحكام "}, "conditionsHMG": {"en": "Terms & Conditions ", "ar": "الشروط و الأحكام "},
"conditions": {"en": "Terms & Conditions of Lakum", "ar": "شروط و احكام لكم"}, "conditions": {"en": "Terms & Conditions of Lakum", "ar": "شروط واحكام برنامج لكم"},
"confirmDeleteMsg": {"en": "Are you sure! want to delete ", "ar": "هل انت متأكد تريد الحذف "}, "confirmDeleteMsg": {"en": "Are you sure! want to delete ", "ar": "هل انت متأكد من الحذف "},
"confirmDelete": {"en": "DELETE", "ar": "حذف"}, "confirmDelete": {"en": "DELETE", "ar": "حذف"},
"confirmCancellation": {"en": "Are you sure! want to cancel this order ", "ar": "هل انت متأكد تريد حذف هذا المنتج "}, "confirmCancellation": {"en": "Are you sure! want to cancel this order ", "ar": "هل انت متأكد من حذف هذا المنتج "},
"orderNumber": {"en": "Order#: ", "ar": "الطلب: "}, "orderNumber": {"en": "Order#: ", "ar": "الطلب: "},
"orderDate": {"en": "Date", "ar": "التاريخ:"}, "orderDate": {"en": "Date", "ar": "التاريخ:"},
"itemsNo": {"en": "items(s)", "ar": "عناصر"}, "itemsNo": {"en": "items(s)", "ar": "عناصر"},
"noOrder": {"en": "You Don't have any orders.", "ar": "ليس لديك طلبات"}, "noOrder": {"en": "You Don't have any orders.", "ar": "ليس لديك طلبات"},
"noResult": {"en": "No Result.", "ar": "لايوجد نتئج"}, "noResult": {"en": "No Result.", "ar": "لا يوجد نتائج"},
"nonRecommended": {"en": "No Recommended Products.", "ar": "لا يوجد منتجات"}, "nonRecommended": {"en": "No Recommended Products.", "ar": "لا يوجد منتجات"},
"TermsService": {"en": "Terms of Service", "ar": "شروط الخدمه"}, "TermsService": {"en": "Terms of Service", "ar": "شروط الخدمه"},
"Beforeusing": {"en": "Before using the checkup, please read Terms of Service.", "ar": "قبل استخدام الفحص ، يرجى قراءة شروط الخدمة"}, "Beforeusing": {"en": "Before using the checkup, please read Terms of Service.", "ar": "قبل استخدام الفحص ، يرجى قراءة شروط الخدمة"},
"accept": {"en": "I read and accept Terms of Service and Privacy Policy", "ar": "قرأت ووافقت على شروط الخدمة وسياسة الخصوصية"}, "accept": {"en": "I read and accept Terms of Service and Privacy Policy", "ar": "قرأت ووافقت على شروط الخدمة وسياسة الخصوصية"},
@ -584,29 +577,26 @@ const Map localizedValues = {
"check-diagnosis": {"en": "Checkup is not a diagnosis.", "ar": "الفحص ليس تشخيص."}, "check-diagnosis": {"en": "Checkup is not a diagnosis.", "ar": "الفحص ليس تشخيص."},
"remeberthat": {"en": "Remember that", "ar": "تذكر ذلك:"}, "remeberthat": {"en": "Remember that", "ar": "تذكر ذلك:"},
"loginToUseService": {"en": "You need to login to use this service", "ar": "هذة الخدمة تتطلب تسجيل الدخول"}, "loginToUseService": {"en": "You need to login to use this service", "ar": "هذة الخدمة تتطلب تسجيل الدخول"},
// pharmacy module
"medicationRefill": {"en": "MEDICATION REFILL", "ar": "إعادة تعبئة الدواء"},
"offersAndPromotions": {"en": "OFFERS & SPECIAL PROMOTIONS", "ar": "العروض والترقيات الخاصة"}, "offersAndPromotions": {"en": "OFFERS & SPECIAL PROMOTIONS", "ar": "العروض والترقيات الخاصة"},
"myPrescriptions": {"en": "MY PRESCRIPTIONS", "ar": "وصفاتي"}, "myPrescriptions": {"en": "MY PRESCRIPTIONS", "ar": "وصفاتي"},
"searchAndScanMedication": {"en": "SEARCH & SCAN FOR MEDICATION", "ar": "البحث والمسح للأدوية"}, "searchAndScanMedication": {"en": "SEARCH & SCAN FOR MEDICATION", "ar": "البحث والمسح للأدوية"},
"shopByBrands": {"en": "Shop By Brands", "ar": "تسوق حسب الماركات"}, "shopByBrands": {"en": "Shop by Brands", "ar": "تسوق حسب الماركات"},
"recentlyViewed": {"en": "Recently Viewed", "ar": "شوهدت مؤخرا"}, "recentlyViewed": {"en": "Recently Viewed", "ar": "شوهدت مؤخرا"},
"bestSellers": {"en": "Best Seller", "ar": "الأكثر مبيعأ"}, "bestSellers": {"en": "Best Seller", "ar": "الأكثر مبيعأ"},
"deleteAllItems": {"en": "Delete All Items", "ar": "حذف كافة العناصر"}, "deleteAllItems": {"en": "Delete All Items", "ar": "حذف كافة العناصر"},
"total": {"en": "Total", "ar": "المجموع"}, "total": {"en": "Total", "ar": "المجموع"},
"totalWithColonRight": {"en": "Total:", "ar": ":المجموع"}, "totalWithColonRight": {"en": "Total:", "ar": "المجموع"},
"selectAddress": {"en": "Select Address", "ar": "حدد العنوان"}, "selectAddress": {"en": "Select Address", "ar": "حدد العنوان"},
"shippingAddress": {"en": "SHIPPING ADDRESS", "ar": "عنوان الشحن"}, "shippingAddress": {"en": "SHIPPING ADDRESS", "ar": "عنوان الشحن"},
"changeAddress": {"en": "Change Address", "ar": "تغيير العنوان"}, "changeAddress": {"en": "Change Address", "ar": "تغيير العنوان"},
"selectPaymentOption": {"en": "Select Payment Option", "ar": "حدد خيار الدفع"}, "selectPaymentOption": {"en": "Select Payment Option", "ar": "حدد طريقة الدفع"},
"changeMethod": {"en": "Change Method", "ar": "تغيير خيار الدفع"}, "changeMethod": {"en": "Change Method", "ar": "تغيير طريقة الدفع"},
"reviewOrder": {"en": "Review Order", "ar": "مراجعة الطلب"}, "reviewOrder": {"en": "Review Order", "ar": "مراجعة الطلب"},
"active": {"en": "ACTIVE", "ar": "فعال"}, "active": {"en": "ACTIVE", "ar": "فعال"},
"inactive": {"en": "INACTIVE", "ar": "غير فعال"}, "inactive": {"en": "INACTIVE", "ar": "غير فعال"},
"balance": {"en": "BALANCE", "ar": "الحالي"}, "balance": {"en": "BALANCE", "ar": "الحالي"},
"gained": {"en": "GAINED", "ar": "المكتسب"}, "gained": {"en": "GAINED", "ar": "المكتسب"},
"consumed": {"en": "CONSUMED", "ar": "المستهلك"}, "consumed": {"en": "Consumed", "ar": "المستهلك"},
"transferred": {"en": "TRANSFERRED", "ar": "المحول"}, "transferred": {"en": "TRANSFERRED", "ar": "المحول"},
"checkBeneficiary": {"en": "CHECK BENEFICIARY", "ar": "تحقق من المستفيد"}, "checkBeneficiary": {"en": "CHECK BENEFICIARY", "ar": "تحقق من المستفيد"},
"beneficiaryName": {"en": "Beneficiary Name", "ar": "اسم المستفيد"}, "beneficiaryName": {"en": "Beneficiary Name", "ar": "اسم المستفيد"},
@ -619,7 +609,7 @@ const Map localizedValues = {
"i-am": {"en": "I am", "ar": "أنا"}, "i-am": {"en": "I am", "ar": "أنا"},
"years-old": {"en": "years old", "ar": "سنة"}, "years-old": {"en": "years old", "ar": "سنة"},
"drag-point": {"en": "Drag point to change your age", "ar": "اسحب لتغيير عمرك"}, "drag-point": {"en": "Drag point to change your age", "ar": "اسحب لتغيير عمرك"},
"refine": {"en": "Refine", "ar": "refine"}, "refine": {"en": "Refine", "ar": "تصفية"},
"reset": {"en": "Reset", "ar": "اعادة تعيين"}, "reset": {"en": "Reset", "ar": "اعادة تعيين"},
"apply": {"en": "Apply", "ar": "تطبيق"}, "apply": {"en": "Apply", "ar": "تطبيق"},
"viewCategorise": {"en": "View All Categories", "ar": "عرض جميع الفئات"}, "viewCategorise": {"en": "View All Categories", "ar": "عرض جميع الفئات"},
@ -627,7 +617,7 @@ const Map localizedValues = {
"wishList": {"en": "WishList", "ar": "المفضلة"}, "wishList": {"en": "WishList", "ar": "المفضلة"},
"myAccount": {"en": "My Account", "ar": "حسابي"}, "myAccount": {"en": "My Account", "ar": "حسابي"},
"cart": {"en": "Cart", "ar": "التسوق"}, "cart": {"en": "Cart", "ar": "التسوق"},
"Alhabibapp": {"en": "Al habib app", "ar": "تطبيق الحبيب"}, "Alhabibapp": {"en": "Al Habib app", "ar": "تطبيق الحبيب"},
"searchProductHere": {"en": "Search Product here", "ar": "البحث عن منتج"}, "searchProductHere": {"en": "Search Product here", "ar": "البحث عن منتج"},
"HHCNotAuthMsg": { "HHCNotAuthMsg": {
"en": "en":
@ -645,7 +635,6 @@ const Map localizedValues = {
"notifications": {"en": "Notifications", "ar": "إشعارات"}, "notifications": {"en": "Notifications", "ar": "إشعارات"},
"notificationDetails": {"en": "Notification Details", "ar": "تفاصيل الاشعار"}, "notificationDetails": {"en": "Notification Details", "ar": "تفاصيل الاشعار"},
"notificationDetailsa": {"en": "Notification Details", "ar": "تفاصيل الاشعار"}, "notificationDetailsa": {"en": "Notification Details", "ar": "تفاصيل الاشعار"},
"info-my-doctor-points": { "info-my-doctor-points": {
"en": [ "en": [
"View the doctor's profile and qualifications.", "View the doctor's profile and qualifications.",
@ -683,12 +672,10 @@ const Map localizedValues = {
"الاطلاع على اسعار الادوية المصروفة." "الاطلاع على اسعار الادوية المصروفة."
] ]
}, },
"info-insurance-cards": { "info-insurance-cards": {
"en": "This service allows you to view all the insurance cards that recorded during your visits to Al Habib Medical Group in addition to:", "en": "This service allows you to view all the insurance cards that recorded during your visits to Al Habib Medical Group in addition to:",
"ar": "خدمة بطاقات التامين: هذه الخدمة تمكنك من الاطلاع على جميع بطاقات التامين والتي تم تسجيلها اثناء زياراتك لمجموعة الحبيب الطبية بالاضافة الى:" "ar": "خدمة بطاقات التامين: هذه الخدمة تمكنك من الاطلاع على جميع بطاقات التامين والتي تم تسجيلها اثناء زياراتك لمجموعة الحبيب الطبية بالاضافة الى:"
}, },
"info-insurance-cards-points": { "info-insurance-cards-points": {
"en": [ "en": [
"Name of the insurance company.", "Name of the insurance company.",
@ -707,14 +694,11 @@ const Map localizedValues = {
"تفاصيل التامين، مثلاً: مستوى الغرفة التي يغطيها التامين وكذلك الحالات التي يغطيها التامين.", "تفاصيل التامين، مثلاً: مستوى الغرفة التي يغطيها التامين وكذلك الحالات التي يغطيها التامين.",
] ]
}, },
"info-allergies": { "info-allergies": {
"en": "This service allows you to view all types of allergies recorded during your visits to Al Habib Medical Group.", "en": "This service allows you to view all types of allergies recorded during your visits to Al Habib Medical Group.",
"ar": "خدمة الحساسية: هذه الخدمة تمكنك من الاطلاع على جميع انواع الحساسية التي تم تسجيلها خلال زياراتك في مجموعة الحبيب الطبية." "ar": "خدمة الحساسية: هذه الخدمة تمكنك من الاطلاع على جميع انواع الحساسية التي تم تسجيلها خلال زياراتك في مجموعة الحبيب الطبية."
}, },
"sick-leaves": {"en": "Sick Leaves", "ar": "الاجازات المرضية"}, "sick-leaves": {"en": "Sick Leaves", "ar": "الاجازات المرضية"},
"info-sick-leaves": { "info-sick-leaves": {
"en": "This service allows you to view all sick leaves that were taken in Al Habib Medical Group in addition to:", "en": "This service allows you to view all sick leaves that were taken in Al Habib Medical Group in addition to:",
"ar": "الاجازات المرضية: هذه الخدمة تمكنك من الاطلاع على جميع الاجازات المرضية والتي تم اصدارها في مجموعة الحبيب الطبية بالاضافة الى:" "ar": "الاجازات المرضية: هذه الخدمة تمكنك من الاطلاع على جميع الاجازات المرضية والتي تم اصدارها في مجموعة الحبيب الطبية بالاضافة الى:"
@ -729,12 +713,10 @@ const Map localizedValues = {
], ],
"ar": ["اسم الطبيب", "تاريخ الاجازة.", "عدد ايام الاجازة.", "الفرع الذي تم اصدار الاجازة منه.", "ارسال نسخة مختومة من الاجازة الى البريد الالكتروني."] "ar": ["اسم الطبيب", "تاريخ الاجازة.", "عدد ايام الاجازة.", "الفرع الذي تم اصدار الاجازة منه.", "ارسال نسخة مختومة من الاجازة الى البريد الالكتروني."]
}, },
"info-approvals": { "info-approvals": {
"en": "This service allows you to view all approvals requests that have been sent to the insurance companies in addition to:", "en": "This service allows you to view all approvals requests that have been sent to the insurance companies in addition to:",
"ar": "خدمة الموافقات: هذه الخدمة تمكنك من الاطلاع على جميع طلبات الموافقات والتي تم ارسالها الى شركات التامين بالاضافة الى:" "ar": "خدمة الموافقات: هذه الخدمة تمكنك من الاطلاع على جميع طلبات الموافقات والتي تم ارسالها الى شركات التامين بالاضافة الى:"
}, },
"info-approval-points": { "info-approval-points": {
"en": [ "en": [
"View the total unused approvals.", "View the total unused approvals.",
@ -745,7 +727,6 @@ const Map localizedValues = {
"تتبع حالة الموافقة.", "تتبع حالة الموافقة.",
] ]
}, },
"month-report": {"en": "Monthly Reports", "ar": "تقاريري الشهرية"}, "month-report": {"en": "Monthly Reports", "ar": "تقاريري الشهرية"},
"info-month-report": { "info-month-report": {
"en": "en":
@ -754,8 +735,8 @@ const Map localizedValues = {
}, },
"language-setting": {"en": "SMS and Confirmation Calls Language", "ar": "لغة الرسائل القصيرة و الاتصال الآلي"}, "language-setting": {"en": "SMS and Confirmation Calls Language", "ar": "لغة الرسائل القصيرة و الاتصال الآلي"},
"alert": {"en": "Alerts", "ar": "التنبيهات"}, "alert": {"en": "Alerts", "ar": "التنبيهات"},
"email-alert": {"en": "Alert By Email", "ar": "استلام التنبيهات بالبريد الالكتروني"}, "email-alert": {"en": "Alert by Email", "ar": "استلام التنبيهات بالبريد الالكتروني"},
"sms-alert": {"en": "Alert By SMS", "ar": "استلام التنبيهات بالرسائل القصيرة"}, "sms-alert": {"en": "Alert by SMS", "ar": "استلام التنبيهات بالرسائل القصيرة"},
"contact-info": {"en": "Contact Information", "ar": "معلومات التواصل"}, "contact-info": {"en": "Contact Information", "ar": "معلومات التواصل"},
"emrg-name": {"en": "Emergency Contact Name", "ar": "اسم للتواصل في حالة الطوارئ"}, "emrg-name": {"en": "Emergency Contact Name", "ar": "اسم للتواصل في حالة الطوارئ"},
"emrg-no": {"en": "Emergency Contact Number", "ar": "رقم للتواصل في حالة الطوارئ"}, "emrg-no": {"en": "Emergency Contact Number", "ar": "رقم للتواصل في حالة الطوارئ"},
@ -769,7 +750,6 @@ const Map localizedValues = {
"permissions": {"en": "Permission", "ar": "الصلاحيات"}, "permissions": {"en": "Permission", "ar": "الصلاحيات"},
"camera-permission": {"en": "Camera", "ar": "الكاميرا"}, "camera-permission": {"en": "Camera", "ar": "الكاميرا"},
"location-permission": {"en": "Location", "ar": "تحديد المواقع"}, "location-permission": {"en": "Location", "ar": "تحديد المواقع"},
"accessibility": {"en": "Accessibility Mode", "ar": "وضع امكانية الوصول"}, "accessibility": {"en": "Accessibility Mode", "ar": "وضع امكانية الوصول"},
"orderStatus": {"en": "Order Status", "ar": "حالة الطلب"}, "orderStatus": {"en": "Order Status", "ar": "حالة الطلب"},
"CancelOrder": {"en": "Cancel Order", "ar": "الغاء الطلب"}, "CancelOrder": {"en": "Cancel Order", "ar": "الغاء الطلب"},
@ -779,12 +759,12 @@ const Map localizedValues = {
"Service": {"en": "Service", "ar": "خدمة"}, "Service": {"en": "Service", "ar": "خدمة"},
"HMGServiceLabel": {"en": "HMG Service", 'ar': 'خدمات الحبيب'}, "HMGServiceLabel": {"en": "HMG Service", 'ar': 'خدمات الحبيب'},
"HealthWeatherIndicators": {"en": "Health Weather Indicators", 'ar': ' مؤشرات الطقس الصحية '}, "HealthWeatherIndicators": {"en": "Health Weather Indicators", 'ar': ' مؤشرات الطقس الصحية '},
"HealthTipsBasedOnCurrentWeather": {"en": "Health Tips Based On Current Weather", 'ar': ' نصائح صحية على أساس الطقس الحالي '}, "HealthTipsBasedOnCurrentWeather": {"en": "Health Tips Based On Current Weather", 'ar': ' نصائح صحية بناءاً على الطقس الحالي '},
"MoreDetails": {"en": "More details", "ar": " المزيد من التفاصيل "}, "MoreDetails": {"en": "More details", "ar": " المزيد من التفاصيل "},
"SendCopy": {"en": "Send Copy", "ar": "ارسال نسخة"}, "SendCopy": {"en": "Send Copy", "ar": "ارسال نسخة"},
"ResendOrder": {"en": "Refill Order & Delivery", "ar": "إعادة طلب و توصيل"}, "ResendOrder": {"en": "Refill Order & Delivery", "ar": "إعادة طلب و توصيل"},
"Ports": {"en": "Ports", "ar": "المنافذ"}, "Ports": {"en": "Ports", "ar": "المنافذ"},
"Way": {"en": "Way", "ar": "الطزيقة"}, "Way": {"en": "Way", "ar": "الطريقة"},
"Average": {"en": "Average", "ar": "المعدل"}, "Average": {"en": "Average", "ar": "المعدل"},
"DailyDoses": {"en": "Daily Doses", "ar": "جرعات يومية"}, "DailyDoses": {"en": "Daily Doses", "ar": "جرعات يومية"},
"Period": {"en": "Period", "ar": "الفترة"}, "Period": {"en": "Period", "ar": "الفترة"},
@ -794,6 +774,7 @@ const Map localizedValues = {
"kg": {"en": "kg", "ar": "كجم"}, "kg": {"en": "kg", "ar": "كجم"},
"lb": {"en": "lb", "ar": "رطل"}, "lb": {"en": "lb", "ar": "رطل"},
"birth_date": {"en": "Birth Date", "ar": "تاريخ الميلاد"}, "birth_date": {"en": "Birth Date", "ar": "تاريخ الميلاد"},
"date_of_birth": {"en": "Date of Birth", "ar": "تاريخ الولادة"},
"mass": {"en": "Mass", "ar": "كتلة"}, "mass": {"en": "Mass", "ar": "كتلة"},
"temp-c": {"en": "°C", "ar": "°س"}, "temp-c": {"en": "°C", "ar": "°س"},
"bpm": {"en": "bpm", "ar": "نبضة"}, "bpm": {"en": "bpm", "ar": "نبضة"},
@ -817,36 +798,35 @@ const Map localizedValues = {
"question": {"en": "Question", "ar": "سؤال"}, "question": {"en": "Question", "ar": "سؤال"},
"message-type": {"en": "Message Type", "ar": "نوع الرسالة"}, "message-type": {"en": "Message Type", "ar": "نوع الرسالة"},
"feedback-type": {"en": "Feedback Type", "ar": "نوع الرسالة"}, "feedback-type": {"en": "Feedback Type", "ar": "نوع الرسالة"},
"compliment": {"en": "compliment", "ar": "ثناء"}, "compliment": {"en": "compliment", "ar": "شكوى"},
"suggestion": {"en": "Suggestion", "ar": "إقتراح"}, "suggestion": {"en": "Suggestion", "ar": "إقتراح"},
"your-feedback": {"en": "Your feedback was sent", "ar": "لقد تم ارسال اقراحك شكرا لك"}, "your-feedback": {"en": "Your feedback was sent", "ar": "لقد تم ارسال اقتراحك شكرا لك"},
"select-part": {"en": "Please select the part that complain about", "ar": "يرجى تحديد الجزء الذي تشكو منه"}, "select-part": {"en": "Please select the part that complain about", "ar": "يرجى تحديد الجزء الذي تشكو منه"},
"number": {"en": "Number", "ar": "الرقم"}, "number": {"en": "Number", "ar": "الرقم"},
"not-classified": {"en": "Not classified", "ar": "غير محدد"}, "not-classified": {"en": "Not classified", "ar": "غير محدد"},
"selectClinic": {"en": "Select Clinic", "ar": " بحث بالعيادة"}, "selectClinic": {"en": "Select Clinic", "ar": " بحث بالعيادة"},
"searchItemError": {"en": "Item name should be more than 3 character ", "ar": "يجب أن يكون اسم العنصر أكثر من 3 أحرف"}, "searchItemError": {"en": "Item name should be more than 3 character ", "ar": "يجب أن يكون الاسم المدخل أكثر من 3 أحرف"},
"YouCanFind": {"en": "You Can Find ", "ar": "باستطاعتك العثور على "}, "YouCanFind": {"en": "You Can Find ", "ar": "باستطاعتك العثور على "},
"ItemInSearch": {"en": " Item In Search", "ar": " عنصر في البحث "}, "ItemInSearch": {"en": " Item in Search", "ar": " عنصر في البحث "},
"blood-donation": {"en": "Blood Donation", "ar": "التبرع بالدم"}, "blood-donation": {"en": "Blood Donation", "ar": "التبرع بالدم"},
"blood-donation-info": { "blood-donation-info": {
"en": "Through this service, you can register your name as a blood donor where the blood bank in the Habib Medical Group will communicate you in case of need for blood type.", "en": "Through this service, you can register your name as a blood donor where the blood bank in the Habib Medical Group will communicate you in case of need for blood type.",
"ar": "عن طريق هذه الخدمة تستطيع تسجيل اسمك كمتبرع بالدم حيث سيتم التواصل معك عن طريق بنك الدم في مجموعة الحبيب الطبية في حال الحاجة الى فصيلة الدم." "ar": "عن طريق هذه الخدمة تستطيع تسجيل اسمك كمتبرع بالدم حيث سيتم التواصل معك عن طريق بنك الدم في مجموعة الحبيب الطبية في حال الحاجة الى فصيلة الدم."
}, },
"blood-instruction": {"en": "Enter the required information, In order to register for Blood Donation Service", "ar": "ادخل المعلومات المطلوبة للتسجيل بخدمة التبرع بالدم"}, "blood-instruction": {"en": "Enter the required information, in order to register for Blood Donation Service", "ar": "ادخل المعلومات المطلوبة للتسجيل بخدمة التبرع بالدم"},
"view-terms": {"en": "To view the terms and conditions", "ar": "عرض الشروط والأحكام"}, "view-terms": {"en": "To view the terms and conditions", "ar": "عرض الشروط والأحكام"},
"wantConnectHmgNetwork": { "wantConnectHmgNetwork": {
"en": "Dear customer there is no internet access, Do you want to connect with HMG network to use our app, make sure you are in range of HMG network", "en": "Dear customer there is no internet access, do you want to connect with HMG network to use our app, make sure you are in range of HMG network",
"ar": "عزيز العميل لا يوجد اتصال بالإنترنت, هل تريد الاتصال بشبكة مستشفى د. سليمان الحبيب لاستخدام التطبيق. يجب عليك ان تكون في نطاق شبكة المستشفى" "ar": "عزيز العميل لا يوجد اتصال بالإنترنت, هل تريد الاتصال بشبكة مستشفى د. سليمان الحبيب لاستخدام التطبيق. يجب عليك ان تكون في نطاق شبكة المستشفى"
}, },
"failedToAccessHmgServices": {"en": "Connected with HMG Network,\n\nBut failed to access HMG services", "ar": "Connected with HMG Network,\n\nBut failed to access HMG services"}, "failedToAccessHmgServices": {"en": "Connected with HMG Network,\n\nBut failed to access HMG services", "ar": "Connected with HMG Network,\n\nBut failed to access HMG services"},
"offerAndPackages": {"en": "Offers And Packages", "ar": "العروض والباقات"}, "offerAndPackages": {"en": "Offers and Packages", "ar": "العروض والباقات"},
"InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"}, "InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"},
"InvoiceDate": {"en": "Invoice Date", "ar": "تاريخ الفاتورة"}, "InvoiceDate": {"en": "Invoice Date", "ar": "تاريخ الفاتورة"},
"SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"}, "SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"},
"GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"}, "GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"},
"show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"}, "show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"},
"view_flow_chart": {"en": "View Flowchart", "ar": "النتائج التراكمية"}, "view_flow_chart": {"en": "View Flowchart", "ar": "النتائج التراكمية"},
"value": {"en": "Value", "ar": "القيمة"}, "value": {"en": "Value", "ar": "القيمة"},
"range": {"en": "Range", "ar": "المدى"}, "range": {"en": "Range", "ar": "المدى"},
"out-patient": {"en": "Out Patient", "ar": "عيادات خارجية"}, "out-patient": {"en": "Out Patient", "ar": "عيادات خارجية"},
@ -866,7 +846,7 @@ const Map localizedValues = {
"info-signs": { "info-signs": {
"en": "This service allows you to view all vital signs were performed in the Habib Medical Group, e.x (height, weight, body mass index, heart rate, etc.) as well shows some statistics charts.", "en": "This service allows you to view all vital signs were performed in the Habib Medical Group, e.x (height, weight, body mass index, heart rate, etc.) as well shows some statistics charts.",
"ar": "ar":
"خدمة المؤشرات الحيوية: هذه الخدمة تمكنك من الاطلاع على جميع المؤشرات الحيوية على سبيل المثال (الطول، الوزن، مؤشر كتلة الجسم، معدل نبضات القلب الخ..) التي تمت في مجموعة الحبيب الطبية وكذلك رسوم بيانية على مستوى المؤشر." "خدمة المؤشرات الحيوية: هذه الخدمة تمكنك من الاطلاع على جميع المؤشرات الحيوية على سبيل المثال (الطول، الوزن، مؤشر كتلة الجسم، معدل نبضات القلب الخ.) التي تمت في مجموعة الحبيب الطبية وكذلك رسوم بيانية على مستوى المؤشر."
}, },
"info-advance-payment": { "info-advance-payment": {
"en": "This service designed so that you can deposit an amount in advance either in your account or in someone else's account with Al Habib Medical Group.", "en": "This service designed so that you can deposit an amount in advance either in your account or in someone else's account with Al Habib Medical Group.",
@ -896,7 +876,7 @@ const Map localizedValues = {
"have-appo": {"en": "Do you have an appointment?", "ar": "هل لديك موعد ؟"}, "have-appo": {"en": "Do you have an appointment?", "ar": "هل لديك موعد ؟"},
"dropoff-location": {"en": "Dropoff Location", "ar": "نقطة الوصول"}, "dropoff-location": {"en": "Dropoff Location", "ar": "نقطة الوصول"},
"select-all": {"en": "Please select all fields", "ar": "يرجى تحديد جميع الحقول"}, "select-all": {"en": "Please select all fields", "ar": "يرجى تحديد جميع الحقول"},
"select-map": {"en": "Select From Map", "ar": "حدد من الخريطة"}, "select-map": {"en": "Select from Map", "ar": "حدد من الخريطة"},
"no-appointment": {"en": "You don't have any appointments yet", "ar": "ليس لديك أي مواعيد حتى الآن"}, "no-appointment": {"en": "You don't have any appointments yet", "ar": "ليس لديك أي مواعيد حتى الآن"},
"patient-share": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"}, "patient-share": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"},
"patient-share-tax": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"}, "patient-share-tax": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"},
@ -908,15 +888,16 @@ const Map localizedValues = {
"none": {"en": "None", "ar": "لا شيء"}, "none": {"en": "None", "ar": "لا شيء"},
"RRT-Summary": {"en": "Summary", "ar": "ملخص الطلب"}, "RRT-Summary": {"en": "Summary", "ar": "ملخص الطلب"},
"Rapid-Response-Team": {"en": "Rapid Response Team", "ar": "فريق الاستجابة السريع"}, "Rapid-Response-Team": {"en": "Rapid Response Team", "ar": "فريق الاستجابة السريع"},
"AmountBeforeTax": {"en": "Amount Before Tax:", "ar": "Amount Before Tax:"}, "AmountBeforeTax": {"en": "Amount Before Tax:", "ar": "المبلغ قبل الضريبة:"},
"ApproximateServiceFee": {"en": "Service fee starting from", "ar": "تبدأ رسوم الخدمة من"}, "ApproximateServiceFee": {"en": "Service fee starting from", "ar": "تبدأ رسوم الخدمة من"},
"TaxAmount": {"en": "Tax Amount:", "ar": "Tax Amount:"}, "TaxAmount": {"en": "Tax Amount:", "ar": "مبلغ الضريبة:"},
"somethingWentWrongTryLater": {"en": "Sorry something went wrong please try again later", "ar": "نعتذر لخدمتكم يرجى المحاولة لاحقا"}, "somethingWentWrongTryLater": {"en": "Sorry something went wrong please try again later", "ar": "نعتذر عن خدمتك يرجى المحاولة لاحقا"},
"TotalAmountPayable": {"en": "Total Amount Payable:", "ar": "Total Amount Payable:"}, "TotalAmountPayable": {"en": "Total Amount Payable:", "ar": " إجمالي المبلغ المستحق:"},
"iAcceptTermsConditions": {"en": "I Accept the Terms And Conditions", "ar": "أوافق على الشروط والأحكام"}, "iAcceptTermsConditions": {"en": "I Accept the Terms and Conditions", "ar": "أوافق على الشروط والأحكام"},
"YouCanPayByTheFollowingOptions": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"}, "YouCanPayByTheFollowingOptions": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"},
"RRTDDetails": { "RRTDDetails": {
"en": "The RRT service provides medical service for urgent and stable cases, not life-threatening situations or extremities, and the service includes providing medical care from a complete medical team at home.", "en":
"The RRT service provides medical service for urgent and stable cases, not life-threatening situations or extremities, and the service includes providing medical care from a complete medical team at home.",
"ar": "توفر خدمة فريق الاستجابة السريع RRT خدمه طبيه للحالات المستعجله والمستقره وليست الحالات المهدده للحياه او الاطراف ، وتشمل الخدمه تقديم رعايه طبيه من فريق طبي متكامل بالمنزل." "ar": "توفر خدمة فريق الاستجابة السريع RRT خدمه طبيه للحالات المستعجله والمستقره وليست الحالات المهدده للحياه او الاطراف ، وتشمل الخدمه تقديم رعايه طبيه من فريق طبي متكامل بالمنزل."
}, },
"rrtService": {"en": "RRT Service", "ar": "خدمة RRT"}, "rrtService": {"en": "RRT Service", "ar": "خدمة RRT"},
@ -938,7 +919,6 @@ const Map localizedValues = {
"update-succ": {"en": "Successfully updated profile", "ar": "تم تحديث البيانات بنجاح"}, "update-succ": {"en": "Successfully updated profile", "ar": "تم تحديث البيانات بنجاح"},
"dental-complains": {"en": "Symptoms", "ar": "الأعراض"}, "dental-complains": {"en": "Symptoms", "ar": "الأعراض"},
"empty-result": {"en": "There is no search results found", "ar": "لايوجد نتائج"}, "empty-result": {"en": "There is no search results found", "ar": "لايوجد نتائج"},
"no-booked-appointment": {"en": "No booked appointments", "ar": "لا يوجد مواعيد محجوزة"}, "no-booked-appointment": {"en": "No booked appointments", "ar": "لا يوجد مواعيد محجوزة"},
"no-confirmed-appointment": {"en": "No confirmed appointments", "ar": "لا توجد مواعيد مؤكدة"}, "no-confirmed-appointment": {"en": "No confirmed appointments", "ar": "لا توجد مواعيد مؤكدة"},
"no-arrived-appointment": {"en": "No arrived appointments", "ar": "لا يوجد مواعيد"}, "no-arrived-appointment": {"en": "No arrived appointments", "ar": "لا يوجد مواعيد"},
@ -957,16 +937,14 @@ const Map localizedValues = {
"blood-d": {"en": "Blood Donation", "ar": "تبرع بالدم"}, "blood-d": {"en": "Blood Donation", "ar": "تبرع بالدم"},
"symptomCheckerTitle": {"en": "Symptom Checker", "ar": "مدقق الأعراض"}, "symptomCheckerTitle": {"en": "Symptom Checker", "ar": "مدقق الأعراض"},
"latest-news": {"en": "Latest News", "ar": "أحدث الأخبار"}, "latest-news": {"en": "Latest News", "ar": "أحدث الأخبار"},
"our-location": {"en": "Our Locations", "ar": "موقعنا"}, "our-location": {"en": "Our Locations", "ar": "مواقعنا"},
"pharmacies": {"en": "Pharmacies", "ar": "الصيدليات"}, "pharmacies": {"en": "Pharmacies", "ar": "الصيدليات"},
"hospitals": {"en": "Hospitals", "ar": "المستشفيات"}, "hospitals": {"en": "Hospitals", "ar": "المستشفيات"},
"wallet": {"en": "Wallet", "ar": "محفظة نقود"}, "wallet": {"en": "Wallet", "ar": "محفظة نقود"},
"hmg": {"en": "Al Habib", "ar": "الحبيب"}, "hmg": {"en": "Al Habib", "ar": "الحبيب"},
"requested": {"en": "Requested", "ar": "مطلوب"}, "requested": {"en": "Requested", "ar": "مطلوب"},
"ready": {"en": "Ready", "ar": "جاهز"}, "ready": {"en": "Ready", "ar": "جاهز"},
"completed": {"en": "Completed", "ar": "مكتمل"}, "completed": {"en": "Completed", "ar": "مكتمل"},
"request-medical-report": {"en": "Request medical report", "ar": "طلب تقرير طبي"}, "request-medical-report": {"en": "Request medical report", "ar": "طلب تقرير طبي"},
"insur-cards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"}, "insur-cards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"},
'labResult': {"en": "Lab results", "ar": "نتائج التحاليل المخبرية"}, 'labResult': {"en": "Lab results", "ar": "نتائج التحاليل المخبرية"},
@ -1020,7 +998,7 @@ const Map localizedValues = {
"systolic-lng": {"en": "Systolic", "ar": "الإنقباض"}, "systolic-lng": {"en": "Systolic", "ar": "الإنقباض"},
"diastolic-lng": {"en": "Diastolic", "ar": "الإنبساط"}, "diastolic-lng": {"en": "Diastolic", "ar": "الإنبساط"},
"policy-holder": {"en": "Policy Holder", "ar": "حامل بطاقة التأمين"}, "policy-holder": {"en": "Policy Holder", "ar": "حامل بطاقة التأمين"},
"policy-no": {"en": "Policy Number", "ar": "رقم سياسات"}, "policy-no": {"en": "Policy Number", "ar": "رقم السياسة"},
"agree": {"en": "I agree, this is the correct information", "ar": "موافق، هذه المعلومات صحيحة"}, "agree": {"en": "I agree, this is the correct information", "ar": "موافق، هذه المعلومات صحيحة"},
"disagree": {"en": "No, this is not the correct information", "ar": "غير موافق، هذه المعلومات غير الصحيحة"}, "disagree": {"en": "No, this is not the correct information", "ar": "غير موافق، هذه المعلومات غير الصحيحة"},
"expiry-date": {"en": "Expiry Date", "ar": "تاريخ انتهاء الصلاحية"}, "expiry-date": {"en": "Expiry Date", "ar": "تاريخ انتهاء الصلاحية"},
@ -1043,12 +1021,9 @@ const Map localizedValues = {
"scan-now": {"en": "If you have a card/Document Scan now", "ar": "إذا كانت لديك بطاقة / مستند ارفقها الان"}, "scan-now": {"en": "If you have a card/Document Scan now", "ar": "إذا كانت لديك بطاقة / مستند ارفقها الان"},
"liveCare": {"en": "Live Care", "ar": "لايف كير"}, "liveCare": {"en": "Live Care", "ar": "لايف كير"},
"topBrands": {"en": "Top Brands", "ar": "اعلى العلامات التجارية"}, "topBrands": {"en": "Top Brands", "ar": "اعلى العلامات التجارية"},
"notifyMe": {"en": "notify me", "ar": "اعلمني"}, "notifyMe": {"en": "notify me", "ar": "اعلمني"},
"specification": {"en": "Specification", "ar": "تخصيص"}, "specification": {"en": "Specification", "ar": "تخصيص"},
"availability": {"en": "Availability", "ar": "متوفر في"},
"availability": {"en": "Availability", "ar": "التوفر"},
"vaccination": {"en": "Vaccination", "ar": "جدول التطعيمات"}, "vaccination": {"en": "Vaccination", "ar": "جدول التطعيمات"},
"welcomeBack": {"en": "Welcome back", "ar": "مرحبا مرة أخرى"}, "welcomeBack": {"en": "Welcome back", "ar": "مرحبا مرة أخرى"},
"quantitySize": {"en": "Quantity", "ar": "كميه"}, "quantitySize": {"en": "Quantity", "ar": "كميه"},
@ -1058,15 +1033,13 @@ const Map localizedValues = {
"no_data": {"en": "No data", "ar": "لايوجد بيانات"}, "no_data": {"en": "No data", "ar": "لايوجد بيانات"},
"buyNow": {"en": "buy now", "ar": "إشتري الان"}, "buyNow": {"en": "buy now", "ar": "إشتري الان"},
"quantityShortcut": {"en": "QTY", "ar": "كمية"}, "quantityShortcut": {"en": "QTY", "ar": "كمية"},
"pharmacyServiceTermsCondition": {"en": "I agree with the terms of service and I adhere to them unconditionally", "ar": " موافق على شروط الخدمة وألتزم بها دون قيد أو شرط"},
"pharmacyServiceTermsCondition": {"en": "I agree with the terms of service and I adhere to them unconditionally", "ar": " أوافق على شروط الخدمة وألتزم بها دون قيد أو شرط"},
"Year": {"en": "YEAR", "ar": "السنة"}, "Year": {"en": "YEAR", "ar": "السنة"},
"Month": {"en": "MONTH", "ar": "الشهر"}, "Month": {"en": "MONTH", "ar": "الشهر"},
"point": {"en": "POINT", "ar": "النقاط"}, "point": {"en": "POINT", "ar": "النقاط"},
"riyal": {"en": "RIYAL", "ar": "الريال"}, "riyal": {"en": "RIYAL", "ar": "الريال"},
"termOfService": {"en": "Terms of service", "ar": "شروط الخدمة"}, "termOfService": {"en": "Terms of service", "ar": "شروط الخدمة"},
"shoppingCart": {"en": "Shopping Cart", "ar": "عربة التسوق"}, "shoppingCart": {"en": "Shopping Cart", "ar": "عربة التسوق"},
"add-child": {"en": "Add New Child", "ar": "اضافة طفل"}, "add-child": {"en": "Add New Child", "ar": "اضافة طفل"},
"child-name": {"en": "Child Name", "ar": "اسم الطفل"}, "child-name": {"en": "Child Name", "ar": "اسم الطفل"},
"childDob": {"en": "Birth Date", "ar": "تاريخ الولادة"}, "childDob": {"en": "Birth Date", "ar": "تاريخ الولادة"},
@ -1077,21 +1050,20 @@ const Map localizedValues = {
"referralDate": {"en": "Referral Date", "ar": "تاريخ الإحالة"}, "referralDate": {"en": "Referral Date", "ar": "تاريخ الإحالة"},
"patientName": {"en": "Patient Name", "ar": "اسم المريض"}, "patientName": {"en": "Patient Name", "ar": "اسم المريض"},
"referralNumber": {"en": "Referral Number", "ar": "رقم الإحالة"}, "referralNumber": {"en": "Referral Number", "ar": "رقم الإحالة"},
"referralDetails": {"en": "Referral Details", "ar": "تفاصيل الإحالة"},
"requestID": {"en": "Req ID", "ar": " رقم الطلب"}, "requestID": {"en": "Req ID", "ar": " رقم الطلب"},
"OrderStatus": {"en": "Status", "ar": "الحاله"}, "OrderStatus": {"en": "Status", "ar": "الحاله"},
"pickupDate": {"en": "Pickup Date", "ar": "التاريخ"}, "pickupDate": {"en": "Pickup Date", "ar": "التاريخ"},
"serviceName": {"en": "Service Name", "ar": " اسم الخدمة"}, "serviceName": {"en": "Service Name", "ar": " اسم الخدمة"},
"orderLocation": {"en": "Location", "ar": "الموقع"}, "orderLocation": {"en": "Location", "ar": "الموقع"},
"selectService": {"en": "Select Service", "ar": "حدد الخدمة"}, "selectService": {"en": "Select Service", "ar": "حدد الخدمة"},
"coveredService": {"en": "Covered Service : ", "ar": " الخدمات المغطاة : "}, "coveredService": {"en": "Covered Services: ", "ar": " الخدمات المغطاة: "},
"selectedService": {"en": "Selected Service : ", "ar": " الخدمات المختارة : "}, "selectedService": {"en": "Selected Services: ", "ar": " الخدمات المختارة: "},
"cancelOrderMsg": {"en": "Are you sure!! want to cancel this order", "ar": "هل أنت واثق!! تريد إلغاء هذا الطلب"}, "cancelOrderMsg": {"en": "Are you sure!! want to cancel this order", "ar": "هل ترغب في إلغاء هذا الطلب"},
"processDoneSuccessfully": {"en": "Process Done Successfully", "ar": "تمت العملية بنجاح"}, "processDoneSuccessfully": {"en": "Process Done Successfully", "ar": "تمت العملية بنجاح"},
"selectHomeHealthCareServices": {"en": "Select Home Health Care Services", "ar": " حدد خدمات الرعاية الصحية المنزلية"}, "selectHomeHealthCareServices": {"en": "Select Home Health Care Services", "ar": " حدد خدمات الرعاية الصحية المنزلية"},
"description-vaccination": {"en": "Description", "ar": "وصف"}, "description-vaccination": {"en": "Description", "ar": "وصف"},
"due-date": {"en": "Due date", "ar": "تاريخ الاستحقاق"}, "due-date": {"en": "Due date", "ar": "تاريخ الاستحقاق"},
"valid-email": {"en": "Please enter valid email", "ar": "الرجاء إدخال عنوان بريد صحيح"}, "valid-email": {"en": "Please enter valid email", "ar": "الرجاء إدخال بريد الكتروني صحيح"},
"confirm-send": {"en": "Send the child's schedule to the email?", "ar": "ارسال جدول التطعيمات الى بريدك الالكتروني؟"}, "confirm-send": {"en": "Send the child's schedule to the email?", "ar": "ارسال جدول التطعيمات الى بريدك الالكتروني؟"},
"email-success": {"en": " The request was successful. You will receive the Schedule in moments.", "ar": "تم ارسال جدول التطعيمات "}, "email-success": {"en": " The request was successful. You will receive the Schedule in moments.", "ar": "تم ارسال جدول التطعيمات "},
"add-instructions": {"en": "Add the child's information below to recieve the schedule of vaccinations.", "ar": "أضف معلومات الطفل لاستلام جدول التطعيمات"}, "add-instructions": {"en": "Add the child's information below to recieve the schedule of vaccinations.", "ar": "أضف معلومات الطفل لاستلام جدول التطعيمات"},
@ -1101,20 +1073,16 @@ const Map localizedValues = {
"en": "The referral request has been submitted successfully, you will be contacted ASAP to complete the process. Referral request no is ", "en": "The referral request has been submitted successfully, you will be contacted ASAP to complete the process. Referral request no is ",
"ar": " تم إرسال طلب الإحالة بنجاح ، وسيتم الاتصال بك في أسرع وقت ممكن لإكمال العملية. رقم طلب الإحالة" "ar": " تم إرسال طلب الإحالة بنجاح ، وسيتم الاتصال بك في أسرع وقت ممكن لإكمال العملية. رقم طلب الإحالة"
}, },
"help": {"en": "Help", "ar": "مساعدة"}, "help": {"en": "Help", "ar": "مساعدة"},
"habibRobotText": { "habibRobotText": {
"en": "Hi, This is HABIB, your personal assistant. I'm here to assist you by voice commands. How can I help?", "en": "Hi, this is HABIB, your personal assistant. I'm here to assist you by voice commands. How can I help?",
"ar": "مرحباً ، معك حبيب مساعدك الشخصي. أنا هنا لمساعدتك بالأوامر الصوتية." "ar": "مرحباً ، معك حبيب مساعدك الشخصي. أنا هنا لمساعدتك بالأوامر الصوتية."
}, },
"updated-email": {"en": "Updated email successfully", "ar": "تم تحديث البريد الالكتروني"}, "updated-email": {"en": "Updated email successfully", "ar": "تم تحديث البريد الالكتروني"},
"view-list-children": {"en": "View List of Children", "ar": "عرض قائمة الأطفال"}, "view-list-children": {"en": "View List of Children", "ar": "عرض قائمة الأطفال"},
"covidTest": {"en": "COVID-19 TEST", "ar": "فحص كورونا"}, "covidTest": {"en": "COVID-19 TEST", "ar": "فحص كورونا"},
"driveThru": {"en": "Drive-Thru", "ar": "من السيارة"}, "driveThru": {"en": "Drive-Thru", "ar": "من السيارة"},
"trackDeliveryDriver": {"en": "Track Delivery Driver", "ar": "trackDeliveryDriver"}, "trackDeliveryDriver": {"en": "Track Delivery Driver", "ar": "تتبع السائق"},
"NearestErDesc": { "NearestErDesc": {
"en": "\nThis service Displays nearest branch\n among all the branches of All Habib \n medical Group based on your current Location", "en": "\nThis service Displays nearest branch\n among all the branches of All Habib \n medical Group based on your current Location",
"ar": "\nتعرض هذه الخدمة أقرب فرع\n من بين جميع فروع مجموعة \nالحبيب الطبية بناءً على موقعك الحالي." "ar": "\nتعرض هذه الخدمة أقرب فرع\n من بين جميع فروع مجموعة \nالحبيب الطبية بناءً على موقعك الحالي."
@ -1133,31 +1101,26 @@ const Map localizedValues = {
"reqId": {"en": "Request ID:", "ar": " رقم الطلب"}, "reqId": {"en": "Request ID:", "ar": " رقم الطلب"},
"RRT-orders-log": {"en": "Orders Log", "ar": "سجل الطلبات"}, "RRT-orders-log": {"en": "Orders Log", "ar": "سجل الطلبات"},
"blood-sugar": {"en": "Blood Sugar", "ar": "سكر الدم"}, "blood-sugar": {"en": "Blood Sugar", "ar": "سكر الدم"},
"covid19_driveThrueTest": {"en": "'Covid-19- Drive-Thru Test'", "ar": " الفحص من داخل السيارة"},
"covid19_driveThrueTest": {"en": "'Covid-19- Drive-Thru Test'", "ar": "Covid-19- الفحص من خلال القيادة"},
"E-Referral": {"en": "'E-Referral'", "ar": "الإحالة الإلكترونية"}, "E-Referral": {"en": "'E-Referral'", "ar": "الإحالة الإلكترونية"},
"childName": {"en": "'CHILD NAME'", "ar": "إسم الطفل"}, "childName": {"en": "'CHILD NAME'", "ar": "إسم الطفل"},
"recordDeleted": {"en": "'Record Deleted'", "ar": "تم حذف السجل"}, "recordDeleted": {"en": "'Record Deleted'", "ar": "تم حذف السجل"},
"msg_email_address_up_to_date": { "msg_email_address_up_to_date": {
"en": "Please ensure that the email address is up-to-date and process to view the schedule", "en": " Please ensure that the email address is up-to-date and proceed to view the schedule.",
"ar": "يرجى التأكد من أن عنوان البريد الإلكتروني محدث وأن العملية لعرض الجدول الزمني" "ar": " يرجى التأكد من تحديث عنوان البريد الإلكتروني والمتابعة لعرض الجدول"
}, },
"add-new-child": {"en": "ADD NEW CHILD", "ar": "إضافة طفل جديد"}, "add-new-child": {"en": "ADD NEW CHILD", "ar": "إضافة طفل جديد"},
"send-child-email-msg": {"en": "Send the child's schedule to the email", "ar": "أرسل جدول التطعيمات إلى البريد الإلكتروني"},
"send-child-email-msg": {"en": "Send the child's schedule to the email", "ar": "أرسل جدول الطفل إلى البريد الإلكتروني"},
"vaccination-add-child-msg": {"en": "Add the child's information below to receive the schedule of vaccinations.", "ar": "أضف معلومات الطفل أدناه للحصول على جدول التطعيمات."}, "vaccination-add-child-msg": {"en": "Add the child's information below to receive the schedule of vaccinations.", "ar": "أضف معلومات الطفل أدناه للحصول على جدول التطعيمات."},
"child_added_successfully": {"en": "Child added successfully", "ar": "تمت إضافة الطفل بنجاح"}, "child_added_successfully": {"en": "Child added successfully", "ar": "تمت إضافة الطفل بنجاح"},
"bloodSugar": {"en": "Blood", "ar": "السكر في الدم"}, "bloodSugar": {"en": "Blood", "ar": "السكر في الدم"},
"sugar": {"en": "Sugar", "ar": ""}, "sugar": {"en": "Sugar", "ar": "السكر"},
"bloodCholesterol": {"en": "Blood", "ar": " الكولسترول في الدم"}, "bloodCholesterol": {"en": "Blood", "ar": " الكولسترول في الدم"},
"cholesterol": {"en": "Cholesterol", "ar": " الكولسترول"},
"cholesterol": {"en": "Cholesterol", "ar": ""},
"triglycerides": {"en": "Triglycerides", "ar": "الدهون الثلاثية"}, "triglycerides": {"en": "Triglycerides", "ar": "الدهون الثلاثية"},
"fatInBlood": {"en": "Fat in Blood", "ar": ""},
"fatInBlood": {"en": "Fat In Blood", "ar": ""}, "convertFrom": {"en": "Convert from", "ar": "تحويل من"},
"convertFrom": {"en": "Convert From", "ar": "تحويل من"}, "calculate": {"en": "calculate", "ar": "احسب"},
"calculate": {"en": "calculate", "ar": "حساب"},
"enterReadingValue": {"en": "Enter the reading value", "ar": "ادخل القيمة"}, "enterReadingValue": {"en": "Enter the reading value", "ar": "ادخل القيمة"},
"result": {"en": "Result", "ar": "النتيجة"}, "result": {"en": "Result", "ar": "النتيجة"},
"sort": {"en": "Sort", "ar": "فرز"}, "sort": {"en": "Sort", "ar": "فرز"},
@ -1184,16 +1147,14 @@ const Map localizedValues = {
"measure-unit": {"en": "Measure unit", "ar": "وحدة القياس"}, "measure-unit": {"en": "Measure unit", "ar": "وحدة القياس"},
"measure-time": {"en": "Measure time", "ar": "وقت القياس"}, "measure-time": {"en": "Measure time", "ar": "وقت القياس"},
"update": {"en": "Update", "ar": "تعديل"}, "update": {"en": "Update", "ar": "تعديل"},
"bloodD-enter-desc": {"en": "Enter the required information, In order to register for Blood Donation Service", "ar": "أدخل المعلومات المطلوبة ، للتسجيل في خدمة التبرع بالدم"}, "bloodD-enter-desc": {"en": "Enter the required information, in order to register for Blood Donation Service", "ar": "أدخل المعلومات المطلوبة ، للتسجيل في خدمة التبرع بالدم"},
"viewTermsConditions": {"en": "To view the terms and conditions", "ar": "لعرض الشروط والأحكام"}, "viewTermsConditions": {"en": "To view the terms and conditions", "ar": "لعرض الشروط والأحكام"},
"WalkinAppo": {"en": "Hospital Visit Appointment", "ar": "موعد زيارة للمستشفى"}, "WalkinAppo": {"en": "Hospital Visit Appointment", "ar": "موعد زيارة للمستشفى"},
"videoAppo": {"en": "Video Call Appointment", "ar": "موعد اتصال فيديو"}, "videoAppo": {"en": "Video Call Appointment", "ar": "موعد اتصال فيديو"},
"generalHealth": {"en": "General Health", "ar": "صحة عامة"}, "generalHealth": {"en": "General Health", "ar": "صحة عامة"},
"womanHealth": {"en": "Women's Health", "ar": "صحة المرأة"}, "womanHealth": {"en": "Women's Health", "ar": "صحة المرأة"},
"bmi": {"en": "BMI", "ar": "الكتلة"}, "bmi": {"en": "BMI", "ar": "الكتلة"},
"bloodType": {"en": "Blood Type:", "ar": ":فصيلة الدم"}, "bloodType": {"en": "Blood Type:", "ar": "فصيلة الدم"},
"calc-health": {"en": "Calculators", "ar": "الصحية"}, "calc-health": {"en": "Calculators", "ar": "الصحية"},
"calories": {"en": "Calories", "ar": "سعرات"}, "calories": {"en": "Calories", "ar": "سعرات"},
"bmr": {"en": "BMR", "ar": "معدل الأيض القاعدي"}, "bmr": {"en": "BMR", "ar": "معدل الأيض القاعدي"},
@ -1211,11 +1172,11 @@ const Map localizedValues = {
"selectUnit": {"en": "Select Unit", "ar": "اختر الوحدة"}, "selectUnit": {"en": "Select Unit", "ar": "اختر الوحدة"},
"feet": {"en": "Feet", "ar": "قدم"}, "feet": {"en": "Feet", "ar": "قدم"},
"pound": {"en": "Pound", "ar": "رطل"}, "pound": {"en": "Pound", "ar": "رطل"},
"seeListOfDoctor": {"en": "See List Of Doctors", "ar": "انظر قائمة الأطباء"}, "seeListOfDoctor": {"en": "See List of Doctors", "ar": "انظر قائمة الأطباء"},
"obese": {"en": "Obese", "ar": "سمين"}, "obese": {"en": "Obese", "ar": "سمين"},
"overWeight": {"en": "OverWeight", "ar": "وزن زائد"}, "overWeight": {"en": "OverWeight", "ar": "وزن زائد"},
"healthy": {"en": "Healthy", "ar": "صحي"}, "healthy": {"en": "Healthy", "ar": "صحي"},
"underWeight": {"en": "UnderWeight", "ar": "نقص الوزن"}, "underWeight": {"en": "UnderWeight", "ar": "وزن ناقص"},
"bmiCalcMsgObese": { "bmiCalcMsgObese": {
"en": "en":
"A BMI of over 30 indicates that are heavily overweight. Health may be at risk if not lose weight. Recommended talking to a doctor or a dietician for advice. To book an appointment, click below to get started.", "A BMI of over 30 indicates that are heavily overweight. Health may be at risk if not lose weight. Recommended talking to a doctor or a dietician for advice. To book an appointment, click below to get started.",
@ -1239,7 +1200,7 @@ const Map localizedValues = {
"ar": "ar":
"يشير مؤشر كتلة الجسم الذي يقل عن 18.5 إلى أنك تعاني من نقص الوزن ، لذلك قد تحتاج إلى زيادة الوزن. يوصى بالتحدث إلى الطبيب أو أخصائي التغذية للحصول على المشورة. لحجز موعد ، انقر أدناه للبدء." "يشير مؤشر كتلة الجسم الذي يقل عن 18.5 إلى أنك تعاني من نقص الوزن ، لذلك قد تحتاج إلى زيادة الوزن. يوصى بالتحدث إلى الطبيب أو أخصائي التغذية للحصول على المشورة. لحجز موعد ، انقر أدناه للبدء."
}, },
"bariatrics": {"en": "Bariatrics", "ar": "طب السمنة"}, "bariatrics": {"en": "Bariatrics", "ar": " أمراض السمنة"},
"bariatricsHeaderMsg": { "bariatricsHeaderMsg": {
"en": "Choose one of the following symptoms to show the right doctors or choose a consultation to show all", "en": "Choose one of the following symptoms to show the right doctors or choose a consultation to show all",
"ar": "اختر أحد الأعراض التالية لتظهر للأطباء المناسبين أو اختر استشارة لإظهار الكل" "ar": "اختر أحد الأعراض التالية لتظهر للأطباء المناسبين أو اختر استشارة لإظهار الكل"
@ -1258,6 +1219,7 @@ const Map localizedValues = {
"today": {"en": "Today", "ar": "اليوم"}, "today": {"en": "Today", "ar": "اليوم"},
"week": {"en": "Week", "ar": "أسبوع"}, "week": {"en": "Week", "ar": "أسبوع"},
"month": {"en": "Month", "ar": "شهر"}, "month": {"en": "Month", "ar": "شهر"},
"enter_detail_below": {"en": "Enter the details below", "ar": "أدخل التفاصيل أدناه"},
"h2o-amount-of-water": {"en": "Enter the amount of water:", "ar": "ادخل كمية الماء:"}, "h2o-amount-of-water": {"en": "Enter the amount of water:", "ar": "ادخل كمية الماء:"},
"update-user": {"en": "Update Information", "ar": "تحديث بيانات"}, "update-user": {"en": "Update Information", "ar": "تحديث بيانات"},
"editname": {"en": "Enter the name here", "ar": "أدخل الاسم هنا"}, "editname": {"en": "Enter the name here", "ar": "أدخل الاسم هنا"},
@ -1270,13 +1232,17 @@ const Map localizedValues = {
"WaterCalculate": {"en": "Save", "ar": "حفظ"}, "WaterCalculate": {"en": "Save", "ar": "حفظ"},
"notif-title": {"en": "Water Reminder", "ar": "تذكير"}, "notif-title": {"en": "Water Reminder", "ar": "تذكير"},
"notif-text": {"en": " Don't forget to drink water.", "ar": "لا تنسى شرب الماء"}, "notif-text": {"en": " Don't forget to drink water.", "ar": "لا تنسى شرب الماء"},
"custom": {"en": "Custom", "ar": "خاص"}, "custom": {"en": "Custom", "ar": "مخصص"},
"undo": {"en": "Undo", "ar": "تراجع"}, "undo": {"en": "Undo", "ar": "تراجع"},
"drinking": {"en": "Drinkning", "ar": "الشرب"}, "drinking": {"en": "Drinkning", "ar": "الشرب"},
"remaining": {"en": "Remaining", "ar": "المتبقي"}, "remaining": {"en": "Remaining", "ar": "المتبقي"},
"addCustomAmount": {"en": "Add Custom Amount", "ar": "إضافة مبلغ مخصص"},
"left": {"en": "Left", "ar": "المتبقي"},
"taken": {"en": "Taken", "ar": " مأخوذ"}, "taken": {"en": "Taken", "ar": " مأخوذ"},
"ml": {"en": "ML", "ar": "مل"}, "ml": {"en": "ML", "ar": "مل"},
"mililitre": {"en": "Mililitre (ml)", "ar": "مليلتر (مل)"},
"l": {"en": "L", "ar": "لتر"}, "l": {"en": "L", "ar": "لتر"},
"litre": {"en": "Litre (l)", "ar": "لتر (لتر)"},
"custom-label": {"en": "Enter amount", "ar": "أدخل كمية الماء"}, "custom-label": {"en": "Enter amount", "ar": "أدخل كمية الماء"},
"custom-label-in-litres": {"en": "Enter amount in liters", "ar": "أدخل الكمية باللتر"}, "custom-label-in-litres": {"en": "Enter amount in liters", "ar": "أدخل الكمية باللتر"},
"custom-label-in-mililitres": {"en": "Enter amount in millilitres", "ar": "أدخل الكمية بالملليتر"}, "custom-label-in-mililitres": {"en": "Enter amount in millilitres", "ar": "أدخل الكمية بالملليتر"},
@ -1287,15 +1253,16 @@ const Map localizedValues = {
"notif-permission-title": {"en": "Could not set the water reminders", "ar": "لا يمكن ضبط اشعار شرب الماء"}, "notif-permission-title": {"en": "Could not set the water reminders", "ar": "لا يمكن ضبط اشعار شرب الماء"},
"notif-permission-msg": {"en": "To recieve water reminders, please turn on notifications in the system settings", "ar": "الرجاء تفعيل الاشعارات في الاعدادات"}, "notif-permission-msg": {"en": "To recieve water reminders, please turn on notifications in the system settings", "ar": "الرجاء تفعيل الاشعارات في الاعدادات"},
"verification_message_code": {"en": "Please enter verification code", "ar": "الرجاء إدخال رمز التحقق"}, "verification_message_code": {"en": "Please enter verification code", "ar": "الرجاء إدخال رمز التحقق"},
"select-location": {"en": "Select Location", "ar": "اختر موقعا"}, "select-location": {"en": "Select Location", "ar": "اختر الموقع"},
"result-header": {"en": "Get the result in Few Hours", "ar": "احصل على النتيجة خلال عدة ساعات"}, "result-header": {"en": "Get the result in Few Hours", "ar": "احصل على النتيجة خلال عدة ساعات"},
"please_select_gender": {"en": "Please select gender", "ar": "يرجى تحديد الجنس"},
"covid-info": { "covid-info": {
"en": "en":
"Dr. Sulaiman Al Habib hospitals are conducting a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes, and obtain the result within several hours. Corona Virus Covid 19 testing service with PCR technology to detect the virus according to the highest international standards and with the latest high-precision RT-PCR devices (American GeneXpert and others), That is approved by the Food and Drug Authority as well as by the Saudi Center for Infectious Diseases Prevention.", "Dr. Sulaiman Al Habib hospitals are conducting a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes, and obtain the result within several hours. Corona Virus Covid 19 testing service with PCR technology to detect the virus according to the highest international standards and with the latest high-precision RT-PCR devices (American GeneXpert and others), That is approved by the Food and Drug Authority as well as by the Saudi Center for Infectious Diseases Prevention.",
"ar": "ar":
"تجري مستشفيات د. سليمان الحبيب فحص فيروس كورونا المستجد وتصدر شهادات السفر على مدار الساعة، طوال أيام الأسبوع، وبسرعة ودقة عالية. يمكن للراغبين في الاستفادة من هذه الخدمة زيارة أحد فروع مستشفيات د. سليمان الحبيب وإجراء فحص كورونا خلال بضع دقائق والحصول على النتائج خلال عدة ساعات خدمة فحص فيروس كورونا Covid 19 بتقنية PCR للكشف عن الفيروس وفقاً لأعلى المعايير العالمية وبأحدث أجهزة RT-PCR عالية الدقة (GeneXpert الأمريكي وغيره)، وهي طرق معتمدة من قبل هيئة الغذاء والدواء وكذلك من قبل المركز السعودي للوقاية من الأمراض المُعدية" "تجري مستشفيات د. سليمان الحبيب فحص فيروس كورونا المستجد وتصدر شهادات السفر على مدار الساعة، طوال أيام الأسبوع، وبسرعة ودقة عالية. يمكن للراغبين في الاستفادة من هذه الخدمة زيارة أحد فروع مستشفيات د. سليمان الحبيب وإجراء فحص كورونا خلال بضع دقائق والحصول على النتائج خلال عدة ساعات خدمة فحص فيروس كورونا Covid 19 بتقنية PCR للكشف عن الفيروس وفقاً لأعلى المعايير العالمية وبأحدث أجهزة RT-PCR عالية الدقة (GeneXpert الأمريكي وغيره)، وهي طرق معتمدة من قبل هيئة الغذاء والدواء وكذلك من قبل المركز السعودي للوقاية من الأمراض المُعدية"
}, },
"select-appo": {"en": "Kindly select one of the available appointments from below:", "ar": "يرجى اختيار أحد المواعيد المتاحة من أدناه:"}, "select-appo": {"en": "Kindly select one of the available appointments from below:", "ar": " يرجى اختيار أحد المواعيد المتاحة مما يلي:"},
"covid-alert-header": {"en": "Pay With-in 15 mins to confirm the appointment", "ar": "الرجاء اتمام عملية الدفع خلال 15 دقيقه لتاكيد الموعد"}, "covid-alert-header": {"en": "Pay With-in 15 mins to confirm the appointment", "ar": "الرجاء اتمام عملية الدفع خلال 15 دقيقه لتاكيد الموعد"},
"covid-alert-info": { "covid-alert-info": {
"en": "Payment for Covid-19 Test should Be made with-in 15 mins otherwise The system will Cancel the Scheduled appointment automatically", "en": "Payment for Covid-19 Test should Be made with-in 15 mins otherwise The system will Cancel the Scheduled appointment automatically",
@ -1305,7 +1272,7 @@ const Map localizedValues = {
"back": {"en": "Back", "ar": "رجوع"}, "back": {"en": "Back", "ar": "رجوع"},
"get-directions": {"en": "Get Directions", "ar": "احصل على الاتجاهات"}, "get-directions": {"en": "Get Directions", "ar": "احصل على الاتجاهات"},
"selected-location": {"en": "Selected Location:", "ar": "الموقع المحدد:"}, "selected-location": {"en": "Selected Location:", "ar": "الموقع المحدد:"},
"test-fee": {"en": "Test Fee", "ar": "رسوم الاختبار"}, "test-fee": {"en": "Test Fee", "ar": "الرسوم"},
"pay-options": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"}, "pay-options": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"},
"livecare-service": {"en": "LiveCare Service", "ar": "خدمة لايف كير"}, "livecare-service": {"en": "LiveCare Service", "ar": "خدمة لايف كير"},
"livecare-service-desc": {"en": "is to obtain medical advice with a specialist doctor Via a video call", "ar": "هي الحصول على استشارة طبية مع طبيب مختص عن طريق اتصال فيديو"}, "livecare-service-desc": {"en": "is to obtain medical advice with a specialist doctor Via a video call", "ar": "هي الحصول على استشارة طبية مع طبيب مختص عن طريق اتصال فيديو"},
@ -1314,7 +1281,7 @@ const Map localizedValues = {
"doc-virtual-appo-ins4": {"en": "The doctor will see your medical file", "ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كامل"}, "doc-virtual-appo-ins4": {"en": "The doctor will see your medical file", "ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كامل"},
"doc-virtual-appo-ins5": {"en": "Free prescription delivery service", "ar": "خدمة توصيل الادوية مجانا"}, "doc-virtual-appo-ins5": {"en": "Free prescription delivery service", "ar": "خدمة توصيل الادوية مجانا"},
"livecare-summary": { "livecare-summary": {
"en": "** The service is included with some insurance companies according to the terms and conditions With our best wishes for health and wellness", "en": "** The service is included with some insurance companies according to the terms and conditions with our best wishes for health and wellness",
"ar": "** الخدمة مشمولة لدى بعض شركات التامين على حسب الشروط والاحكام مع تمنياتنا لكم بدوام الصحة والعافية" "ar": "** الخدمة مشمولة لدى بعض شركات التامين على حسب الشروط والاحكام مع تمنياتنا لكم بدوام الصحة والعافية"
}, },
"livecare-option-1": {"en": "Get Medical consultation immediately", "ar": "الحصول على الاستشارة فورا"}, "livecare-option-1": {"en": "Get Medical consultation immediately", "ar": "الحصول على الاستشارة فورا"},
@ -1329,13 +1296,12 @@ const Map localizedValues = {
"preferredunit": {"en": "Select the preferred unit", "ar": "اختر الوحدة المفضلة"}, "preferredunit": {"en": "Select the preferred unit", "ar": "اختر الوحدة المفضلة"},
"select-unit": {"en": "Select unit", "ar": "اختر وحدة القياس"}, "select-unit": {"en": "Select unit", "ar": "اختر وحدة القياس"},
"try-saying": {"en": "Try saying something", "ar": 'حاول قول شيء ما'}, "try-saying": {"en": "Try saying something", "ar": 'حاول قول شيء ما'},
"app-update": {"en": "UPDATE THE APP", "ar": "تحديث التطبيق"}, "app-update": {"en": "UPDATE THE APP", "ar": "تحديث التطبيق"},
"covid-alert": {"en": "Alert", "ar": "تنبيه"}, "covid-alert": {"en": "Alert", "ar": "تنبيه"},
"enterIdentificationNumber": {"en": "Enter Identification Number", "ar": "أدخل رقم التعريف"}, "enterIdentificationNumber": {"en": "Enter Identification Number", "ar": "أدخل رقم التعريف"},
"accountActivationDesc": { "accountActivationDesc": {
"en": "This service allows you to activate your LAKUM account after registering through the Vida system.", "en": " This service allows you to activate your LAKUM account after registering completed.",
"ar": "تتيح لك هذه الخدمة تفعيل حساب LAKUM الخاص بك بعد التسجيل من خلال نظام Vida." "ar": " تتيح لك هذه الخدمة تفعيل حساب برنامج الولاء لكم بعد اكتمال التسجيل. "
}, },
"pointsToTransfer": {"en": "Point's to Transfer:", "ar": "النقاط المراد تحويلها:"}, "pointsToTransfer": {"en": "Point's to Transfer:", "ar": "النقاط المراد تحويلها:"},
"enterBeneficiaryAccountNo": {"en": "Enter Beneficiary Account No.", "ar": "أدخل رقم حساب المستفيد"}, "enterBeneficiaryAccountNo": {"en": "Enter Beneficiary Account No.", "ar": "أدخل رقم حساب المستفيد"},
@ -1343,16 +1309,15 @@ const Map localizedValues = {
"you-already-have-order": {"en": "You already have this order! do you want to view it?", "ar": "لديك هذا الطلب بالفعل! هل تريد مشاهدته؟"}, "you-already-have-order": {"en": "You already have this order! do you want to view it?", "ar": "لديك هذا الطلب بالفعل! هل تريد مشاهدته؟"},
"order-overview": {"en": "Order Overview", "ar": "ملخص الطلب"}, "order-overview": {"en": "Order Overview", "ar": "ملخص الطلب"},
"shipping-address": {"en": "Delivery Address", "ar": "عنوان التوصيل"}, "shipping-address": {"en": "Delivery Address", "ar": "عنوان التوصيل"},
"pharmacy-relogin": {"en": "Your session has timed out, Please try again", "ar": "انتهت مهلة جلسة الخاص بها. يرجى المحاولة مرة أخرى"}, "pharmacy-relogin": {"en": "Your session has timed out, please try again", "ar": "انتهت مهلة جلسة الخاص بها. يرجى المحاولة مرة أخرى"},
"ancillary-orders": {"en": "Ancillary Orders", "ar": "الأوامر التبعية"}, "ancillary-orders": {"en": "Ancillary Orders", "ar": "الأوامر التبعية"},
"onlineCheckInAgreement": { "onlineCheckInAgreement": {
"en": "en":
"The online check-in is for non-life threatening situationCall the red crescent (number) or go to the nearest emergency department if there are: signs of stroke or heart attack history of seizure or syncope there is limb or life threatening injury picture of severe injuries", "The online check-in is for non-life threatening situationCall the red crescent (number) or go to the nearest emergency department if there are: signs of stroke or heart attack history of seizure or syncope there is limb or life threatening injury picture of severe injuries",
"ar": "ar":
"تسجيل الذهاب الى الطوارئ عبر الإنترنت هو فقط للحالات التي لا تهدد الحياة يجب الاتصل بالهلال الأحمر (رقم) أو الذهاب إلى أقرب قسم طوارئ إذا كان هناك علامات السكتة الدماغية أو النوبة القلبية او هناك نوبة تشنج او حالة فقدان الوعي او وجود إصابة تهدد أحد الأطراف او تهدد الحياة او وجود إصابات خطيرة" "تسجيل الذهاب الى الطوارئ عبر الإنترنت هو فقط للحالات التي لا تهدد الحياة يجب الاتصل بالهلال الأحمر (رقم) أو الذهاب إلى أقرب قسم طوارئ إذا كان هناك علامات السكتة الدماغية أو النوبة القلبية او هناك نوبة تشنج او حالة فقدان الوعي او وجود إصابة تهدد أحد الأطراف او تهدد الحياة او وجود إصابات خطيرة"
}, },
"MRN": {"en": "MRN", "ar": "ایم آر این"}, "MRN": {"en": "MRN", "ar": "رقم الملف الطبي"},
"appointment-date": {"en": "Appointment Date", "ar": "تاريخ الموعد"}, "appointment-date": {"en": "Appointment Date", "ar": "تاريخ الموعد"},
"appointment-no": {"en": "Appointment No", "ar": "رقم الموعد"}, "appointment-no": {"en": "Appointment No", "ar": "رقم الموعد"},
"insurance-id": {"en": "Insurance ID", "ar": "رقم العضويه"}, "insurance-id": {"en": "Insurance ID", "ar": "رقم العضويه"},
@ -1369,21 +1334,19 @@ const Map localizedValues = {
"selectRelationship": {"en": "Select Relationship", "ar": "حدد العلاقة"}, "selectRelationship": {"en": "Select Relationship", "ar": "حدد العلاقة"},
"requesterRelationship": {"en": "Requester Relationship", "ar": "علاقة الطالب"}, "requesterRelationship": {"en": "Requester Relationship", "ar": "علاقة الطالب"},
"newReferral": {"en": "New Referral", "ar": "إحالة جديدة"}, "newReferral": {"en": "New Referral", "ar": "إحالة جديدة"},
"searchForReferrals": {"en": "Search For Referrals", "ar": "ابحث عن الإحالات"}, "searchForReferrals": {"en": "Search for Referrals", "ar": "ابحث عن الإحالات"},
"covid-select-procedure": {"en": "Please select the procedure:", "ar": "الرجاء تحديد الإجراء:"}, "covid-select-procedure": {"en": "Please select the procedure:", "ar": "الرجاء تحديد الإجراء:"},
"online-consultation": {"en": "Online Consultation", "ar": "استشارة مباشرة"}, "online-consultation": {"en": "Online Consultation", "ar": "استشارة مباشرة"},
"expected-weiting": {"en": "Waiting time to start LiveCare consultation ", "ar": "وقت الانتظار المتوقع لبدء استشارة لايف كير"}, "expected-weiting": {"en": "Waiting time to start LiveCare consultation ", "ar": "وقت الانتظار المتوقع لبدء استشارة لايف كير"},
"er-consult-fee": {"en": "Consultation Fee", "ar": "رسوم الاستشارة"}, "er-consult-fee": {"en": "Consultation Fee", "ar": "رسوم الاستشارة"},
"insured-patient": {"en": "If you're Insurance patient, you have only have to pay the co-payment", "ar": "إذا كنت مريضًا في مجال التأمين ، فليس عليك سوى دفع المبلغ المشترك"}, "insured-patient": {"en": "If you're Insurance patient, you have only have to pay the co-payment", "ar": "إذا كنت مريضًا في مجال التأمين ، فليس عليك سوى دفع المبلغ المشترك"},
"i-accept-terms": {"en": "I Accept the Terms And Conditions", "ar": "أوافق على الشروط والأحكام"}, "i-accept-terms": {"en": "I Accept the Terms and Conditions", "ar": "موافق على الشروط والأحكام"},
"upcoming-pay-options": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"}, "upcoming-pay-options": {"en": "You can pay by the following Options:", "ar": "يمكنك الدفع عن طريق الخيارات التالية:"},
"please-accept-terms": {"en": "Please accept terms & conditions to continue", "ar": "يرجى قبول الشروط والأحكام للمتابعة"}, "please-accept-terms": {"en": "Please accept terms & conditions to continue", "ar": "يرجى قبول الشروط والأحكام للمتابعة"},
"type": {"en": "Type", "ar": "اكتب"}, "type": {"en": "Type", "ar": "اكتب"},
"info-ereferral": { "info-ereferral": {
"en": "en":
"This service allows you to submit a Referral request from any health care providers either inside or outside the kingdom of Saudi Arabia to any of HMG Hospitals, By filling some of the patient's data and attaching the medical reports, moreover you can track the request status (Under process, Accepted or Rejected)", "This service allows you to submit a Referral request from any health care providers either inside or outside the kingdom of Saudi Arabia to any of HMG Hospitals, by filling some of the patient's data and attaching the medical reports, moreover you can track the request status (Under process, Accepted or Rejected)",
"ar": "ar":
"تتيح لك هذه الخدمة إرسال طلب إحالة من أي من مقدمي الرعاية الصحية سواء داخل المملكة العربية السعودية أو خارجها إلى أي من مستشفيات HMG ، عن طريق ملء بعض بيانات المريض وإرفاق التقارير الطبية ، علاوة على ذلك يمكنك تتبع حالة الطلب (قيد المعالجة ، مقبول أو مرفوض)" "تتيح لك هذه الخدمة إرسال طلب إحالة من أي من مقدمي الرعاية الصحية سواء داخل المملكة العربية السعودية أو خارجها إلى أي من مستشفيات HMG ، عن طريق ملء بعض بيانات المريض وإرفاق التقارير الطبية ، علاوة على ذلك يمكنك تتبع حالة الطلب (قيد المعالجة ، مقبول أو مرفوض)"
}, },
@ -1394,7 +1357,7 @@ const Map localizedValues = {
"my-invoice": {"en": "My Invoice", "ar": "فواتيري"}, "my-invoice": {"en": "My Invoice", "ar": "فواتيري"},
"invoice-list": {"en": "Invoices List", "ar": "فائمة الفواتير"}, "invoice-list": {"en": "Invoices List", "ar": "فائمة الفواتير"},
"thisItemIsNotAvailable": {"en": "This item is not available", "ar": "هذا العنصر غير متوفر"}, "thisItemIsNotAvailable": {"en": "This item is not available", "ar": "هذا العنصر غير متوفر"},
"beforeAfterImages": {"en": "Before After Images", "ar": "قبل بعد الصور"}, "beforeAfterImages": {"en": "Before & After Images", "ar": "الصور قبل وبعد"},
"clinic-accept-livecare": { "clinic-accept-livecare": {
"en": "No need to wait or visit You can now get medical consultation via Video call (LiveCare service) in The name of the clinic clinic and the doctor will contact you immediately", "en": "No need to wait or visit You can now get medical consultation via Video call (LiveCare service) in The name of the clinic clinic and the doctor will contact you immediately",
"ar": "لا داعي للانتظار او الحضور يمكنك الان الحصول على الاستشارة عن طريق مكالمة الفيديو (خدمة لايف كير) في العيادة وسوف يقوم الطبيب بالتواصل معك فورا" "ar": "لا داعي للانتظار او الحضور يمكنك الان الحصول على الاستشارة عن طريق مكالمة الفيديو (خدمة لايف كير) في العيادة وسوف يقوم الطبيب بالتواصل معك فورا"
@ -1403,7 +1366,7 @@ const Map localizedValues = {
"schedule": {"en": "Schedule", "ar": "جدول الحضور"}, "schedule": {"en": "Schedule", "ar": "جدول الحضور"},
"livecare-point-2": {"en": "A Specialized doctor will contact you", "ar": "سوف يقوم بخدمتك طبيب متخصص"}, "livecare-point-2": {"en": "A Specialized doctor will contact you", "ar": "سوف يقوم بخدمتك طبيب متخصص"},
"livecare-point-3": {"en": "A Doctor will be able to see your full medical file history", "ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كاملا"}, "livecare-point-3": {"en": "A Doctor will be able to see your full medical file history", "ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كاملا"},
"livecare-point-4": {"en": "Free Medicine delivery Available", "ar": "خدمة توصيل الادوية مجانا"}, "livecare-point-4": {"en": "Free Medicine Delivery Available", "ar": "خدمة توصيل الادوية مجانية"},
"livecare-point-5": {"en": "No need to visit the service is in your place", "ar": "لا داعي للحضور سوف تحصل على الخدمة في مكانك"}, "livecare-point-5": {"en": "No need to visit the service is in your place", "ar": "لا داعي للحضور سوف تحصل على الخدمة في مكانك"},
"book-immediate-livecare": {"en": "I accept to get the service immediately", "ar": "موافق اريد الحصول على الخدمة فورا"}, "book-immediate-livecare": {"en": "I accept to get the service immediately", "ar": "موافق اريد الحصول على الخدمة فورا"},
"book-video-livecare-2": {"en": "I don't need to visit the clinic", "ar": "اتصال فيديو لا احتاج الحضور الى العيادة"}, "book-video-livecare-2": {"en": "I don't need to visit the clinic", "ar": "اتصال فيديو لا احتاج الحضور الى العيادة"},
@ -1413,7 +1376,7 @@ const Map localizedValues = {
"is-report-outside-ksa": {"en": "Is the certificate needed for outside KSA?", "ar": "هل الشهادة مطلوبة من خارج المملكة؟"}, "is-report-outside-ksa": {"en": "Is the certificate needed for outside KSA?", "ar": "هل الشهادة مطلوبة من خارج المملكة؟"},
"passport-number": {"en": "Passport Number", "ar": "رقم جواز السفر"}, "passport-number": {"en": "Passport Number", "ar": "رقم جواز السفر"},
"enter-passport-number": {"en": "Please confirm or update your passport number:", "ar": "الرجاء تأكيد أو تحديث رقم جواز السفر الخاص بك:"}, "enter-passport-number": {"en": "Please confirm or update your passport number:", "ar": "الرجاء تأكيد أو تحديث رقم جواز السفر الخاص بك:"},
"valid-passport-number": {"en": "Please enter valid passport number", "ar": "الرجاء إدخال رقم جواز سفر صالح"}, "valid-passport-number": {"en": "Please enter valid passport number", "ar": "الرجاء إدخال رقم جواز سفر صحيح"},
"continue-plan": {"en": "Continue with the treatment plan?", "ar": "إكمال الخطة العلاجية؟"}, "continue-plan": {"en": "Continue with the treatment plan?", "ar": "إكمال الخطة العلاجية؟"},
"about-app": {"en": "About the app", "ar": "عن التطبيق"}, "about-app": {"en": "About the app", "ar": "عن التطبيق"},
"about-points": { "about-points": {
@ -1476,7 +1439,6 @@ const Map localizedValues = {
"ar": "ar":
"تم تصميم هذه الخدمة لمساعدتك في تحديد وتتبع كميات المياه التي يتوجب شربها بشكل يومي. كما توفر هذه الخدمة تذكيرات الجدول الزمني وتقدم تحليلًا إحصائيًا لمقدار ما استهلكته خلال اليوم أو الأسبوع أو الشهر." "تم تصميم هذه الخدمة لمساعدتك في تحديد وتتبع كميات المياه التي يتوجب شربها بشكل يومي. كما توفر هذه الخدمة تذكيرات الجدول الزمني وتقدم تحليلًا إحصائيًا لمقدار ما استهلكته خلال اليوم أو الأسبوع أو الشهر."
}, },
"sys/dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"}, "sys/dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"},
"arm": {"en": "Arm", "ar": "الذراع"}, "arm": {"en": "Arm", "ar": "الذراع"},
"remove-measure": {"en": "Remove this measure", "ar": "إزالة هذا القياس؟"}, "remove-measure": {"en": "Remove this measure", "ar": "إزالة هذا القياس؟"},
@ -1507,16 +1469,16 @@ const Map localizedValues = {
"firstTri": {"en": "First Trimester Ends (12 weeks):", "ar": "تاريخ انتهاء الثلث الأول 12 اسبوع: "}, "firstTri": {"en": "First Trimester Ends (12 weeks):", "ar": "تاريخ انتهاء الثلث الأول 12 اسبوع: "},
"secondTri": {"en": "Second Trimester Ends (27 weeks):", "ar": "تاريخ انتهاء الثلث الثاني 27 اسبوع: "}, "secondTri": {"en": "Second Trimester Ends (27 weeks):", "ar": "تاريخ انتهاء الثلث الثاني 27 اسبوع: "},
"thirdTri": {"en": "Third Trimester, Estimated Due Date (40 weeks):", "ar": "تاريخ احتمال الولادة 40 اسبوع:"}, "thirdTri": {"en": "Third Trimester, Estimated Due Date (40 weeks):", "ar": "تاريخ احتمال الولادة 40 اسبوع:"},
"seeDoctorsList": {"en": "See List Of Doctors", "ar": "اعرض قائمة الأطباء"}, "seeDoctorsList": {"en": "See List of Doctors", "ar": "اعرض قائمة الأطباء"},
"covidQuestionnaire": {"en": "Please answer below questionnaire:", "ar": "الرجاء الإجابة على الاستبيان أدناه:"}, "covidQuestionnaire": {"en": "Please answer below questionnaire:", "ar": "الرجاء الإجابة على الاستبيان أدناه:"},
"covidBookAppo": { "en": "Booking Appointment For: ", "ar": "موعد الحجز لـ: " }, "covidBookAppo": {"en": "Booking Appointment for: ", "ar": "موعد الحجز لـ: "},
"emptySchedule": {"en": "Doctor has no schedule.", "ar": "لا يوجد جدول حضور مسجل للطبيب"}, "emptySchedule": {"en": "Doctor has no schedule.", "ar": "لا يوجد جدول حضور مسجل للطبيب"},
"serviceNotAvailable": {"en": "Dear, this service is not available now, please try again later", "ar": "عزيزي المراجع, هذه الخدمة غير متوفرة الان يرجى المحاوله لاحقا"}, "serviceNotAvailable": {"en": "Dear, this service is not available now, please try again later", "ar": "عزيزي المراجع, هذه الخدمة غير متوفرة الان يرجى المحاوله لاحقا"},
"doctorScheduleNot": {"en": "Doctor schedule not available", "ar": "جدول الطبيب غير متوفر"}, "doctorScheduleNot": {"en": "Doctor schedule not available", "ar": "جدول الطبيب غير متوفر"},
"RRTRequestSuccess": { "en": "Request has been sent successfully, You will be contacted soon.", "ar": "تم إرسال الطلب بنجاح ، وسيتم الاتصال بك باسرع وقت ممكن" }, "RRTRequestSuccess": {"en": "Request has been sent successfully, you will be contacted soon.", "ar": "تم إرسال الطلب بنجاح ، وسيتم الاتصال بك باسرع وقت ممكن"},
"rateDoctorAppo": { "en": "Rate DR & Appointment", "ar": "معدل الدكتور والتعيين" }, "rateDoctorAppo": {"en": "Rate DR & Appointment", "ar": "تقييم الطبيب والموعد"},
"invoice": {"en": "Invoice", "ar": "الفاتورة"}, "invoice": {"en": "Invoice", "ar": "الفاتورة"},
"requestedDate": { "en": "Requested Date", "ar": "التاريخ " }, "requestedDate": {"en": "Reqeusted Date", "ar": "التاريخ "},
"callDuration": {"en": "Call Duration", "ar": "مدة الاتصال"}, "callDuration": {"en": "Call Duration", "ar": "مدة الاتصال"},
"alreadyRated": {"en": "This appointment has been previously evaluated.", "ar": "تم تقييم هذا الموعد مسبقاً"}, "alreadyRated": {"en": "This appointment has been previously evaluated.", "ar": "تم تقييم هذا الموعد مسبقاً"},
"insuranceCompany": {"en": "Insurance Company", "ar": "شركة تأمين"}, "insuranceCompany": {"en": "Insurance Company", "ar": "شركة تأمين"},
@ -1528,4 +1490,9 @@ const Map localizedValues = {
"insuredPatient": {"en": "Insured Patient", "ar": "هل لدى المريض تامين؟"}, "insuredPatient": {"en": "Insured Patient", "ar": "هل لدى المريض تامين؟"},
"rateDoctor": {"en": "Rate Doctor", "ar": "تقييم الطبيب"}, "rateDoctor": {"en": "Rate Doctor", "ar": "تقييم الطبيب"},
"rateAppointment": {"en": "Rate Appointment", "ar": "سعر التعيين"}, "rateAppointment": {"en": "Rate Appointment", "ar": "سعر التعيين"},
"noInsuranceCardAttached": {"en": "Please attach your insurance card image to continue", "ar": "يرجى إرفاق صورة بطاقة التأمين الخاصة بك للمتابعة"},
"bodyMassIndex": {"en": "Body Mass Index is: ", "ar": "مؤشر كتلة الجسم هو:"},
"noSlotsError": {"en": "No appointments available for selected date", "ar": "لا توجد مواعيد متاحة للتاريخ المحدد"},
"selectSlot": {"en": "Please select Time Slot to continue", "ar": "الرجاء تحديد فترة زمنية للمتابعة"},
"years": {"en": "Years", "ar": "سنوات"},
}; };

@ -21,6 +21,7 @@ const THEME_VALUE = 'is_vibration';
const MAIN_USER = 'main-user'; const MAIN_USER = 'main-user';
const PHARMACY_LAST_VISITED_PRODUCTS = 'last-visited'; const PHARMACY_LAST_VISITED_PRODUCTS = 'last-visited';
const PHARMACY_CUSTOMER_ID = 'costumer-id'; const PHARMACY_CUSTOMER_ID = 'costumer-id';
const PHARMACY_CUSTOMER_OBJECT = 'pharmacy-customer-object';
const IS_ROBOT_VISIBLE = 'robot-visible'; const IS_ROBOT_VISIBLE = 'robot-visible';
const IS_ROBOT_INIT = 'robot-init'; const IS_ROBOT_INIT = 'robot-init';
const HMG_GEOFENCES = 'hmg-geo-fences'; const HMG_GEOFENCES = 'hmg-geo-fences';
@ -34,3 +35,4 @@ const H2O_REMINDER = 'H2O_REMINDER';
const LIVECARE_CLINIC_DATA = 'LIVECARE_CLINIC_DATA'; const LIVECARE_CLINIC_DATA = 'LIVECARE_CLINIC_DATA';
const DOCTOR_SCHEDULE_DATE_SEL = 'DOCTOR_SCHEDULE_DATE_SEL'; const DOCTOR_SCHEDULE_DATE_SEL = 'DOCTOR_SCHEDULE_DATE_SEL';
const APPOINTMENT_HISTORY_MEDICAL = 'APPOINTMENT_HISTORY_MEDICAL'; const APPOINTMENT_HISTORY_MEDICAL = 'APPOINTMENT_HISTORY_MEDICAL';
const CLINICS_LIST = 'CLINICS_LIST';

@ -11,6 +11,7 @@ class GetPatientICProjectsModel {
dynamic editedOn; dynamic editedOn;
dynamic editedBy; dynamic editedBy;
bool isActive; bool isActive;
dynamic distanceInKilometers;
GetPatientICProjectsModel( GetPatientICProjectsModel(
{this.id, {this.id,
@ -22,6 +23,7 @@ class GetPatientICProjectsModel {
this.createdBy, this.createdBy,
this.editedOn, this.editedOn,
this.editedBy, this.editedBy,
this.distanceInKilometers,
this.isActive}); this.isActive});
GetPatientICProjectsModel.fromJson(Map<String, dynamic> json) { GetPatientICProjectsModel.fromJson(Map<String, dynamic> json) {
@ -35,6 +37,7 @@ class GetPatientICProjectsModel {
editedOn = json['EditedOn']; editedOn = json['EditedOn'];
editedBy = json['EditedBy']; editedBy = json['EditedBy'];
isActive = json['IsActive']; isActive = json['IsActive'];
distanceInKilometers = json['DistanceInKilometers'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -49,6 +52,7 @@ class GetPatientICProjectsModel {
data['EditedOn'] = this.editedOn; data['EditedOn'] = this.editedOn;
data['EditedBy'] = this.editedBy; data['EditedBy'] = this.editedBy;
data['IsActive'] = this.isActive; data['IsActive'] = this.isActive;
data['DistanceInKilometers'] = this.distanceInKilometers;
return data; return data;
} }
} }

@ -7,7 +7,7 @@ class PharmacyPrescriptions {
int projectID; int projectID;
String setupID; String setupID;
String locationDescription; String locationDescription;
Null locationDescriptionN; dynamic locationDescriptionN;
String itemDescription; String itemDescription;
Null itemDescriptionN; Null itemDescriptionN;
String alias; String alias;
@ -16,7 +16,7 @@ class PharmacyPrescriptions {
Null companybarcode; Null companybarcode;
int cityID; int cityID;
String cityName; String cityName;
int distanceInKilometers; dynamic distanceInKilometers;
String latitude; String latitude;
int locationType; int locationType;
String longitude; String longitude;

@ -1,6 +1,6 @@
class RequestGetListPharmacyForPrescriptions { class RequestGetListPharmacyForPrescriptions {
int latitude; dynamic latitude;
int longitude; dynamic longitude;
double versionID; double versionID;
int channel; int channel;
int languageID; int languageID;

@ -1,16 +1,14 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/add_new_address_Request_Model.dart'; import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/add_new_address_Request_Model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import '../../../locator.dart';
import '../base_service.dart'; import '../base_service.dart';
class CustomerAddressesService extends BaseService { class CustomerAddressesService extends BaseService {
List<AddressInfo> addressesList = List(); List<AddressInfo> addressesList = List();
CustomerInfo customerInfo; CustomerInfo customerInfo = new CustomerInfo();
Future addAddressInfo({AddNewAddressRequestModel addNewAddressRequestModel}) async { Future addAddressInfo({AddNewAddressRequestModel addNewAddressRequestModel}) async {
addNewAddressRequestModel.customer.email = customerInfo.email; addNewAddressRequestModel.customer.email = customerInfo.email;
@ -40,7 +38,8 @@ class CustomerAddressesService extends BaseService {
Future getCustomerAddresses() async { Future getCustomerAddresses() async {
Map<String, String> queryParams = {'fields': 'addresses'}; Map<String, String> queryParams = {'fields': 'addresses'};
hasError = false; hasError = false;
await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES${customerInfo.customerId}", onSuccess: (dynamic response, int statusCode) { var customerID = await sharedPref.getObject(PHARMACY_CUSTOMER_ID);
await baseAppClient.getPharmacy("$BASE_PHARMACY_URL$GET_CUSTOMER_ADDRESSES$customerID", onSuccess: (dynamic response, int statusCode) {
addressesList.clear(); addressesList.clear();
response["customers"][0]["addresses"].forEach((data) { response["customers"][0]["addresses"].forEach((data) {
addressesList.add(AddressInfo.fromJson(data)); addressesList.add(AddressInfo.fromJson(data));

@ -124,7 +124,7 @@ class BaseAppClient {
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {
onFailure('Error While Fetching data', statusCode); onFailure('Error While Fetching data', statusCode);
} else { } else {
// var parsed = json.decode(response.body.toString()); var decoded = utf8.decode(response.bodyBytes);
var parsed = json.decode(utf8.decode(response.bodyBytes)); var parsed = json.decode(utf8.decode(response.bodyBytes));
if (parsed['Response_Message'] != null) { if (parsed['Response_Message'] != null) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
@ -569,7 +569,7 @@ class BaseAppClient {
var model = Provider.of<ToDoCountProviderModel>(AppGlobal.context, listen: false); var model = Provider.of<ToDoCountProviderModel>(AppGlobal.context, listen: false);
_vitalSignService.weightKg = ""; _vitalSignService.weightKg = "";
_vitalSignService.heightCm = ""; _vitalSignService.heightCm = "";
model.setState(0, false); model.setState(0, false, null);
Navigator.of(AppGlobal.context).pushReplacementNamed(HOME); Navigator.of(AppGlobal.context).pushReplacementNamed(HOME);
} }

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/contactus/get_patientI_cprojects.dart'; import 'package:diplomaticquarterapp/core/model/contactus/get_patientI_cprojects.dart';
import '../base_service.dart'; import '../base_service.dart';
@ -12,6 +13,9 @@ class LiveChatService extends BaseService {
Future getAllLiveChatOrders() async { Future getAllLiveChatOrders() async {
hasError = false; hasError = false;
body['List_PatientICProjects'] = false; body['List_PatientICProjects'] = false;
body['Latitude'] = await this.sharedPref.getDouble(USER_LAT);
body['Longitude'] = await this.sharedPref.getDouble(USER_LONG);
await baseAppClient.post(GET_LIVECHAT_REQUEST, await baseAppClient.post(GET_LIVECHAT_REQUEST,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
LivechatModelList.clear(); LivechatModelList.clear();

@ -41,10 +41,13 @@ class FeedbackService extends BaseService {
_requestInsertCOCItem.deviceInfo = Platform.localHostname; _requestInsertCOCItem.deviceInfo = Platform.localHostname;
_requestInsertCOCItem.resolution = "400x847"; _requestInsertCOCItem.resolution = "400x847";
_requestInsertCOCItem.projectID = 0; _requestInsertCOCItem.projectID = 0;
_requestInsertCOCItem.tokenID = "C0c@@dm!n?T&A&A@Barcha202029582948";
_requestInsertCOCItem.identificationNo = _requestInsertCOCItem.identificationNo =
int.parse(user.patientIdentificationNo); int.parse(user.patientIdentificationNo);
if (BASE_URL.contains('uat')) { if (BASE_URL.contains('uat')) {
_requestInsertCOCItem.forDemo = true; _requestInsertCOCItem.forDemo = true;
} else {
_requestInsertCOCItem.forDemo = false;
} }
final Map<String, dynamic> body = _requestInsertCOCItem.toJson(); final Map<String, dynamic> body = _requestInsertCOCItem.toJson();

@ -18,15 +18,14 @@ class BloodSugarService extends BaseService {
Future getBloodSugar() async { Future getBloodSugar() async {
hasError = false; hasError = false;
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['isDentalAllowedBackend'] = false;
await baseAppClient.post(GET_DIABETIC_RESULT_AVERAGE, onSuccess: (dynamic response, int statusCode) {
monthDiabtectResultAverageList.clear(); monthDiabtectResultAverageList.clear();
weekDiabtectResultAverageList.clear(); weekDiabtectResultAverageList.clear();
yearDiabtecResultAverageList.clear(); yearDiabtecResultAverageList.clear();
monthDiabtecPatientResult.clear(); monthDiabtecPatientResult.clear();
weekDiabtecPatientResult.clear(); weekDiabtecPatientResult.clear();
yearDiabtecPatientResult.clear(); yearDiabtecPatientResult.clear();
body['isDentalAllowedBackend'] = false;
await baseAppClient.post(GET_DIABETIC_RESULT_AVERAGE, onSuccess: (dynamic response, int statusCode) {
response['List_MonthDiabtectResultAverage'].forEach((item) { response['List_MonthDiabtectResultAverage'].forEach((item) {
monthDiabtectResultAverageList.add(MonthDiabtectResultAverage.fromJson(item)); monthDiabtectResultAverageList.add(MonthDiabtectResultAverage.fromJson(item));
@ -47,10 +46,10 @@ class BloodSugarService extends BaseService {
Future getDiabtecResults() async { Future getDiabtecResults() async {
hasError = false; hasError = false;
await baseAppClient.post(GET_DIABTEC_RESULT, onSuccess: (dynamic response, int statusCode) {
monthDiabtecPatientResult.clear(); monthDiabtecPatientResult.clear();
weekDiabtecPatientResult.clear(); weekDiabtecPatientResult.clear();
yearDiabtecPatientResult.clear(); yearDiabtecPatientResult.clear();
await baseAppClient.post(GET_DIABTEC_RESULT, onSuccess: (dynamic response, int statusCode) {
response['List_MonthDiabtecPatientResult'].forEach((item) { response['List_MonthDiabtecPatientResult'].forEach((item) {
monthDiabtecPatientResult.add(DiabtecPatientResult.fromJson(item)); monthDiabtecPatientResult.add(DiabtecPatientResult.fromJson(item));

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
@ -119,6 +120,13 @@ class PrescriptionsService extends BaseService {
Future getListPharmacyForPrescriptions({int itemId}) async { Future getListPharmacyForPrescriptions({int itemId}) async {
hasError = false; hasError = false;
requestGetListPharmacyForPrescriptions.itemID = itemId; requestGetListPharmacyForPrescriptions.itemID = itemId;
requestGetListPharmacyForPrescriptions.latitude = await sharedPref.getDouble(USER_LAT);
requestGetListPharmacyForPrescriptions.longitude = await sharedPref.getDouble(USER_LONG);
// requestGetListPharmacyForPrescriptions.latitude = 24.709863;
// requestGetListPharmacyForPrescriptions.longitude = 46.668348;
pharmacyPrescriptionsList.clear(); pharmacyPrescriptionsList.clear();
await baseAppClient.post(GET_PHARMACY_LIST, onSuccess: (dynamic response, int statusCode) { await baseAppClient.post(GET_PHARMACY_LIST, onSuccess: (dynamic response, int statusCode) {
pharmacyPrescriptionsList.clear(); pharmacyPrescriptionsList.clear();

@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Manufacturer.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/Manufacturer.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyImageObject.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyImageObject.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
@ -12,6 +13,7 @@ class PharmacyModuleService extends BaseService {
bool isFinished = true; bool isFinished = true;
String errorMsg = ''; String errorMsg = '';
String url = ""; String url = "";
CustomerInfo customerInfo;
List<PharmacyImageObject> bannerItems = List(); List<PharmacyImageObject> bannerItems = List();
List<Manufacturer> manufacturerList = List(); List<Manufacturer> manufacturerList = List();
@ -51,8 +53,13 @@ class PharmacyModuleService extends BaseService {
hasError = false; hasError = false;
try { try {
await baseAppClient.getPharmacy(PHARMACY_CREATE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async { await baseAppClient.getPharmacy(PHARMACY_CREATE_CUSTOMER, onSuccess: (dynamic response, int statusCode) async {
if (!response['IsRegistered']) {} if (!response['IsRegistered']) {
await generatePharmacyToken();
} else {
customerInfo = CustomerInfo.fromJson(response);
await sharedPref.setObject(PHARMACY_CUSTOMER_ID, customerInfo.customerId);
}
// await generatePharmacyToken();
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;

@ -122,16 +122,13 @@ class CMCViewModel extends BaseViewModel {
Future getCustomerInfo() async { Future getCustomerInfo() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _pharmacyModuleService.generatePharmacyToken(); await _pharmacyModuleService.generatePharmacyToken();
// await _pharmacyModuleService.createUser();
if (_customerAddressesService.hasError) { if (_customerAddressesService.hasError) {
error = _customerAddressesService.error; error = _customerAddressesService.error;
await _pharmacyModuleService.createUser(); await _pharmacyModuleService.createUser();
// await _customerAddressesService.getCustomerInfo();
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else { } else {
await _pharmacyModuleService.createUser(); await _pharmacyModuleService.createUser();
// await _customerAddressesService.getCustomerInfo();
await getCustomerAddresses(); await getCustomerAddresses();
} }
} }

@ -105,16 +105,13 @@ class HomeHealthCareViewModel extends BaseViewModel {
Future getCustomerInfo() async { Future getCustomerInfo() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _pharmacyModuleService.generatePharmacyToken(); await _pharmacyModuleService.generatePharmacyToken();
// await _pharmacyModuleService.createUser();
if (_customerAddressesService.hasError) { if (_customerAddressesService.hasError) {
error = _customerAddressesService.error; error = _customerAddressesService.error;
await _pharmacyModuleService.createUser(); await _pharmacyModuleService.createUser();
// await _customerAddressesService.getCustomerInfo();
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else { } else {
// await _pharmacyModuleService.createUser(); await _pharmacyModuleService.createUser();
await _customerAddressesService.getCustomerInfo();
await getCustomerAddresses(); await getCustomerAddresses();
} }
} }

@ -115,6 +115,7 @@ class RRTViewModel extends BaseViewModel {
var success = false; var success = false;
await _service.baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER, body: body, onSuccess: (response, statusCode) { await _service.baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER, body: body, onSuccess: (response, statusCode) {
success = true; success = true;
rrtServiceData.pendingOrders.remove(order);
}, onFailure: (error, statusCode) { }, onFailure: (error, statusCode) {
AppToast.showErrorToast(message: error); AppToast.showErrorToast(message: error);
success = false; success = false;
@ -151,14 +152,27 @@ class RRTViewModel extends BaseViewModel {
Future getCustomerInfo() async { Future getCustomerInfo() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _pharmacy_service.generatePharmacyToken(); await _pharmacy_service.generatePharmacyToken();
if (_customerAddressesService.hasError) { if (_customerAddressesService.hasError) {
error = _customerAddressesService.error; error = _customerAddressesService.error;
await _pharmacy_service.createUser(); await _pharmacy_service.createUser();
await getCustomerAddresses();
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else { } else {
await _customerAddressesService.getCustomerInfo(); await _pharmacy_service.createUser();
await getCustomerAddresses(); await getCustomerAddresses();
} }
// setState(ViewState.Busy);
// await _pharmacy_service.generatePharmacyToken();
// if (_customerAddressesService.hasError) {
// error = _customerAddressesService.error;
// await _pharmacy_service.createUser();
// await getCustomerAddresses();
// setState(ViewState.ErrorLocal);
// } else {
// await _customerAddressesService.getCustomerInfo();
// await getCustomerAddresses();
// }
} }
} }

@ -20,6 +20,7 @@ class PrescriptionDeliveryViewModel extends BaseViewModel {
Future getCustomerInfo() async { Future getCustomerInfo() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _pharmacyModuleService.generatePharmacyToken().then((value) async { await _pharmacyModuleService.generatePharmacyToken().then((value) async {
// await _customerAddressesService.getCustomerInfo();
await _customerAddressesService.getCustomerInfo(); await _customerAddressesService.getCustomerInfo();
}); });
if (_customerAddressesService.hasError) { if (_customerAddressesService.hasError) {

@ -39,7 +39,7 @@ class AskDoctorViewModel extends BaseViewModel {
}); });
} else { } else {
setState(ViewState.Idle); setState(ViewState.Idle);
AppToast.showErrorToast(message: TranslationBase.of(AppGlobal.context).askDocEmpty); // AppToast.showErrorToast(message: TranslationBase.of(AppGlobal.context).askDocEmpty);
} }
} }

@ -31,6 +31,11 @@ class PrescriptionsViewModel extends BaseViewModel {
List<PharmacyPrescriptions> get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList; List<PharmacyPrescriptions> get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList;
List<PrescriptionsList> get prescriptionsOrderList => filterType == FilterType.Clinic ? _prescriptionsOrderListClinic : _prescriptionsOrderListHospital; List<PrescriptionsList> get prescriptionsOrderList => filterType == FilterType.Clinic ? _prescriptionsOrderListClinic : _prescriptionsOrderListHospital;
List<PrescriptionsList> prescriptionsOrderListByValue(filterValue) {
return filterValue == FilterType.Clinic ? _prescriptionsOrderListClinic : _prescriptionsOrderListHospital;
}
get isMedDeliveryAllowed => _prescriptionsService.isMedDeliveryAllowed; get isMedDeliveryAllowed => _prescriptionsService.isMedDeliveryAllowed;
getPrescriptions() async { getPrescriptions() async {
setState(ViewState.Busy); setState(ViewState.Busy);

@ -1,26 +1,28 @@
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart';
import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_response_model.dart'; import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_response_model.dart';
import 'package:diplomaticquarterapp/core/model/notifications/mark_message_as_read_request_model.dart'; import 'package:diplomaticquarterapp/core/model/notifications/mark_message_as_read_request_model.dart';
import 'package:diplomaticquarterapp/core/service/notifications_service.dart'; import 'package:diplomaticquarterapp/core/service/notifications_service.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
class NotificationViewModel extends BaseViewModel { class NotificationViewModel extends BaseViewModel {
NotificationService _notificationService = locator<NotificationService>(); NotificationService _notificationService = locator<NotificationService>();
ToDoCountProviderModel model = Provider.of<ToDoCountProviderModel>(AppGlobal.context);
List<GetNotificationsResponseModel> get notifications => List<GetNotificationsResponseModel> get notifications => _notificationService.notificationsList;
_notificationService.notificationsList;
Future getNotifications( Future getNotifications(GetNotificationsRequestModel getNotificationsRequestModel, BuildContext context) async {
GetNotificationsRequestModel getNotificationsRequestModel, BuildContext context) async { if (getNotificationsRequestModel.currentPage == 0) setState(ViewState.Busy);
if(getNotificationsRequestModel.currentPage == 0)
setState(ViewState.Busy);
await _notificationService await _notificationService.getAllNotifications(getNotificationsRequestModel);
.getAllNotifications(getNotificationsRequestModel);
if (_notificationService.hasError) { if (_notificationService.hasError) {
error = _notificationService.error; error = _notificationService.error;
setState(ViewState.Error); setState(ViewState.Error);
@ -31,9 +33,16 @@ class NotificationViewModel extends BaseViewModel {
Future markAsRead(id) async { Future markAsRead(id) async {
// setState(ViewState.Busy); // setState(ViewState.Busy);
MarkMessageAsReadRequestModel markMessageAsReadRequestModel = MarkMessageAsReadRequestModel markMessageAsReadRequestModel = new MarkMessageAsReadRequestModel(notificationPoolID: id);
new MarkMessageAsReadRequestModel(notificationPoolID: id); final authService = new AuthProvider();
await _notificationService.markAsRead(markMessageAsReadRequestModel); await _notificationService.markAsRead(markMessageAsReadRequestModel);
await authService.getDashboard().then((value) {
var notificationCount = '';
notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString();
model.setState(model.count, true, notificationCount);
sharedPref.setString(NOTIFICATION_COUNT, notificationCount);
});
setState(ViewState.Idle); setState(ViewState.Idle);
} }
} }

@ -2,15 +2,19 @@ import 'package:flutter/cupertino.dart';
class ToDoCountProviderModel with ChangeNotifier { class ToDoCountProviderModel with ChangeNotifier {
int _count; int _count;
String _notificationsCount;
bool _isShowBadge = false; bool _isShowBadge = false;
int get count => _count == null ? 0 : _count; int get count => _count == null ? 0 : _count;
String get notificationsCount => _notificationsCount == null ? "0" : _notificationsCount;
bool get isShowBadge => _isShowBadge; bool get isShowBadge => _isShowBadge;
void setState(int count, bool isShowBadge) { void setState(int count, bool isShowBadge, String notifCount) {
_count = count; _count = count;
_isShowBadge = isShowBadge; _isShowBadge = isShowBadge;
_notificationsCount = notifCount;
notifyListeners(); notifyListeners();
} }
} }

@ -295,13 +295,21 @@ class GetAllSharedRecordsByStatusList {
int iD; int iD;
int patientID; int patientID;
int responseID; int responseID;
Null relationshipID;
Null relationship;
Null relationshipN;
int regionID; int regionID;
int status; int status;
dynamic isActive; Null isActive;
String editedOn; String editedOn;
String createdOn; String createdOn;
int age;
String emaiLAddress; String emaiLAddress;
int gender;
String genderDescription;
String genderImage;
String mobileNumber; String mobileNumber;
int patientDataVerified;
String patientIdenficationNumber; String patientIdenficationNumber;
String patientName; String patientName;
String statusDescription; String statusDescription;
@ -310,13 +318,21 @@ class GetAllSharedRecordsByStatusList {
{this.iD, {this.iD,
this.patientID, this.patientID,
this.responseID, this.responseID,
this.relationshipID,
this.relationship,
this.relationshipN,
this.regionID, this.regionID,
this.status, this.status,
this.isActive, this.isActive,
this.editedOn, this.editedOn,
this.createdOn, this.createdOn,
this.age,
this.emaiLAddress, this.emaiLAddress,
this.gender,
this.genderDescription,
this.genderImage,
this.mobileNumber, this.mobileNumber,
this.patientDataVerified,
this.patientIdenficationNumber, this.patientIdenficationNumber,
this.patientName, this.patientName,
this.statusDescription}); this.statusDescription});
@ -325,13 +341,21 @@ class GetAllSharedRecordsByStatusList {
iD = json['ID']; iD = json['ID'];
patientID = json['PatientID']; patientID = json['PatientID'];
responseID = json['ResponseID']; responseID = json['ResponseID'];
relationshipID = json['RelationshipID'];
relationship = json['Relationship'];
relationshipN = json['RelationshipN'];
regionID = json['RegionID']; regionID = json['RegionID'];
status = json['Status']; status = json['Status'];
isActive = json['IsActive']; isActive = json['IsActive'];
editedOn = json['EditedOn']; editedOn = json['EditedOn'];
createdOn = json['CreatedOn']; createdOn = json['CreatedOn'];
age = json['Age'];
emaiLAddress = json['EmaiLAddress']; emaiLAddress = json['EmaiLAddress'];
gender = json['Gender'];
genderDescription = json['GenderDescription'];
genderImage = json['GenderImage'];
mobileNumber = json['MobileNumber']; mobileNumber = json['MobileNumber'];
patientDataVerified = json['PatientDataVerified'];
patientIdenficationNumber = json['PatientIdenficationNumber']; patientIdenficationNumber = json['PatientIdenficationNumber'];
patientName = json['PatientName']; patientName = json['PatientName'];
statusDescription = json['StatusDescription']; statusDescription = json['StatusDescription'];
@ -342,13 +366,21 @@ class GetAllSharedRecordsByStatusList {
data['ID'] = this.iD; data['ID'] = this.iD;
data['PatientID'] = this.patientID; data['PatientID'] = this.patientID;
data['ResponseID'] = this.responseID; data['ResponseID'] = this.responseID;
data['RelationshipID'] = this.relationshipID;
data['Relationship'] = this.relationship;
data['RelationshipN'] = this.relationshipN;
data['RegionID'] = this.regionID; data['RegionID'] = this.regionID;
data['Status'] = this.status; data['Status'] = this.status;
data['IsActive'] = this.isActive; data['IsActive'] = this.isActive;
data['EditedOn'] = this.editedOn; data['EditedOn'] = this.editedOn;
data['CreatedOn'] = this.createdOn; data['CreatedOn'] = this.createdOn;
data['Age'] = this.age;
data['EmaiLAddress'] = this.emaiLAddress; data['EmaiLAddress'] = this.emaiLAddress;
data['Gender'] = this.gender;
data['GenderDescription'] = this.genderDescription;
data['GenderImage'] = this.genderImage;
data['MobileNumber'] = this.mobileNumber; data['MobileNumber'] = this.mobileNumber;
data['PatientDataVerified'] = this.patientDataVerified;
data['PatientIdenficationNumber'] = this.patientIdenficationNumber; data['PatientIdenficationNumber'] = this.patientIdenficationNumber;
data['PatientName'] = this.patientName; data['PatientName'] = this.patientName;
data['StatusDescription'] = this.statusDescription; data['StatusDescription'] = this.statusDescription;

@ -1,5 +1,6 @@
class HeaderModel { class HeaderModel {
String doctorName; String doctorName;
int doctorId;
String doctorImageURL; String doctorImageURL;
List<String> speciality; List<String> speciality;
String invoiceNo; String invoiceNo;
@ -12,6 +13,6 @@ class HeaderModel {
int totalReviews; int totalReviews;
String email; String email;
HeaderModel(this.doctorName, this.doctorImageURL, this.speciality, this.invoiceNo, this.projectName, this.date, this.time, this.nationalityFlagURL, this.doctorRate, this.actualDoctorRate, HeaderModel(this.doctorName, this.doctorId, this.doctorImageURL, this.speciality, this.invoiceNo, this.projectName, this.date, this.time, this.nationalityFlagURL, this.doctorRate,
this.totalReviews, this.email); this.actualDoctorRate, this.totalReviews, this.email);
} }

@ -14,6 +14,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/photo_view_page.dart'; import 'package:diplomaticquarterapp/widgets/photo_view_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'new_cmc_step_tow_page.dart'; import 'new_cmc_step_tow_page.dart';
@ -124,10 +125,8 @@ class _NewCMCStepOnePageState extends State<NewCMCStepOnePage> {
), ),
margin: EdgeInsets.all(12), margin: EdgeInsets.all(12),
child: IconButton( child: IconButton(
icon: Icon( icon: SvgPicture.asset("assets/images/new/ic_zoom.svg",color: Colors.white,),
Icons.view_carousel_rounded, padding: EdgeInsets.all(12),
color: Colors.white,
),
onPressed: () { onPressed: () {
showDraggableDialog(context, PhotoViewPage(projectViewModel.isArabic ? "assets/images/cc_ar.png" : "assets/images/cc_en.png")); showDraggableDialog(context, PhotoViewPage(projectViewModel.isArabic ? "assets/images/cc_ar.png" : "assets/images/cc_en.png"));
}, },

@ -39,17 +39,9 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
TextEditingController _mobileTextController = TextEditingController(); TextEditingController _mobileTextController = TextEditingController();
bool _isSubmitted = false; bool _isSubmitted = false;
dynamic _selectedCountry = { dynamic _selectedCountry = {"name": "Saudi Arabia", "name_ar": "المملكة العربية السعودية", "code": "+966", "countryCode": "SA", "pattern": "5xxxxxxxx", "maxLength": 9};
"name": "Saudi Arabia",
"name_ar": "المملكة العربية السعودية",
"code": "+966",
"countryCode": "SA",
"pattern": "5xxxxxxxx",
"maxLength": 9
};
SearchCriteriaModel selectedCriteria = SearchCriteriaModel( SearchCriteriaModel selectedCriteria = SearchCriteriaModel(name: "Identification Number", nameAr: "رقم المحول", value: 1);
name: "Identification Number", nameAr: "رقم المحول", value: 1);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -59,23 +51,15 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
if (projectViewModel.isLogin) { if (projectViewModel.isLogin) {
Future.delayed(new Duration(milliseconds: 300)).then((value) async { Future.delayed(new Duration(milliseconds: 300)).then((value) async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
SearchEReferralRequestModel searchEReferralRequestModel = SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel(
new SearchEReferralRequestModel( patientMobileNumber: (projectViewModel.user.outSA == 0 ? "966" : "971") + projectViewModel.user.mobileNumber.substring(1, projectViewModel.user.mobileNumber.length),
patientMobileNumber: (projectViewModel.user.outSA == 0
? "966"
: "971") +
projectViewModel.user.mobileNumber
.substring(1, projectViewModel.user.mobileNumber.length),
); );
if (selectedCriteria.value == 1) { if (selectedCriteria.value == 1) {
searchEReferralRequestModel.identificationNo = searchEReferralRequestModel.identificationNo = _searchTextController.text;
_searchTextController.text;
searchEReferralRequestModel.referralNumber = 0; searchEReferralRequestModel.referralNumber = 0;
} else { } else {
searchEReferralRequestModel.referralNumber = searchEReferralRequestModel.referralNumber = int.parse(_searchTextController.text);
int.parse(_searchTextController.text); searchEReferralRequestModel.identificationNo = projectViewModel.user.patientIdentificationNo;
searchEReferralRequestModel.identificationNo =
projectViewModel.user.patientIdentificationNo;
} }
await model.getEReferrals(searchEReferralRequestModel); await model.getEReferrals(searchEReferralRequestModel);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
@ -102,15 +86,10 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [Texts(getSearchCriteriaName()), Icon(Icons.arrow_drop_down)],
Texts(getSearchCriteriaName()),
Icon(Icons.arrow_drop_down)
],
), ),
), ),
), ),
@ -118,9 +97,7 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
height: 12, height: 12,
), ),
NewTextFields( NewTextFields(
hintText: selectedCriteria.value == 1 hintText: selectedCriteria.value == 1 ? "Enter Patient Identification No" : "Enter Referral Number",
? "Enter Patient Identification No"
: "Enter Referral Number",
controller: _searchTextController, controller: _searchTextController,
onChanged: (_) { onChanged: (_) {
setState(() {}); setState(() {});
@ -135,15 +112,10 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [Texts(getCountryName()), Icon(Icons.arrow_drop_down)],
Texts(getCountryName()),
Icon(Icons.arrow_drop_down)
],
), ),
), ),
), ),
@ -155,31 +127,21 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
onChange: (_) { onChange: (_) {
setState(() {}); setState(() {});
}, },
code: _selectedCountry == null code: _selectedCountry == null ? "11" : _selectedCountry["code"],
? "11"
: _selectedCountry["code"],
), ),
SizedBox( SizedBox(
height: 12, height: 12,
), ),
if ((model.state == ViewState.Idle && if ((model.state == ViewState.Idle && model.allReferral.length == 0)) Center(child: Text(TranslationBase.of(context).noSearchResult)),
model.allReferral.length == 0)) if ((model.state == ViewState.ErrorLocal)) AppEmbeddedError(error: model.error),
Center(
child: Text(
TranslationBase.of(context).noSearchResult)),
if ((model.state == ViewState.ErrorLocal))
AppEmbeddedError(error: model.error),
model.allReferral.length > 0 model.allReferral.length > 0
? NetworkBaseView( ? NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: ListView.separated( child: ListView.separated(
separatorBuilder: (context, index) => separatorBuilder: (context, index) => SizedBox(height: 0),
SizedBox(height: 0),
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
itemCount: model.allReferral == null itemCount: model.allReferral == null ? 0 : model.allReferral.length,
? 0
: model.allReferral.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return Container( return Container(
width: double.infinity, width: double.infinity,
@ -188,9 +150,7 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: ReferralDetails( page: ReferralDetails(referral: model.allReferral[index]),
referral:
model.allReferral[index]),
), ),
); );
}, },
@ -200,71 +160,22 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: Row( child: Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Column( Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [ children: [
Text( Text(projectViewModel.isArabic ? model.allReferral[index].statusAr : model.allReferral[index].status,
projectViewModel.isArabic style: TextStyle(fontSize: 14.0, letterSpacing: -0.56, fontWeight: FontWeight.bold)),
? model
.allReferral[
index]
.statusAr
: model
.allReferral[
index]
.status,
style: TextStyle(
fontSize: 14.0,
letterSpacing: -0.56,
fontWeight:
FontWeight.bold)),
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(top: 5.0),
top: 5.0), child: myRichText(TranslationBase.of(context).patientName + ": ", model.allReferral[index].patientName, projectViewModel.isArabic)),
child: myRichText( myRichText(TranslationBase.of(context).hospital + ": ", model.allReferral[index].preferredBranchName, projectViewModel.isArabic),
TranslationBase.of( myRichText(TranslationBase.of(context).referralDate + ": ",
context) DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDateNoTimeZone(model.allReferral[index].referralDate)), projectViewModel.isArabic),
.patientName +
": ",
model
.allReferral[
index]
.patientName,
projectViewModel
.isArabic)),
myRichText(
TranslationBase.of(
context)
.hospital +
": ",
model.allReferral[index]
.preferredBranchName,
projectViewModel
.isArabic),
myRichText(
TranslationBase.of(
context)
.referralDate +
": ",
DateUtil.getMonthDayYearDateFormatted(
DateUtil.convertStringToDateNoTimeZone(
model
.allReferral[
index]
.referralDate)),
projectViewModel
.isArabic),
], ],
), ),
Icon(projectViewModel.isArabic Icon(projectViewModel.isArabic ? Icons.arrow_back_ios_outlined : Icons.arrow_forward_outlined),
? Icons
.arrow_back_ios_outlined
: Icons
.arrow_forward_ios_outlined),
], ],
), ),
), ),
@ -289,23 +200,17 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
padding: EdgeInsets.all(14), padding: EdgeInsets.all(14),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).search, TranslationBase.of(context).search,
(_searchTextController.text.isEmpty || (_searchTextController.text.isEmpty || _mobileTextController.text.isEmpty)
_mobileTextController.text.isEmpty)
? null ? null
: () async { : () async {
SearchEReferralRequestModel SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel(
searchEReferralRequestModel = patientMobileNumber: _selectedCountry['code'] + _mobileTextController.text,
new SearchEReferralRequestModel(
patientMobileNumber: _selectedCountry['code'] +
_mobileTextController.text,
); );
if (selectedCriteria.value == 1) { if (selectedCriteria.value == 1) {
searchEReferralRequestModel.identificationNo = searchEReferralRequestModel.identificationNo = _searchTextController.text;
_searchTextController.text;
searchEReferralRequestModel.referralNumber = 0; searchEReferralRequestModel.referralNumber = 0;
} else { } else {
searchEReferralRequestModel.referralNumber = searchEReferralRequestModel.referralNumber = int.parse(_searchTextController.text);
int.parse(_searchTextController.text);
searchEReferralRequestModel.identificationNo = ''; searchEReferralRequestModel.identificationNo = '';
} }
await model.getEReferrals(searchEReferralRequestModel); await model.getEReferrals(searchEReferralRequestModel);

@ -179,6 +179,7 @@ class _NewHomeHealthCareStepThreePageState extends State<NewHomeHealthCareStepTh
widget.model.orderId.toString(), widget.model.orderId.toString(),
onClick: () { onClick: () {
Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: HomeHealthCarePage)); Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: HomeHealthCarePage));
Navigator.push(context, FadePage(page: HomeHealthCarePage()));
}, },
); );
} }

@ -162,11 +162,15 @@ class _NewHomeHealthCarePageState extends State<NewHomeHealthCarePage> with Tick
TranslationBase.of(context).serviceName + ": ", TranslationBase.of(context).serviceName + ": ",
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
), ),
Column(
children: [
...List.generate( ...List.generate(
widget.model.hhcAllOrderDetail.length, widget.model.hhcAllOrderDetail.length,
(index) => Container( (index) => Container(
child: Texts( child: Texts(
projectViewModel.isArabic ? widget.model.hhcAllOrderDetail[index].descriptionN : widget.model.hhcAllOrderDetail[index].description.capitalize(), projectViewModel.isArabic
? widget.model.hhcAllOrderDetail[index].descriptionN
: widget.model.hhcAllOrderDetail[index].description.capitalize(),
fontSize: 13, fontSize: 13,
bold: false, bold: false,
), ),
@ -175,6 +179,8 @@ class _NewHomeHealthCarePageState extends State<NewHomeHealthCarePage> with Tick
], ],
) )
], ],
)
],
), ),
), ),
Column( Column(

@ -121,7 +121,7 @@ class OrdersLogDetailsPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
TranslationBase.of(context).serviceName + ": ", TranslationBase.of(context).hospital + ": ",
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
), ),
Expanded( Expanded(

@ -1,13 +1,11 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/H2O/user_detail_model.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/H2O/user_detail_model.dart';
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/H2O_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -22,6 +20,7 @@ import 'Dialog/setting_page_radio_button_list_dialog.dart';
class H2oSetting extends StatefulWidget { class H2oSetting extends StatefulWidget {
final UserDetailModel userDetailModel; final UserDetailModel userDetailModel;
final H2OViewModel viewModel; final H2OViewModel viewModel;
H2oSetting({Key key, this.userDetailModel, this.viewModel}) : super(key: key); H2oSetting({Key key, this.userDetailModel, this.viewModel}) : super(key: key);
@override @override
@ -34,6 +33,9 @@ class _H2oSettingState extends State<H2oSetting> {
TextEditingController _nameController = TextEditingController(); TextEditingController _nameController = TextEditingController();
TextEditingController _heightController = TextEditingController(); TextEditingController _heightController = TextEditingController();
TextEditingController _weightController = TextEditingController(); TextEditingController _weightController = TextEditingController();
List<PopupMenuItem> _weightPopupList = List();
List<PopupMenuItem> _heightPopupList = List();
bool _isUnitML = true; bool _isUnitML = true;
bool _isGenderMale = false; bool _isGenderMale = false;
bool _isHeightCM = false; bool _isHeightCM = false;
@ -68,6 +70,7 @@ class _H2oSettingState extends State<H2oSetting> {
} }
SharedPreferences prefs; SharedPreferences prefs;
void readPrefs() async { void readPrefs() async {
prefs = await SharedPreferences.getInstance(); prefs = await SharedPreferences.getInstance();
_isUnitML = (prefs.getString(H2O_UNIT) ?? "ml") == "ml" ? true : false; _isUnitML = (prefs.getString(H2O_UNIT) ?? "ml") == "ml" ? true : false;
@ -92,109 +95,122 @@ class _H2oSettingState extends State<H2oSetting> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
_weightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).kg), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).lb), value: false)];
_heightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).cm), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).ft), value: false)];
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).h2o, appBarTitle: TranslationBase.of(context).h2o,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF7F7F7),
showHomeAppBarIcon: false, showHomeAppBarIcon: false,
body: SingleChildScrollView( body: Column(
padding: EdgeInsets.fromLTRB(8, 8, 8, 80), children: [
Expanded(
child: SingleChildScrollView(
physics: BouncingScrollPhysics(),
padding: EdgeInsets.all(21),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
TextField( Text(
controller: _nameController, TranslationBase.of(context).enterDetailBelow,
decoration: InputDecoration( style: TextStyle(
labelText: TranslationBase.of(context).enterNameHere, fontSize: 19,
labelStyle: TextStyle(color: Colors.black87), height: 23 / 19,
fillColor: Colors.white, fontWeight: FontWeight.w700,
filled: true, color: Color(0xff2E303A),
border: UnderlineInputBorder( letterSpacing: -1.14,
borderSide: BorderSide( ),
width: 0, ),
style: BorderStyle.none, SizedBox(height: 12),
), _containerWidget(inputWidget(TranslationBase.of(context).enterNameHere, TranslationBase.of(context).name, _nameController)),
borderRadius: BorderRadius.circular(6.0), SizedBox(height: 16),
), Text(
), TranslationBase.of(context).preferredunit,
), style: TextStyle(
SizedBox(height: 8), fontSize: 14,
Text(TranslationBase.of(context).preferredunit), height: 21 / 14,
SizedBox(height: 8), fontWeight: FontWeight.w600,
_commonButtonsRow(TranslationBase.of(context).ml, TranslationBase.of(context).l, _isUnitML, (value) { color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
SizedBox(height: 12),
_commonRadioButtonsRow(TranslationBase.of(context).mililitre, TranslationBase.of(context).litre, _isUnitML, (value) {
if (_isUnitML != value) { if (_isUnitML != value) {
setState(() { setState(() {
_isUnitML = value; _isUnitML = value;
}); });
} }
}), }),
Padding( SizedBox(height: 12),
padding: EdgeInsets.only(top: 8.0, bottom: 8.0), Text(
child: Divider(height: 1.5, color: Colors.black54), TranslationBase.of(context).pleaseSelectGender,
), style: TextStyle(
Text(TranslationBase.of(context).gender), fontSize: 14,
SizedBox(height: 8), height: 21 / 14,
_commonButtonsRow(TranslationBase.of(context).male, TranslationBase.of(context).female, _isGenderMale, (value) { fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
SizedBox(height: 12),
_commonRadioButtonsRow(TranslationBase.of(context).male, TranslationBase.of(context).female, _isGenderMale, (value) {
if (_isGenderMale != value) { if (_isGenderMale != value) {
setState(() { setState(() {
_isGenderMale = value; _isGenderMale = value;
}); });
} }
}), }),
Padding( SizedBox(height: 18),
padding: EdgeInsets.only(top: 8.0, bottom: 8.0), _commonInputAndUnitRow(
child: Divider(height: 1.5, color: Colors.black54), TranslationBase.of(context).height,
), _heightController,
Text(TranslationBase.of(context).height), 1,
_commonSlidersRow(_heightController, 1, 270, _heightValue, (text) { 270,
_heightValue,
(text) {
_heightController.text = text; _heightController.text = text;
}, (value) { },
setState(() { (value) {
_heightValue = value; _heightValue = value;
}); },
}), _isHeightCM ? TranslationBase.of(context).cm : TranslationBase.of(context).ft,
SizedBox(height: 8), (value) {
Text(TranslationBase.of(context).heightUnit),
SizedBox(height: 8),
_commonButtonsRow(TranslationBase.of(context).cm, TranslationBase.of(context).ft, _isHeightCM, (value) {
if (_isHeightCM != value) { if (_isHeightCM != value) {
setState(() { setState(() {
_isHeightCM = value; _isHeightCM = value;
}); });
} }
}), },
SizedBox(height: 8), _heightPopupList),
_commonSlidersRow(_weightController, 1, 250, _weightValue, (text) { SizedBox(height: 12),
_weightController.text = text; _commonInputAndUnitRow(
}, (value) { TranslationBase.of(context).weight,
setState(() { _weightController,
1,
250,
_weightValue,
(text) {
_heightController.text = text;
},
(value) {
_weightValue = value; _weightValue = value;
}); },
}), _isWeightKG ? TranslationBase.of(context).kg : TranslationBase.of(context).lb,
SizedBox(height: 8), (value) {
Text(TranslationBase.of(context).weightUnit),
SizedBox(height: 8),
_commonButtonsRow(TranslationBase.of(context).kg, TranslationBase.of(context).lb, _isWeightKG, (value) {
if (_isWeightKG != value) { if (_isWeightKG != value) {
setState(() { setState(() {
_isWeightKG = value; _isWeightKG = value;
}); });
} }
}), },
Padding( _weightPopupList),
padding: EdgeInsets.only(top: 8.0, bottom: 8.0), SizedBox(height: 12),
child: Divider(height: 1.5, color: Colors.black54), _containerWidget(
), _commonDropDownView(TranslationBase.of(context).dateOfBirth, DateUtil.getFormattedDate(_dobDate, "dd MMMM, yyyy"), () {
Container(
padding: EdgeInsets.all(8),
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8), color: Colors.white),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${TranslationBase.of(context).birth_date}:"),
SizedBox(height: 8),
InkWell(
onTap: () {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
builder: (context) { builder: (context) {
@ -245,17 +261,11 @@ class _H2oSettingState extends State<H2oSetting> {
]), ]),
); );
}); });
}, // implement cupertino dialog to select date }, iconData: Icons.calendar_today),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Text(DateUtil.getFormattedDate(_dobDate, "yyyy-MM-dd")), Icon(Icons.arrow_drop_down_outlined)]),
)
],
),
), ),
SizedBox(height: 8), SizedBox(height: 12),
_commonDialogSelectorRow(TranslationBase.of(context).activityLevel, _activityLevelListEng[_selectedActiveLevel - 1], () { _containerWidget(
_commonDropDownView(TranslationBase.of(context).activityLevel, _activityLevelListEng[_selectedActiveLevel - 1], () {
showDialog( showDialog(
context: context, context: context,
child: CommonRadioButtonDialog( child: CommonRadioButtonDialog(
@ -271,8 +281,21 @@ class _H2oSettingState extends State<H2oSetting> {
), ),
); );
}), }),
SizedBox(height: 8), ),
_commonDialogSelectorRow(TranslationBase.of(context).reminderLabel, _remindedTimeListEng[_selectedRemindedTime], () { SizedBox(height: 18),
Text(
TranslationBase.of(context).reminderLabel,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
SizedBox(height: 12),
_containerWidget(
_commonDropDownView(TranslationBase.of(context).reminderTimesLabel, _remindedTimeListEng[_selectedRemindedTime], () {
showDialog( showDialog(
context: context, context: context,
child: CommonRadioButtonDialog( child: CommonRadioButtonDialog(
@ -287,29 +310,190 @@ class _H2oSettingState extends State<H2oSetting> {
), ),
); );
}), }),
SizedBox(height: 16),
SizedBox(
height: 50,
width: MediaQuery.of(context).size.width,
child: FlatButton(
color: Theme.of(context).appBarTheme.color,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
), ),
onPressed: _updateUserDetails, ],
child: Text( ),
),
),
Container(
color: Colors.white,
padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: DefaultButton(
TranslationBase.of(context).save, TranslationBase.of(context).save,
style: TextStyle(color: Colors.white, fontSize: 18, fontWeight: FontWeight.w600), _updateUserDetails,
color: Color(0xff349745),
),
),
],
),
);
}
Widget _containerWidget(Widget child) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: child,
);
}
Widget _commonDropDownView(String title, String value, VoidCallback callback, {IconData iconData}) {
return InkWell(
onTap: callback,
child: Row(
children: [
Expanded(
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(
title,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.44,
),
), ),
Text(
value,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
), ),
),
]),
),
Icon(
iconData ?? Icons.keyboard_arrow_down_sharp,
color: Color(0xff2E303A),
) )
], ],
), ),
);
}
Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller, {String prefix, bool isEnable = true, bool hasSelection = false}) {
return InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: TextInputType.number,
controller: _controller,
onChanged: (value) => {
// validateForm()
},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
prefixIconConstraints: BoxConstraints(minWidth: 50),
prefixIcon: prefix == null
? null
: Text(
"+" + prefix,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w500,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
), ),
); );
} }
Widget _commonButtonsRow(String rightText, String leftText, bool checkParam, Function(bool) callBack) { Widget _commonRadioButtonsRow(String rightText, String leftText, bool checkParam, Function(bool) callBack) {
return Row(
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(width: 22, height: 22, child: Radio(value: true, groupValue: checkParam, onChanged: callBack)),
SizedBox(width: 8),
Text(
rightText,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w600,
color: Color(0xff575757),
letterSpacing: -0.44,
),
),
],
),
SizedBox(width: 12),
Row(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(width: 22, height: 22, child: Radio(value: false, groupValue: checkParam, onChanged: callBack)),
SizedBox(width: 8),
Text(
leftText,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w600,
color: Color(0xff575757),
letterSpacing: -0.44,
),
),
],
),
],
);
return Row(children: [ return Row(children: [
Expanded( Expanded(
child: SizedBox( child: SizedBox(
@ -341,19 +525,28 @@ class _H2oSettingState extends State<H2oSetting> {
]); ]);
} }
Widget _commonSlidersRow(_controller, double _minValue, double _maxValue, double _valueOrg, Function(String) onTextValueChange, Function(double) onValueChange) { Widget _commonInputAndUnitRow(_title, _controller, double _minValue, double _maxValue, double _valueOrg, Function(String) onTextValueChange, Function(double) onValueChange, String unitTitle,
return Container( Function(bool) onUnitTap, _list) {
margin: EdgeInsets.only(top: 6), return _containerWidget(
padding: EdgeInsets.all(6), Row(
color: Colors.white,
height: 50,
child: Row(
children: [ children: [
SizedBox( Expanded(
width: 75, flex: 3,
child: TextField( child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_title,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.44,
),
),
TextField(
controller: _controller, controller: _controller,
textAlign: TextAlign.center,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
onChanged: (value) { onChanged: (value) {
double _value = double.parse(value); double _value = double.parse(value);
@ -373,69 +566,44 @@ class _H2oSettingState extends State<H2oSetting> {
inputFormatters: [ inputFormatters: [
FilteringTextInputFormatter.allow(RegExp(r'[0-9]')), FilteringTextInputFormatter.allow(RegExp(r'[0-9]')),
], ],
decoration: InputDecoration( style: TextStyle(
contentPadding: EdgeInsets.only(left: 4, right: 4), color: Color(0xff575757),
fillColor: Colors.white, letterSpacing: -0.56,
filled: true,
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
width: 1,
color: Colors.grey,
style: BorderStyle.solid,
), ),
borderRadius: BorderRadius.circular(6.0), decoration: InputDecoration(
), isDense: true,
enabledBorder: OutlineInputBorder( hintText: "0",
borderSide: BorderSide( hintStyle: TextStyle(
width: 1, fontSize: 14,
color: Colors.grey, height: 21 / 14,
style: BorderStyle.solid, fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
), ),
borderRadius: BorderRadius.circular(6.0), contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
), ),
), ),
],
), ),
), ),
Container(height: 34, width: 1, color: Color(0xffE0E0E0), margin: EdgeInsets.only(left: 12, right: 12)),
Expanded( Expanded(
flex: 6, flex: 1,
child: Slider( child: PopupMenuButton(
min: _minValue, child: _commonDropDownView(TranslationBase.of(context).unit, unitTitle, null),
max: _maxValue, onSelected: (value) {
activeColor: Colors.redAccent, onUnitTap(value);
inactiveColor: Colors.redAccent.withOpacity(.3),
value: _valueOrg,
onChanged: (value) {
onTextValueChange(value.toStringAsFixed(0));
onValueChange(value);
}, },
), itemBuilder: (context) => _list),
) )
], ],
), ),
); );
} }
Widget _commonDialogSelectorRow(String title, String selectedText, VoidCallback onPressed) {
return Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [
Text(title),
SizedBox(height: 8),
InkWell(
onTap: onPressed,
child: Container(
height: 50,
padding: EdgeInsets.all(8),
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8), color: Colors.white),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Text(selectedText), Icon(Icons.arrow_drop_down_outlined)],
),
),
)
]);
}
void _updateUserDetails() async { void _updateUserDetails() async {
_userDetailModel.height = _heightValue; _userDetailModel.height = _heightValue;
_userDetailModel.weight = _weightValue; _userDetailModel.weight = _weightValue;
@ -469,6 +637,7 @@ class _H2oSettingState extends State<H2oSetting> {
} }
final CalendarPlugin _myPlugin = CalendarPlugin(); final CalendarPlugin _myPlugin = CalendarPlugin();
void _addReminderToCalender(int _selectedRemindedTime) async { void _addReminderToCalender(int _selectedRemindedTime) async {
bool _calendarPermission = await _myPlugin.hasPermissions(); bool _calendarPermission = await _myPlugin.hasPermissions();
if (_calendarPermission) { if (_calendarPermission) {

@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/h20_setting.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/h20_setting.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/month_page.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/month_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/today_page.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/today_page.dart';
@ -13,11 +14,12 @@ import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart'; import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class H2OPage extends StatefulWidget { class H2OPage extends StatefulWidget {
@override @override
@ -44,24 +46,27 @@ class _H2OPageState extends State<H2OPage> with SingleTickerProviderStateMixin {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<H2OViewModel>( return BaseView<H2OViewModel>(
onModelReady: (model) => model.getUserDetail(), onModelReady: (model) => model.getUserDetail(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).waterTracker, appBarTitle: TranslationBase.of(context).waterTracker,
description: TranslationBase.of(context).h2oInfo, description: TranslationBase.of(context).h2oInfo,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF7F7F7),
imagesInfo: [ imagesInfo: [
ImagesInfo( ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/h2o/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/h2o/ar/0.png')
imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/h2o/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/h2o/ar/0.png')
], ],
showHomeAppBarIcon: false, showHomeAppBarIcon: false,
baseViewModel: model, baseViewModel: model,
isHelp: true, isHelp: true,
appBarIcons: [ appBarIcons: [
model.isLogin if (model.isLogin)
? IconButton( IconButton(
icon: Image.asset("assets/images/new-design/setting_gear_icon.png"), icon: Icon(Icons.settings),
color: Colors.white, color: Color(0xff2B353E),
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
@ -70,72 +75,92 @@ class _H2OPageState extends State<H2OPage> with SingleTickerProviderStateMixin {
), ),
); );
}, },
) ),
: Container(),
], ],
body: Scaffold( body: Scaffold(
extendBodyBehindAppBar: true, // extendBodyBehindAppBar: true,
appBar: PreferredSize( // appBar: PreferredSize(
preferredSize: Size.fromHeight(65.0), // preferredSize: Size.fromHeight(65.0),
child: Stack( // child: Stack(
// children: <Widget>[
// Positioned(
// bottom: 1,
// left: 0,
// right: 0,
// child: BackdropFilter(
// filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
// child: Container(
// color: Theme.of(context).scaffoldBackgroundColor.withOpacity(0.8),
// height: 70.0,
// ),
// ),
// ),
// Center(
// child: Container(
// height: 60.0,
// alignment: Alignment.center,
// // margin: EdgeInsets.only(top: 10.0),
// // width: MediaQuery.of(context).size.width * 0.9,
//
// child: TabBar(
// isScrollable: false,
// controller: _tabController,
// indicatorWeight: 5.0,
// indicatorSize: TabBarIndicatorSize.tab,
// indicatorColor: Colors.red[800],
// labelColor: Theme.of(context).primaryColor,
// labelPadding: EdgeInsets.only(top: 4.0, left: 10.0, right: 13.0),
// unselectedLabelColor: Colors.grey[800],
// tabs: [
// Container(
// width: MediaQuery.of(context).size.width * 0.28,
// child: Center(
// child: Texts(TranslationBase.of(context).today),
// ),
// ),
// Container(
// width: MediaQuery.of(context).size.width * 0.28,
// child: Center(
// child: Texts(TranslationBase.of(context).week),
// ),
// ),
// Container(
// width: MediaQuery.of(context).size.width * 0.28,
// child: Center(
// child: Texts(TranslationBase.of(context).month),
// ),
// ),
// ],
// ),
// ),
// ),
// ],
// ),
// ),
// backgroundColor: Colors.white,
body: Column(
children: <Widget>[ children: <Widget>[
Positioned( TabBar(
bottom: 1,
left: 0,
right: 0,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Theme.of(context).scaffoldBackgroundColor.withOpacity(0.8),
height: 70.0,
),
),
),
Center(
child: Container(
height: 60.0,
alignment: Alignment.center,
// margin: EdgeInsets.only(top: 10.0),
// width: MediaQuery.of(context).size.width * 0.9,
child: TabBar(
isScrollable: false,
controller: _tabController, controller: _tabController,
indicatorWeight: 5.0, indicatorWeight: 3.0,
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.tab,
indicatorColor: Colors.red[800], labelColor: Color(0xff2B353E),
labelColor: Theme.of(context).primaryColor, unselectedLabelColor: Color(0xff575757),
labelPadding: EdgeInsets.only(top: 4.0, left: 10.0, right: 13.0), labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
unselectedLabelColor: Colors.grey[800], labelStyle: TextStyle(
tabs: [ fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
Container( fontSize: 16,
width: MediaQuery.of(context).size.width * 0.28, fontWeight: FontWeight.w600,
child: Center( letterSpacing: -0.48,
child: Texts(TranslationBase.of(context).today), ),
), unselectedLabelStyle: TextStyle(
), fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
Container( fontSize: 16,
width: MediaQuery.of(context).size.width * 0.28, fontWeight: FontWeight.w600,
child: Center( letterSpacing: -0.48,
child: Texts(TranslationBase.of(context).week), ),
tabs: [Text(TranslationBase.of(context).today), Text(TranslationBase.of(context).week), Text(TranslationBase.of(context).month.toLowerCase().capitalizeFirstofEach)],
), ),
),
Container(
width: MediaQuery.of(context).size.width * 0.28,
child: Center(
child: Texts(TranslationBase.of(context).month),
),
),
],
),
),
),
],
),
),
backgroundColor: Colors.white,
body: Column(
children: <Widget>[
Expanded( Expanded(
child: TabBarView( child: TabBarView(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),

@ -2,15 +2,23 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:percent_indicator/circular_percent_indicator.dart'; import 'package:percent_indicator/circular_percent_indicator.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:wave/config.dart';
import 'package:wave/wave.dart';
import 'Dialog/confirm_add_amount_dialog.dart';
import 'add_custom_amount.dart';
class TodayPage extends StatelessWidget { class TodayPage extends StatelessWidget {
Future<bool> readPrefs() async { Future<bool> readPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
return (prefs.getString(H2O_UNIT) ?? "ml") == "ml" ? true : false; return (prefs.getString(H2O_UNIT) ?? "ml") == "ml" ? true : false;
@ -25,23 +33,16 @@ class TodayPage extends StatelessWidget {
appBarTitle: TranslationBase.of(context).h2o, appBarTitle: TranslationBase.of(context).h2o,
baseViewModel: model, baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
padding: EdgeInsets.symmetric(vertical: 12), physics: BouncingScrollPhysics(),
child: Container( padding: EdgeInsets.all(21),
margin: EdgeInsets.only(top: 60),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Center( SizedBox(
child: CircularPercentIndicator( height: 320,
radius: 180.0, child: Row(
animation: true, children: [
animationDuration: 1200, Expanded(
lineWidth: 15.0,
percent: model.userProgressData == null
? 0.0
: (model.userProgressData.percentageConsumed / 100) >= 1
? 1
: (model.userProgressData.percentageConsumed / 100),
center: Center(
child: FutureBuilder<bool>( child: FutureBuilder<bool>(
future: readPrefs(), future: readPrefs(),
builder: (context, data) { builder: (context, data) {
@ -56,121 +57,214 @@ class TodayPage extends StatelessWidget {
unit = TranslationBase.of(context).l; unit = TranslationBase.of(context).l;
} }
unit = unit.toLowerCase(); unit = unit.toLowerCase();
var totalH2O = model?.userProgressData?.quantityLimit ?? 0.0; double totalH2O = model?.userProgressData?.quantityLimit ?? 0.0;
var consumedH2O = model?.userProgressData?.quantityConsumed ?? 0.0; double consumedH2O = model?.userProgressData?.quantityConsumed ?? 0.0;
if (!isUnitML) { if (!isUnitML) {
totalH2O = totalH2O / 1000; totalH2O = totalH2O / 1000;
consumedH2O = consumedH2O / 1000; consumedH2O = consumedH2O / 1000;
} }
if (consumedH2O > totalH2O) {
consumedH2O = totalH2O;
}
double divide = consumedH2O / totalH2O;
String percentage = (divide * 100).toStringAsFixed(0);
var remainingH2O = totalH2O - consumedH2O; var remainingH2O = totalH2O - consumedH2O;
return Column( return AspectRatio(
mainAxisSize: MainAxisSize.min, aspectRatio: 234 / 320,
child: Stack(
alignment: Alignment.center,
children: [ children: [
// SizedBox( ClipRRect(
// height: 40, borderRadius: BorderRadius.circular(18),
// ), child: WaveWidget(
Text( config: CustomConfig(
TranslationBase.of(context).consumed, colors: [Color(0xff0d47a1), Color(0xff1976d2), Color(0xff2196f3)],
style: TextStyle(fontSize: 16.0), durations: [19440, 10800, 6000],
heightPercentages: [1 - divide - .10, 1 - divide - .05, 1 - divide],
blur: MaskFilter.blur(BlurStyle.solid, 0),
), ),
SizedBox( waveAmplitude: 0,
height: 4, backgroundColor: Color(0xff2e303a),
size: Size(
double.infinity,
double.infinity,
), ),
Text(
model.userProgressData == null ? "0.0" : "$consumedH2O $unit",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14.0, color: HexColor("#60BCF9")),
), ),
SizedBox(
height: 4,
), ),
SizedBox( Padding(
height: 5, padding: const EdgeInsets.only(top: 12, bottom: 12),
width: 50, child: Column(
child: Container(), mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
remainingH2O.toStringAsFixed(0) + "$unit " + TranslationBase.of(context).left.toLowerCase(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Colors.white,
letterSpacing: -0.56,
), ),
SizedBox(
height: 4,
), ),
Column(
mainAxisSize: MainAxisSize.min,
children: [
Text( Text(
TranslationBase.of(context).remaining, "$percentage%",
style: TextStyle(fontSize: 16.0), style: TextStyle(
fontSize: 34,
fontWeight: FontWeight.bold,
color: Colors.white,
letterSpacing: -2.34,
), ),
SizedBox(
height: 4,
), ),
Text( Text(
model.userProgressData == null TranslationBase.of(context).consumed,
? "0.0" style: TextStyle(
: (remainingH2O) < 0 fontSize: 14,
? "0 $unit" fontWeight: FontWeight.w600,
: '$remainingH2O $unit', color: Colors.white,
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14.0), letterSpacing: -0.56,
),
), ),
], ],
);
},
), ),
],
), ),
circularStrokeCap: CircularStrokeCap.butt, )
backgroundColor: HexColor("#D1E3F6"), ],
progressColor: HexColor("#60BCF9"),
), ),
);
},
), ),
Row( ),
mainAxisAlignment: MainAxisAlignment.spaceAround, SizedBox(width: 21),
children: [ SizedBox(
Column( height: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( _circularButton(context, 600, model),
margin: EdgeInsets.only(bottom: 16), SizedBox(height: 8),
height: 30, _circularButton(context, 330, model),
width: 70, SizedBox(height: 8),
decoration: BoxDecoration(color: HexColor("#D1E3F6"), borderRadius: BorderRadius.all(Radius.circular(30))), _circularButton(context, 200, model),
// SizedBox(height: 8),
// _circularButton(context, 0, model, isCustom: true),
SizedBox(height: 8),
InkWell(
onTap: () => undoVolume(context, model),
child: Text(
TranslationBase.of(context).undo,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xffD02127),
letterSpacing: -0.56,
decoration: TextDecoration.underline,
), ),
Text(
"${TranslationBase.of(context).remaining} %",
style: TextStyle(fontSize: 16.0),
)
],
), ),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.only(bottom: 16),
height: 30,
width: 70,
decoration: BoxDecoration(color: HexColor("#60BCF9"), borderRadius: BorderRadius.all(Radius.circular(30))),
), ),
Text(
"${TranslationBase.of(context).consumed} %",
style: TextStyle(fontSize: 16.0),
)
], ],
),
) )
], ],
), ),
SizedBox(
height: 30,
), ),
SizedBox( SizedBox(height: 40),
height: 0.5, // Text(
width: MediaQuery.of(context).size.width, // TranslationBase.of(context).addCustomAmount,
// style: TextStyle(
// fontSize: 14,
// height: 21 / 14,
// fontWeight: FontWeight.w600,
// color: Color(0xff2B353E),
// letterSpacing: -0.56,
// ),
// ),
],
),
),
// floatingActionButton: H20FloatingActionButton(
// // controller: _controller,
// model: model,
// ),
),
);
}
Widget _circularButton(context, int value, model, {bool isCustom = false}) {
String _text = "$value${TranslationBase.of(context).ml}";
if (isCustom) {
_text = TranslationBase.of(context).custom;
}
return InkWell(
onTap: () {
if (isCustom) {
Navigator.push(
context,
FadePage(
page: AddCustomAmount(
model: model,
),
),
);
} else {
showConfirmMessage(context, value, model);
}
},
child: Container( child: Container(
color: Colors.grey, padding: EdgeInsets.all(21),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
border: Border.all(width: 1, color: Color(0xffDEDEDE)),
), ),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
TranslationBase.of(context).add,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w500,
color: Color(0xff575757),
letterSpacing: -0.44,
), ),
],
), ),
Text(
_text,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
), ),
), ),
floatingActionButton: H20FloatingActionButton( ],
// controller: _controller,
model: model,
), ),
), ),
); );
} }
void showConfirmMessage(context, int amount, H2OViewModel model) {
showDialog(
context: context,
child: ConfirmAddAmountDialog(
model: model,
amount: amount,
),
);
}
void undoVolume(context, H2OViewModel model) async {
GifLoaderDialogUtils.showMyDialog(context);
await model.undoUserActivity();
GifLoaderDialogUtils.hideDialog(context);
}
} }

@ -74,6 +74,7 @@ class _BookConfirmState extends State<BookConfirm> {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.doctor.name, widget.doctor.name,
widget.doctor.doctorID,
widget.doctor.doctorImageURL, widget.doctor.doctorImageURL,
widget.doctor.speciality, widget.doctor.speciality,
"", "",
@ -345,12 +346,12 @@ class _BookConfirmState extends State<BookConfirm> {
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, toDoProvider.notificationsCount);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']); print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);

@ -60,6 +60,7 @@ class _BookSuccessState extends State<BookSuccess> {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.docObject.name, widget.docObject.name,
widget.docObject.doctorID,
widget.docObject.doctorImageURL, widget.docObject.doctorImageURL,
widget.docObject.speciality, widget.docObject.speciality,
"", "",

@ -103,6 +103,7 @@ class _DoctorProfileState extends State<DoctorProfile> with TickerProviderStateM
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.doctor.name, widget.doctor.name,
widget.doctor.doctorID,
widget.doctor.doctorImageURL, widget.doctor.doctorImageURL,
widget.doctor.speciality, widget.doctor.speciality,
"", "",
@ -145,7 +146,7 @@ class _DoctorProfileState extends State<DoctorProfile> with TickerProviderStateM
onTap: (index) { onTap: (index) {
setState(() { setState(() {
if (index == 1) { if (index == 1) {
if (widget.doctor.clinicID == 17 || widget.doctor.clinicID == 23 || widget.isLiveCareAppointment) { if (widget.doctor.clinicID == 17 || widget.doctor.clinicID == 23 || widget.doctor.clinicID == 47 || widget.isLiveCareAppointment) {
_tabController.index = _tabController.previousIndex; _tabController.index = _tabController.previousIndex;
showFooterButton = false; showFooterButton = false;
} else { } else {
@ -499,7 +500,7 @@ class _DoctorProfileState extends State<DoctorProfile> with TickerProviderStateM
dialog.showAlertDialog(context); dialog.showAlertDialog(context);
} }
} else } else
AppToast.showErrorToast(message: "Please select Time Slot to continue"); AppToast.showErrorToast(message: TranslationBase.of(context).selectSlot);
} }
navigateToLogin() { navigateToLogin() {

@ -70,6 +70,7 @@ class _BookReminderPageState extends State<BookReminderPage> {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.docObject.name, widget.docObject.name,
widget.docObject.doctorID,
widget.docObject.doctorImageURL, widget.docObject.doctorImageURL,
widget.docObject.speciality, widget.docObject.speciality,
"", "",

@ -7,11 +7,13 @@ import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
import '../../../uitl/date_uitl.dart'; import '../../../uitl/date_uitl.dart';
@ -24,6 +26,7 @@ class DocAvailableAppointments extends StatefulWidget {
static String selectedTime; static String selectedTime;
bool isLiveCareAppointment; bool isLiveCareAppointment;
final dynamic doctorSchedule; final dynamic doctorSchedule;
DocAvailableAppointments({@required this.doctor, this.doctorSchedule, @required this.isLiveCareAppointment}); DocAvailableAppointments({@required this.doctor, this.doctorSchedule, @required this.isLiveCareAppointment});
@override @override
@ -55,8 +58,8 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
@override @override
void didUpdateWidget(covariant DocAvailableAppointments oldWidget) { void didUpdateWidget(covariant DocAvailableAppointments oldWidget) {
if (oldWidget.doctorSchedule != widget.doctorSchedule) { if (oldWidget.doctorSchedule != widget.doctorSchedule) {
_calendarController.setSelectedDay(DateUtil.convertStringToDate(widget.doctorSchedule['Date']), isProgrammatic: true); _onDaySelected(DateUtil.convertStringToDate(widget.doctorSchedule['Date']));
_onDaySelected(DateUtil.convertStringToDate(widget.doctorSchedule['Date']), List()); _calendarController.selectedDate = DateUtil.convertStringToDate(widget.doctorSchedule['Date']);
} }
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
} }
@ -99,28 +102,17 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
super.dispose(); super.dispose();
} }
void _onDaySelected(DateTime day, List events) { void _onDaySelected(DateTime day) {
final DateFormat formatter = DateFormat('yyyy-MM-dd'); final DateFormat formatter = DateFormat('yyyy-MM-dd');
setState(() { setState(() {
this.selectedDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day, language); this.selectedDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day, language);
openTimeSlotsPickerForDate(day, docFreeSlots); openTimeSlotsPickerForDate(day, docFreeSlots);
DocAvailableAppointments.selectedDate = formatter.format(day); DocAvailableAppointments.selectedDate = formatter.format(day);
print(DocAvailableAppointments.selectedDate); _calendarController.selectedDate = day;
print(_calendarController.selectedDate);
}); });
} }
void _onVisibleDaysChanged(DateTime first, DateTime last, CalendarFormat format) {
print('CALLBACK: _onVisibleDaysChanged');
print(first);
print(last);
}
void _onCalendarCreated(DateTime first, DateTime last, CalendarFormat format) {
print('CALLBACK: _onCalendarCreated');
print(first);
print(last);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
@ -134,7 +126,8 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16), padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
child: Text(selectedDate, style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.w600, letterSpacing: -0.64)), child: Text(selectedDate, style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.w600, letterSpacing: -0.64)),
), ),
Container( DocAvailableAppointments.areSlotsAvailable
? Container(
height: 40, height: 40,
child: ListView.builder( child: ListView.builder(
controller: _scrollController, controller: _scrollController,
@ -157,7 +150,12 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
); );
}, },
), ),
), )
: Center(
child: Padding(
padding: const EdgeInsets.only(left: 12.0, right: 12.0),
child: Text(TranslationBase.of(context).noSlotsError, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: CustomColors.grey)),
)),
], ],
), ),
), ),
@ -171,94 +169,37 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
child: Padding( child: Padding(
padding: const EdgeInsets.only(bottom: 12), padding: const EdgeInsets.only(bottom: 12),
child: TableCalendar(
locale: language == "en" ? 'en_US' : 'ar_SA',
calendarController: _calendarController,
events: _events,
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.black, fontSize: 11.0, fontWeight: FontWeight.w600),
weekdayStyle: TextStyle().copyWith(color: Colors.black, fontSize: 11.0, fontWeight: FontWeight.w600),
),
headerStyle: HeaderStyle(centerHeaderTitle: true, formatButtonVisible: false, titleTextStyle: TextStyle(fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600)),
builders: CalendarBuilders(
selectedDayBuilder: (context, date, _) {
return FadeTransition(
opacity: Tween(begin: 0.0, end: 1.0).animate(_animationController),
child: Container( child: Container(
margin: const EdgeInsets.all(4.0), child: SfCalendar(
padding: const EdgeInsets.only(top: 5.0, left: 5.0), controller: _calendarController,
color: Colors.transparent, minDate: DateTime.now(),
width: 0, showNavigationArrow: true,
height: 0, headerStyle: CalendarHeaderStyle(textAlign: TextAlign.center, textStyle: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.46)),
child: Text( viewHeaderStyle: ViewHeaderStyle(dayTextStyle: TextStyle(fontSize: 12.0, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: CustomColors.black)),
'${date.day}', view: CalendarView.month,
style: TextStyle().copyWith(fontSize: 14.0), todayHighlightColor: CustomColors.green,
), selectionDecoration: containerColorRadiusBorderWidthCircular(Colors.transparent, 4, CustomColors.green, 2.5),
), cellBorderColor: Colors.white,
); dataSource: MeetingDataSource(_getDataSource()),
monthViewSettings: const MonthViewSettings(appointmentDisplayMode: MonthAppointmentDisplayMode.indicator, showTrailingAndLeadingDates: false, appointmentDisplayCount: 1),
onTap: (CalendarTapDetails details) {
_calendarController.selectedDate = details.date;
_onDaySelected(details.date);
}, },
todayDayBuilder: (context, date, _) {
return Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: _calendarController.isSelected(date)
? Colors.green[400]
: _calendarController.isToday(date)
? Colors.transparent
: Color(0xff76cfb7),
),
width: 40.0,
height: 40.0,
child: Center(
child: Text(
'${date.day}',
style: TextStyle().copyWith(
color: Colors.white,
fontSize: 14.0,
), ),
), ),
), ));
);
},
markersBuilder: (context, date, events, _) {
final children = <Widget>[];
if (events.isNotEmpty) {
children.add(
Positioned(
right: 4,
bottom: 4,
child: _buildEventsMarker(date, events),
),
);
} }
return children; List<Meeting> _getDataSource() {
}, final List<Meeting> meetings = <Meeting>[];
),
onDaySelected: (date, event, _) { _events.forEach((key, value) {
_onDaySelected(date, event); final DateTime startTime = DateTime(key.year, key.month, key.day, 9, 0, 0);
_animationController.forward(from: 0.0); final DateTime endTime = startTime.add(const Duration(hours: 2));
}, meetings.add(Meeting("", startTime, endTime, CustomColors.green, false));
onVisibleDaysChanged: _onVisibleDaysChanged, });
onCalendarCreated: _onCalendarCreated, return meetings;
),
),
);
} }
openTimeSlotsPickerForDate(DateTime dateStart, List<TimeSlot> freeSlots) { openTimeSlotsPickerForDate(DateTime dateStart, List<TimeSlot> freeSlots) {
@ -270,14 +211,12 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
}); });
setState(() { setState(() {
if (dayEvents.length != 0) if (dayEvents.length != 0) {
DocAvailableAppointments.areSlotsAvailable = true; DocAvailableAppointments.areSlotsAvailable = true;
else
DocAvailableAppointments.areSlotsAvailable = false;
selectedButtonIndex = 0; selectedButtonIndex = 0;
DocAvailableAppointments.selectedTime = dayEvents[selectedButtonIndex].isoTime; DocAvailableAppointments.selectedTime = dayEvents[selectedButtonIndex].isoTime;
} else
DocAvailableAppointments.areSlotsAvailable = false;
}); });
} }
@ -299,7 +238,7 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
selectedDateJSON = freeSlotsResponse[0]; selectedDateJSON = freeSlotsResponse[0];
}); });
openTimeSlotsPickerForDate(DateUtil.convertStringToDate(selectedDateJSON), docFreeSlots); openTimeSlotsPickerForDate(DateUtil.convertStringToDate(selectedDateJSON), docFreeSlots);
_calendarController.setFocusedDay(DateUtil.convertStringToDate(selectedDateJSON)); _calendarController.selectedDate = DateUtil.convertStringToDate(selectedDateJSON);
return _eventsParsed; return _eventsParsed;
} }
@ -321,7 +260,8 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
Widget getSelectedButton(int index) { Widget getSelectedButton(int index) {
return RaisedButton( return RaisedButton(
color: CustomColors.green, //Color of the border color: CustomColors.green,
//Color of the border
textColor: Colors.white, textColor: Colors.white,
elevation: 0, elevation: 0,
onPressed: () { onPressed: () {
@ -352,10 +292,7 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
_events.clear(), _events.clear(),
_events = value, _events = value,
if (widget.doctorSchedule != null) if (widget.doctorSchedule != null)
{ {_onDaySelected(DateUtil.convertStringToDate(widget.doctorSchedule['Date'])), _calendarController.selectedDate = DateUtil.convertStringToDate(widget.doctorSchedule['Date'])}
_calendarController.setSelectedDay(DateUtil.convertStringToDate(widget.doctorSchedule['Date']), isProgrammatic: true),
_onDaySelected(DateUtil.convertStringToDate(widget.doctorSchedule['Date']), List())
}
}); });
}); });
} else { } else {
@ -403,29 +340,49 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments> wit
this.language = languageID; this.language = languageID;
}); });
} }
}
Widget _buildEventsMarker(DateTime date, List events) { class MeetingDataSource extends CalendarDataSource {
return Container( MeetingDataSource(List<Meeting> source) {
decoration: containerColorRadiusBorderWidth( appointments = source;
_calendarController.isSelected(date) }
? CustomColors.green
: _calendarController.isToday(date) @override
? CustomColors.green.withOpacity(0.5) DateTime getStartTime(int index) {
: Colors.white, return _getMeetingData(index).from;
200, }
_calendarController.isSelected(date) ? CustomColors.green : Colors.black, @override
2), DateTime getEndTime(int index) {
width: 40.0, return _getMeetingData(index).to;
height: 40.0, }
child: Center( @override
child: Text( String getSubject(int index) {
'${date.day}', return _getMeetingData(index).eventName;
style: TextStyle().copyWith( }
color: _calendarController.isSelected(date) ? Colors.white : Colors.black, @override
fontSize: 14.0, Color getColor(int index) {
), return _getMeetingData(index).background;
),
),
);
} }
@override
bool isAllDay(int index) {
return _getMeetingData(index).isAllDay;
}
Meeting _getMeetingData(int index) {
final dynamic meeting = appointments[index];
Meeting meetingData;
if (meeting is Meeting) {
meetingData = meeting;
}
return meetingData;
}
}
class Meeting {
Meeting(this.eventName, this.from, this.to, this.background, this.isAllDay);
String eventName;
DateTime from;
DateTime to;
Color background;
bool isAllDay;
} }

@ -1,5 +1,6 @@
import "dart:collection"; import "dart:collection";
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
@ -429,8 +430,19 @@ class _SearchByClinicState extends State<SearchByClinic> {
return false; return false;
} }
getClinicsList() { getClinicsList() async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
if (await sharedPref.getObject(CLINICS_LIST) != null) {
dynamic res = await sharedPref.getObject(CLINICS_LIST);
setState(() {
isMobileAppDentalAllow = res['ISMobileAppDentalAllow'];
res['ListClinicCentralized'].forEach((v) {
clinicsList.add(new ListClinicCentralized.fromJson(v));
});
});
getProjectsList();
GifLoaderDialogUtils.hideDialog(context);
} else {
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getClinicsList(context).then((res) { service.getClinicsList(context).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
@ -448,6 +460,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
}); });
} }
}
getProjectsList() { getProjectsList() {
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();

@ -74,7 +74,7 @@ class DoctorView extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName, projectViewModel.isArabic), if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName, projectViewModel.isArabic),
if (doctor.projectName != null) myRichText(TranslationBase.of(context).hospital + ":", doctor.projectName, projectViewModel.isArabic), if (doctor.projectName != null) myRichText(TranslationBase.of(context).branch, doctor.projectName, projectViewModel.isArabic),
if (doctor.speciality != null) if (doctor.speciality != null)
Text( Text(
getDoctorSpeciality(this.doctor.speciality).trim(), getDoctorSpeciality(this.doctor.speciality).trim(),
@ -99,7 +99,11 @@ class DoctorView extends StatelessWidget {
filledIcon: Icons.star, filledIcon: Icons.star,
emptyIcon: Icons.star_border, emptyIcon: Icons.star_border,
), ),
if (isShowFlag) Image.network(this.doctor.nationalityFlagURL, width: 22.0, height: 22.0) if (isShowFlag) Icon(
Icons.arrow_forward,
color: Theme.of(context).primaryColor,
),
// if (isShowFlag) Image.network(this.doctor.nationalityFlagURL, width: 22.0, height: 22.0)
], ],
), ),
], ],

@ -115,7 +115,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
mHeight(20), mHeight(20),
Text( Text(
"When would you like to set a reminder for this appointment?", TranslationBase.of(context).appointmentReminder,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xff2B353E), color: Color(0xff2B353E),
@ -125,7 +125,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
mHeight(20), mHeight(20),
Text( Text(
"Please select from below options:", TranslationBase.of(context).pleaseSelectFromBelowOptions,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: Color(0xff2B353E), color: Color(0xff2B353E),
@ -135,7 +135,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
ListTile( ListTile(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: const Text('Before 30 Mins'), title: Text(TranslationBase.of(context).appoReminder30),
leading: Radio<int>( leading: Radio<int>(
value: 0, value: 0,
groupValue: i, groupValue: i,
@ -148,7 +148,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
ListTile( ListTile(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: const Text('Before 1 Hour'), title: Text(TranslationBase.of(context).appoReminder60),
leading: Radio<int>( leading: Radio<int>(
value: 1, value: 1,
groupValue: i, groupValue: i,
@ -161,7 +161,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
ListTile( ListTile(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: const Text('Before 1 Hour and 30 Mins'), title: Text(TranslationBase.of(context).appoReminder90),
leading: Radio<int>( leading: Radio<int>(
value: 2, value: 2,
groupValue: i, groupValue: i,
@ -174,7 +174,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
), ),
ListTile( ListTile(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: const Text('Before 2 Hours'), title: Text(TranslationBase.of(context).appoReminder120),
leading: Radio<int>( leading: Radio<int>(
value: 3, value: 3,
groupValue: i, groupValue: i,

@ -45,7 +45,6 @@ class _HospitalsLiveChatPageState extends State<HospitalsLiveChatPage> {
children: [ children: [
Text( Text(
TranslationBase.of(context).instructions, TranslationBase.of(context).instructions,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox(height: 20), SizedBox(height: 20),
@ -87,12 +86,12 @@ class _HospitalsLiveChatPageState extends State<HospitalsLiveChatPage> {
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Text( child: Text(
model.LiveChatModelList[index]?.projectName ?? "", model.LiveChatModelList[index].projectName.toString() + "\n" + model.LiveChatModelList[index].distanceInKilometers.toString() + " " + TranslationBase.of(context).km_ ?? "",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: tappedIndex == index ? Colors.white : Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: tappedIndex == index ? Colors.white : Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
), ),
Icon( Icon(
Icons.arrow_forward_ios, Icons.arrow_forward,
color: tappedIndex == index ? Colors.white : Colors.black, color: tappedIndex == index ? Colors.white : Colors.black,
), ),
], ],

@ -45,7 +45,7 @@ class _LiveChatPageState extends State<LiveChatPage> with SingleTickerProviderSt
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
title: TranslationBase.of(context).liveChat, title: TranslationBase.of(context).liveChat,
description: TranslationBase.of(context).infoChat, description: TranslationBase.of(context).infoChat,
appBarTitle: TranslationBase.of(context).service, appBarTitle: TranslationBase.of(context).liveChat,
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
backgroundColor: CustomColors.appBackgroudGrey2Color, backgroundColor: CustomColors.appBackgroudGrey2Color,

@ -32,7 +32,6 @@ class PharmaciesLiveChatPage extends StatelessWidget {
SizedBox(height: 20), SizedBox(height: 20),
Text( Text(
TranslationBase.of(context).instructions, TranslationBase.of(context).instructions,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
], ],
@ -44,14 +43,13 @@ class PharmaciesLiveChatPage extends StatelessWidget {
padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).start, TranslationBase.of(context).start,
() { null,
String chat; // () {
chat = // String chat;
"http://chat.dshmg.com:7788/EPharmacyChat/EIndex.aspx?CustomerID=undefined&Name=${model.user.firstName}&MobileNo=${model.user.mobileNumber}&Language=${projectViewModel.isArabic ? 1 : 2}"; // chat =
launch(chat); // "http://chat.dshmg.com:7788/EPharmacyChat/EIndex.aspx?CustomerID=undefined&Name=${model.user.firstName}&MobileNo=${model.user.mobileNumber}&Language=${projectViewModel.isArabic ? 1 : 2}";
}, // launch(chat);
color: Color(0xffD02127), // },
textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),
), ),

@ -21,10 +21,11 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.dart'; // import 'package:table_calendar/table_calendar.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
class CovidTimeSlots extends StatefulWidget { class CovidTimeSlots extends StatefulWidget {
int projectID; int projectID;
@ -100,24 +101,17 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
super.dispose(); super.dispose();
} }
void _onDaySelected(DateTime day, List events, ProjectViewModel projectViewModel) { void _onDaySelected(DateTime day, ProjectViewModel projectViewModel) {
final DateFormat formatter = DateFormat('yyyy-MM-dd'); final DateFormat formatter = DateFormat('yyyy-MM-dd');
setState(() { setState(() {
this.selectedDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day, projectViewModel.isArabic ? "ar" : "en"); this.selectedDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day, projectViewModel.isArabic ? "ar" : "en");
openTimeSlotsPickerForDate(day, docFreeSlots); openTimeSlotsPickerForDate(day, docFreeSlots);
CovidTimeSlots.selectedDate = formatter.format(day); CovidTimeSlots.selectedDate = formatter.format(day);
_calendarController.selectedDate = day;
print(CovidTimeSlots.selectedDate); print(CovidTimeSlots.selectedDate);
}); });
} }
void _onVisibleDaysChanged(DateTime first, DateTime last, CalendarFormat format) {
print('CALLBACK: _onVisibleDaysChanged');
}
void _onCalendarCreated(DateTime first, DateTime last, CalendarFormat format) {
print('CALLBACK: _onCalendarCreated');
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
@ -151,6 +145,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
mHeight(12),
Card( Card(
shape: cardRadius(12), shape: cardRadius(12),
child: _buildTableCalendarWithBuilders(projectViewModel), child: _buildTableCalendarWithBuilders(projectViewModel),
@ -165,7 +160,8 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
), ),
), ),
mHeight(8), mHeight(8),
Container( CovidTimeSlots.areSlotsAvailable
? Container(
height: 40, height: 40,
child: ListView.builder( child: ListView.builder(
controller: _scrollController, controller: _scrollController,
@ -188,7 +184,12 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
); );
}, },
), ),
), )
: Center(
child: Padding(
padding: const EdgeInsets.only(left: 12.0, right: 12.0),
child: Text(TranslationBase.of(context).noSlotsError, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: CustomColors.grey)),
)),
], ],
), ),
), ),
@ -239,93 +240,33 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
} }
Widget _buildTableCalendarWithBuilders(ProjectViewModel projectViewModel) { Widget _buildTableCalendarWithBuilders(ProjectViewModel projectViewModel) {
return TableCalendar( return SfCalendar(
locale: projectViewModel.isArabic ? 'ar_SA' : 'en_US', controller: _calendarController,
calendarController: _calendarController, minDate: DateTime.now(),
events: _events, showNavigationArrow: true,
initialCalendarFormat: CalendarFormat.month, headerStyle: CalendarHeaderStyle(textAlign: TextAlign.center, textStyle: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.46)),
startDay: DateTime.now(), viewHeaderStyle: ViewHeaderStyle(dayTextStyle: TextStyle(fontSize: 12.0, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: CustomColors.black)),
formatAnimation: FormatAnimation.slide, view: CalendarView.month,
startingDayOfWeek: StartingDayOfWeek.sunday, todayHighlightColor: CustomColors.green,
weekendDays: [DateTime.friday, DateTime.saturday], selectionDecoration: containerColorRadiusBorderWidthCircular(Colors.transparent, 4, CustomColors.green, 2.5),
availableGestures: AvailableGestures.horizontalSwipe, cellBorderColor: Colors.white,
availableCalendarFormats: const { dataSource: MeetingDataSource(_getDataSource()),
CalendarFormat.month: '', monthViewSettings: const MonthViewSettings(appointmentDisplayMode: MonthAppointmentDisplayMode.indicator, showTrailingAndLeadingDates: false, appointmentDisplayCount: 1),
CalendarFormat.week: '', onTap: (CalendarTapDetails details) {
}, _calendarController.selectedDate = details.date;
calendarStyle: CalendarStyle( _onDaySelected(details.date, projectViewModel);
outsideDaysVisible: false,
weekendStyle: TextStyle().copyWith(color: Colors.blue[800]),
holidayStyle: TextStyle().copyWith(color: Colors.blue[800]),
),
daysOfWeekStyle: DaysOfWeekStyle(
weekendStyle: TextStyle().copyWith(color: Colors.black, fontSize: 11.0, fontWeight: FontWeight.w600),
weekdayStyle: TextStyle().copyWith(color: Colors.black, fontSize: 11.0, fontWeight: FontWeight.w600),
),
headerStyle: HeaderStyle(centerHeaderTitle: true, formatButtonVisible: false, titleTextStyle: TextStyle(fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600)),
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: 14.0),
),
),
);
},
todayDayBuilder: (context, date, _) {
return Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: _calendarController.isSelected(date)
? Colors.green[400]
: _calendarController.isToday(date)
? Colors.transparent
: Color(0xff76cfb7),
),
width: 40.0,
height: 40.0,
child: Center(
child: Text(
'${date.day}',
style: TextStyle().copyWith(
color: Colors.white,
fontSize: 14.0,
),
),
),
);
}, },
markersBuilder: (context, date, events, holidays) {
final children = <Widget>[];
if (events.isNotEmpty) {
children.add(
Positioned(
right: 4,
bottom: 4,
child: _buildEventsMarker(date, events),
),
); );
} }
return children; List<Meeting> _getDataSource() {
}, final List<Meeting> meetings = <Meeting>[];
), _events.forEach((key, value) {
onDaySelected: (date, event, _) { final DateTime startTime = DateTime(key.year, key.month, key.day, 9, 0, 0);
_onDaySelected(date, event, projectViewModel); final DateTime endTime = startTime.add(const Duration(hours: 2));
_animationController.forward(from: 0.0); meetings.add(Meeting("", startTime, endTime, CustomColors.green, false));
}, });
onVisibleDaysChanged: _onVisibleDaysChanged, return meetings;
onCalendarCreated: _onCalendarCreated,
);
} }
openTimeSlotsPickerForDate(DateTime dateStart, List<TimeSlot> freeSlots) { openTimeSlotsPickerForDate(DateTime dateStart, List<TimeSlot> freeSlots) {
@ -337,14 +278,12 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
}); });
setState(() { setState(() {
if (dayEvents.length != 0) if (dayEvents.length != 0) {
CovidTimeSlots.areSlotsAvailable = true; CovidTimeSlots.areSlotsAvailable = true;
else
CovidTimeSlots.areSlotsAvailable = false;
selectedButtonIndex = 0; selectedButtonIndex = 0;
CovidTimeSlots.selectedTime = dayEvents[selectedButtonIndex].isoTime; CovidTimeSlots.selectedTime = dayEvents[selectedButtonIndex].isoTime;
} else
CovidTimeSlots.areSlotsAvailable = false;
}); });
} }
@ -366,43 +305,43 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
selectedDateJSON = freeSlotsResponse[0]['FreeTimeSlots']; selectedDateJSON = freeSlotsResponse[0]['FreeTimeSlots'];
}); });
openTimeSlotsPickerForDate(DateUtil.convertStringToDate(selectedDateJSON), docFreeSlots); openTimeSlotsPickerForDate(DateUtil.convertStringToDate(selectedDateJSON), docFreeSlots);
_calendarController.setFocusedDay(DateUtil.convertStringToDate(selectedDateJSON)); _calendarController.selectedDate = DateUtil.convertStringToDate(selectedDateJSON);
return _eventsParsed; return _eventsParsed;
} }
Widget _buildEventsMarker(DateTime date, List events) { // Widget _buildEventsMarker(DateTime date, List events) {
return Container( // return Container(
// decoration: BoxDecoration( // // decoration: BoxDecoration(
// shape: BoxShape.circle, // // shape: BoxShape.circle,
// color: _calendarController.isSelected(date) // // color: _calendarController.isSelected(date)
// ? Colors.green[400] // // ? Colors.green[400]
// // : _calendarController.isToday(date)
// // ? Colors.brown[300]
// // : Colors.blue[400],
// // ),
//
// decoration: containerColorRadiusBorderWidth(
// _calendarController.isSelected(date)
// ? CustomColors.green
// : _calendarController.isToday(date) // : _calendarController.isToday(date)
// ? Colors.brown[300] // ? CustomColors.green.withOpacity(0.5)
// : Colors.blue[400], // : Colors.white,
// 200,
// _calendarController.isSelected(date) ? CustomColors.green : Colors.black,
// 2),
// width: 40.0,
// height: 40.0,
// child: Center(
// child: Text(
// '${date.day}',
// style: TextStyle().copyWith(
// color: _calendarController.isSelected(date) ? Colors.white : Colors.black,
// fontSize: 13.0,
// ), // ),
// ),
decoration: containerColorRadiusBorderWidth( // ),
_calendarController.isSelected(date) // );
? CustomColors.green // }
: _calendarController.isToday(date)
? CustomColors.green.withOpacity(0.5)
: Colors.white,
200,
_calendarController.isSelected(date) ? CustomColors.green : Colors.black,
2),
width: 40.0,
height: 40.0,
child: Center(
child: Text(
'${date.day}',
style: TextStyle().copyWith(
color: _calendarController.isSelected(date) ? Colors.white : Colors.black,
fontSize: 13.0,
),
),
),
);
}
Widget getNormalButton(int index) { Widget getNormalButton(int index) {
return RaisedButton( return RaisedButton(
@ -436,12 +375,16 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
} }
bookCovidTestAppointment() { bookCovidTestAppointment() {
if(CovidTimeSlots.areSlotsAvailable) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
DoctorList docObject = new DoctorList(); DoctorList docObject = new DoctorList();
docObject.doctorID = widget.selectedDoctorID; docObject.doctorID = widget.selectedDoctorID;
docObject.clinicID = widget.selectedClinicID; docObject.clinicID = widget.selectedClinicID;
docObject.projectID = widget.projectID; docObject.projectID = widget.projectID;
insertAppointmentCovidTest(context, docObject); insertAppointmentCovidTest(context, docObject);
} else {
AppToast.showErrorToast(message: TranslationBase.of(context).selectSlot);
}
} }
insertAppointmentCovidTest(context, DoctorList docObject) { insertAppointmentCovidTest(context, DoctorList docObject) {
@ -485,12 +428,12 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, toDoProvider.notificationsCount);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']); print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);
@ -560,3 +503,53 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots> with TickerProviderStat
}); });
} }
} }
class MeetingDataSource extends CalendarDataSource {
MeetingDataSource(List<Meeting> source) {
appointments = source;
}
@override
DateTime getStartTime(int index) {
return _getMeetingData(index).from;
}
@override
DateTime getEndTime(int index) {
return _getMeetingData(index).to;
}
@override
String getSubject(int index) {
return _getMeetingData(index).eventName;
}
@override
Color getColor(int index) {
return _getMeetingData(index).background;
}
@override
bool isAllDay(int index) {
return _getMeetingData(index).isAllDay;
}
Meeting _getMeetingData(int index) {
final dynamic meeting = appointments[index];
Meeting meetingData;
if (meeting is Meeting) {
meetingData = meeting;
}
return meetingData;
}
}
class Meeting {
Meeting(this.eventName, this.from, this.to, this.background, this.isAllDay);
String eventName;
DateTime from;
DateTime to;
Color background;
bool isAllDay;
}

@ -170,6 +170,7 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
onChanged: (newValue) { onChanged: (newValue) {
setState(() { setState(() {
obj["ans"] = newValue; obj["ans"] = newValue;
checkAllChecked();
}); });
}), }),
Text( Text(
@ -192,6 +193,7 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
onChanged: (newValue) { onChanged: (newValue) {
setState(() { setState(() {
obj["ans"] = newValue; obj["ans"] = newValue;
checkAllChecked();
}); });
}), }),
Text( Text(
@ -228,7 +230,7 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
child: MaterialButton( child: MaterialButton(
height: 50, height: 50,
elevation: 0, elevation: 0,
color: CustomColors.accentColor, color: all2 ? CustomColors.accentColor : CustomColors.grey,
disabledColor: Theme.of(context).appBarTheme.color.withOpacity(0.25), disabledColor: Theme.of(context).appBarTheme.color.withOpacity(0.25),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: Text( child: Text(
@ -249,6 +251,17 @@ class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
)); ));
} }
bool all2 = false;
checkAllChecked() {
all2 = true;
qa.forEach((element) {
if (element["ans"] == 2 || element["ans"] == null) {
all2 = false;
}
});
}
next() async { next() async {
bool all = true; bool all = true;
qa.forEach((element) { qa.forEach((element) {

@ -117,6 +117,7 @@ class _CovidPaymentDetailsState extends State<CovidPaymentDetails> {
onTap: () { onTap: () {
setState(() { setState(() {
widget.selectedProcedure = widget.proceduresList[index]; widget.selectedProcedure = widget.proceduresList[index];
getPaymentInfo(context, widget.projectID.toString(), widget.selectedProcedure.procedureID);
}); });
}, },
child: ListTile( child: ListTile(

@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.da
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/QRCode.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/QRCode.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
@ -251,7 +252,16 @@ class _CovidPaymentSummaryState extends State<CovidPaymentSummary> {
onBrowserExit(AppoitmentAllHistoryResultList appo, bool isPaymentMade) { onBrowserExit(AppoitmentAllHistoryResultList appo, bool isPaymentMade) {
print("onBrowserExit Called!!!!"); print("onBrowserExit Called!!!!");
if (isPaymentMade) checkPaymentStatus(appo); if (isPaymentMade) {
checkPaymentStatus(appo);
} else {
print("onBrowserExit Payment Not made");
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => LandingPage()),
(Route<dynamic> route) => false,
);
}
} }
checkPaymentStatus(AppoitmentAllHistoryResultList appo) { checkPaymentStatus(AppoitmentAllHistoryResultList appo) {

@ -51,6 +51,8 @@ class _AddMember extends State<AddMember> {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).myFamilyFiles, appBarTitle: TranslationBase.of(context).myFamilyFiles,
isShowAppBar: true, isShowAppBar: true,
showNewAppBar: true,
showNewAppBarTitle: true,
body: isLoading == true body: isLoading == true
? AppCircularProgressIndicator() ? AppCircularProgressIndicator()
: SingleChildScrollView( : SingleChildScrollView(
@ -69,7 +71,7 @@ class _AddMember extends State<AddMember> {
Expanded( Expanded(
flex: 4, flex: 4,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[ children: <Widget>[
PhoneNumberSelectorWidget(onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value), PhoneNumberSelectorWidget(onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value),
//MobileNo(onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value), //MobileNo(onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value),
@ -88,24 +90,24 @@ class _AddMember extends State<AddMember> {
], ],
), ),
), ),
// Expanded( Expanded(
// flex: 3, flex: 3,
// child: Column( child: Column(
// mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
// children: <Widget>[ children: <Widget>[
// Row( Row(
// children: <Widget>[ children: <Widget>[
// Expanded( Expanded(
// child: DefaultButton( child: DefaultButton(
// TranslationBase.of(context).add, TranslationBase.of(context).add,
// () => {this.addMember()}, () => {this.addMember()},
// color: isButtonDisabled == true ? Colors.grey : Colors.grey[900], color: isButtonDisabled == true ? Colors.grey : Colors.red[600],
// textColor: Colors.white, textColor: Colors.white,
// )) ))
// ], ],
// ), ),
// ], ],
// )) ))
]), ]),
))); )));
} }

@ -6,6 +6,8 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:diplomaticquarterapp/widgets/habib_logo_widget.dart';
class AddFamilyMemberType extends StatelessWidget { class AddFamilyMemberType extends StatelessWidget {
static int loginType = 0; static int loginType = 0;
@ -14,139 +16,204 @@ class AddFamilyMemberType extends StatelessWidget {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).myFamilyFiles, appBarTitle: TranslationBase.of(context).myFamilyFiles,
isShowAppBar: true, isShowAppBar: true,
showNewAppBar: true,
showNewAppBarTitle: true,
body: Padding( body: Padding(
padding: EdgeInsets.all(20), padding: EdgeInsets.only(bottom: 20, left: 21, right: 21),
child: Column( child: Column(children: [
children: <Widget>[
Expanded(
flex: 6,
child: Column(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
height: 80,
width: 80,
),
Padding(
padding: EdgeInsets.all(20),
child: AppText(
TranslationBase.of(context).registerInfoFamily,
fontSize: SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.left,
),
),
Padding(
padding: EdgeInsets.all(20),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded( Expanded(
child: InkWell( child: ListView(
onTap: () => { padding: EdgeInsets.zero,
AddFamilyMemberType.loginType = 1, physics: BouncingScrollPhysics(),
Navigator.of(context) children: [
.pushNamed(ADD_FAMILY_MEMBER) SizedBox(height: 12),
}, HabibLogoWidget(),
child: RoundedContainer( SizedBox(height: 50),
borderColor: Colors.grey, Text(
showBorder: true, TranslationBase.of(context).logintypeRadio,
child: Padding( style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
padding: EdgeInsets.fromLTRB(
20, 10, 20, 10),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Image.asset(
'assets/images/id_card_icon.png',
height: SizeConfig
.imageSizeMultiplier *
12,
width: SizeConfig
.imageSizeMultiplier *
15,
),
SizedBox(
height: 20,
), ),
AppText( GridView(
TranslationBase.of(context) gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9),
.idNo, physics: NeverScrollableScrollPhysics(),
fontSize: SizeConfig padding: EdgeInsets.only(top: 25),
.textMultiplier * shrinkWrap: true,
2, children: [
) getButton(context, TranslationBase.of(context).nationalIdNumber, 'assets/images/new/national_id.svg', 1),
getButton(context, TranslationBase.of(context).medicalFileNumber, 'assets/images/new/medical_file.svg', 2),
], ],
), ),
)))), SizedBox(height: 20),
Expanded( // RichText(
child: InkWell( // text: TextSpan(
onTap: () => { // text: TranslationBase.of(context).forgotPassword,
AddFamilyMemberType.loginType = 2, // style: TextStyle(decoration: TextDecoration.underline, fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffC9272B), letterSpacing: -0.48, height: 18 / 12),
Navigator.of(context) // recognizer: TapGestureRecognizer()..onTap = () => Navigator.of(context).push(FadePage(page: ForgotPassword())),
.pushNamed(ADD_FAMILY_MEMBER) // ),
}, // ),
child: RoundedContainer(
borderColor: Colors.grey,
showBorder: true,
child: Padding(
padding: EdgeInsets.fromLTRB(
25, 10, 25, 10),
child: Column(
children: <Widget>[
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,
), ),
// SizedBox(
// height: 43,
// width: double.infinity,
// child: FlatButton(
// onPressed: () {},
// child: Text(
// TranslationBase.of(context).registerNow,
// style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
// ),
// color: Color(0xffD02127),
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(6),
// ),
// ),
// ),
]), ]),
), ));
// body: Padding(
// padding: EdgeInsets.all(20),
// child: Column(
// children: <Widget>[
// Expanded( // Expanded(
// flex: 2, // flex: 6,
// child: Column( // child: Column(
// mainAxisAlignment: MainAxisAlignment.end, // // mainAxisAlignment: MainAxisAlignment.spaceBetween,
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[ // children: <Widget>[
// Row( // Image.asset(
// 'assets/images/habib-logo.png',
// height: 80,
// width: 80,
// ),
// Padding(
// padding: EdgeInsets.all(20),
// child: AppText(
// TranslationBase.of(context).registerInfoFamily,
// fontSize: SizeConfig.textMultiplier * 3.5,
// textAlign: TextAlign.left,
// ),
// ),
// Padding(
// padding: EdgeInsets.all(20),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[ // children: <Widget>[
// Expanded( // Expanded(
// child: DefaultButton( // child: InkWell(
// TranslationBase.of(context).registerNow, // onTap: () => {AddFamilyMemberType.loginType = 1, Navigator.of(context).pushNamed(ADD_FAMILY_MEMBER)},
// () => { // child: RoundedContainer(
// Navigator.of(context).pushNamed( // borderColor: Colors.grey,
// REGISTER, // showBorder: true,
// child: Padding(
// padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[
// Image.asset(
// 'assets/images/id_card_icon.png',
// height: SizeConfig.imageSizeMultiplier * 12,
// width: SizeConfig.imageSizeMultiplier * 15,
// ),
// SizedBox(
// height: 20,
// ),
// AppText(
// TranslationBase.of(context).idNo,
// fontSize: SizeConfig.textMultiplier * 2,
// )
// ],
// ),
// )))),
// Expanded(
// child: InkWell(
// onTap: () => {AddFamilyMemberType.loginType = 2, Navigator.of(context).pushNamed(ADD_FAMILY_MEMBER)},
// child: RoundedContainer(
// borderColor: Colors.grey,
// showBorder: true,
// child: Padding(
// padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
// child: Column(
// children: <Widget>[
// 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,
// ),
// ]),
// ),
// // Expanded(
// // flex: 2,
// // child: Column(
// // mainAxisAlignment: MainAxisAlignment.end,
// // children: <Widget>[
// // Row(
// // children: <Widget>[
// // Expanded(
// // child: DefaultButton(
// // TranslationBase.of(context).registerNow,
// // () => {
// // Navigator.of(context).pushNamed(
// // REGISTER,
// // )
// // },
// // ))
// // ],
// // ),
// // ],
// // ))
// ],
// )));
}
Widget getButton(BuildContext _context, String _title, String _icon, int _flag) {
return InkWell(
onTap: () {
AddFamilyMemberType.loginType = _flag;
Navigator.of(_context).pushNamed(ADD_FAMILY_MEMBER);
},
child: Container(
padding: EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
SvgPicture.asset(
_icon,
height: 38,
width: 38,
),
Text(
_title,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16),
),
], ],
))); ),
),
);
} }
} }

@ -1,5 +1,6 @@
import 'dart:ui'; import 'dart:ui';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
@ -7,19 +8,23 @@ import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dar
import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart' as list; import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart' as list;
import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doctor.dart'; import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doctor.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
@ -28,14 +33,13 @@ import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
class MyFamily extends StatefulWidget { class MyFamily extends StatefulWidget {
final bool isAppbarVisible; final bool isAppbarVisible;
MyFamily({this.isAppbarVisible = true}); MyFamily({this.isAppbarVisible = true});
@override @override
_MyFamily createState() => _MyFamily(); _MyFamily createState() => _MyFamily();
} }
@ -55,6 +59,8 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>(); PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
ToDoCountProviderModel toDoProvider; ToDoCountProviderModel toDoProvider;
var isVaiable = false; var isVaiable = false;
bool isSwitchUser = false;
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 2, vsync: this, initialIndex: 0); _tabController = new TabController(length: 2, vsync: this, initialIndex: 0);
@ -80,6 +86,8 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
appBarTitle: TranslationBase.of(context).myFamilyFiles, appBarTitle: TranslationBase.of(context).myFamilyFiles,
isShowAppBar: widget.isAppbarVisible, isShowAppBar: widget.isAppbarVisible,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
showNewAppBar: true,
showNewAppBarTitle: true,
icon: "assets/images/new/bottom_nav/family_files.svg", icon: "assets/images/new/bottom_nav/family_files.svg",
description: TranslationBase.of(context).familyInfo, description: TranslationBase.of(context).familyInfo,
body: Scaffold( body: Scaffold(
@ -100,46 +108,64 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
// ), // ),
// ), // ),
// ), // ),
// Center(
// child: Container(
// height: 60.0,
// // margin: EdgeInsets.only(top: 10.0),
// width: MediaQuery.of(context).size.width * 0.92, // 0.9,
// decoration: BoxDecoration(
// border: Border(
// bottom: BorderSide(color: Theme.of(context).dividerColor, width: 0.9), //width: 0.7
// ),
// color: Colors.white),
Center( Center(
child: Container( child:
height: 60.0, // TabBar(
margin: EdgeInsets.only(top: 10.0), // isScrollable: true,
width: MediaQuery.of(context).size.width * 0.92, // 0.9, // controller: _tabController,
decoration: BoxDecoration( // indicatorWeight: 5.0,
border: Border( // indicatorSize: TabBarIndicatorSize.tab,
bottom: BorderSide(color: Theme.of(context).dividerColor, width: 0.9), //width: 0.7 // labelPadding: EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0),
), // unselectedLabelColor: Colors.grey[800],
color: Colors.white), // tabs: [
child: Center( // Container(
child: TabBar( // width: MediaQuery.of(context).size.width * 0.30,
isScrollable: true, // child: Center(
// child: AppText(TranslationBase.of(context).family),
// ),
// ),
// Container(
// width: MediaQuery.of(context).size.width * 0.30,
// child: Center(
// child: AppText(TranslationBase.of(context).request),
// ),
// ),
// ],
// ),
TabBar(
controller: _tabController, controller: _tabController,
indicatorWeight: 5.0, indicatorWeight: 3.0,
//indicatorSize: TabBarIndicatorSize.label,
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.tab,
labelColor: Color(0xff2B353E),
// indicatorColor: Theme.of(context).primaryColor, unselectedLabelColor: Color(0xff575757),
// labelColor: Theme.of(context).primaryColor, labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
labelPadding: EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0), labelStyle: TextStyle(
unselectedLabelColor: Colors.grey[800], fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
tabs: [ fontSize: 16,
Container( fontWeight: FontWeight.w600,
width: MediaQuery.of(context).size.width * 0.30, letterSpacing: -0.48,
child: Center(
child: AppText(TranslationBase.of(context).family),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.30,
child: Center(
child: AppText(TranslationBase.of(context).request),
),
),
],
), ),
unselectedLabelStyle: TextStyle(
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
fontSize: 16,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
), ),
tabs: [Text(TranslationBase.of(context).family), Text(TranslationBase.of(context).request)],
), ),
), ),
// ),
// ),
], ],
), ),
), ),
@ -157,15 +183,14 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
], ],
), ),
bottomSheet: Container( bottomSheet: Container(
width: MediaQuery.of(context).size.width, color: Theme.of(context).scaffoldBackgroundColor,
height: 70.0, width: double.infinity,
margin: EdgeInsets.only(left: 15.0, right: 15.0, top: 10.0), padding: EdgeInsets.all(14),
child: Button( child: DefaultButton(
onTap: () async { TranslationBase.of(context).addFamilyMember,
() async {
Navigator.of(context).pushNamed(ADD_FAMILY_MEMBER_TYPE); Navigator.of(context).pushNamed(ADD_FAMILY_MEMBER_TYPE);
}, },
label: TranslationBase.of(context).addFamilyMember,
backgroundColor: Colors.red[900],
), ),
), ),
), ),
@ -193,50 +218,105 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
return Padding( return Padding(
padding: EdgeInsets.only(top: 50), padding: EdgeInsets.only(top: 50),
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Row( // Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 3, // flex: 3,
child: Texts( // child: Texts(
TranslationBase.of(context).request, // TranslationBase.of(context).request,
textAlign: TextAlign.center, // textAlign: TextAlign.center,
)), // )),
Expanded(flex: 2, child: Texts(TranslationBase.of(context).switchUser, textAlign: TextAlign.center)), // Expanded(flex: 2, child: Texts(TranslationBase.of(context).switchUser, textAlign: TextAlign.center)),
Expanded(flex: 1, child: Texts(TranslationBase.of(context).deleteView, textAlign: TextAlign.center)), // Expanded(flex: 1, child: Texts(TranslationBase.of(context).deleteView, textAlign: TextAlign.center)),
], // ],
), // ),
Column( Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: snapshot.data.getAllSharedRecordsByStatusList.map<Widget>((result) { children: snapshot.data.getAllSharedRecordsByStatusList.map<Widget>((result) {
return result.status == 3 return result.status == 3
? Padding( ? Card(
margin: EdgeInsets.all(10),
shape: cardRadius(15),
color: result.gender == 1 ? Color(0xff6EA8FF) : Color(0xffFDA4B0),
elevation: 3,
child: Container(
// height: 130,
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Expanded(flex: 3, child: Text(result.patientName)), Texts(
Expanded( result.patientName.toLowerCase().capitalizeFirstofEach,
flex: 2, fontSize: 22,
child: IconButton( fontWeight: FontWeight.bold,
icon: Icon(Icons.group), color: Colors.white,
color: Colors.black, ),
onPressed: () { Texts(TranslationBase.of(context).fileNumber + ': ' + result.responseID.toString(), fontSize: 12, color: Colors.white),
switchUser(result, context); Texts(result.age.toString() + ' ' + TranslationBase.of(context).years + ', ' + result.genderDescription, fontSize: 12, color: Colors.white),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
CupertinoSwitch(
value: isSwitchUser,
onChanged: (value) {
setState(() {
isSwitchUser = value;
});
if (isSwitchUser == true) switchUser(result, context);
}, },
)),
Expanded(
flex: 1,
child: IconButton(
icon: Icon(
Icons.delete,
color: Colors.black,
), ),
onPressed: () { Texts(
TranslationBase.of(context).switchUser,
color: Colors.white,
fontSize: 12,
)
],
),
InkWell(
onTap: () {
deleteFamily(result, context); deleteFamily(result, context);
}, },
)), child: Row(
children: [
Texts(
TranslationBase.of(context).delete,
color: Colors.white,
fontSize: 12,
),
Icon(
Icons.delete,
color: Colors.white,
),
], ],
)) ))
],
)
// Expanded(
// flex: 2,
// child: IconButton(
// icon: Icon(Icons.group),
// color: Colors.black,
// onPressed: () {
// switchUser(result, context);
// },
// )),
// Expanded(
// flex: 1,
// child: IconButton(
// icon: Icon(
// Icons.delete,
// color: Colors.black,
// ),
// onPressed: () {
// deleteFamily(result, context);
// },
// )),
],
)))
: SizedBox(); : SizedBox();
}).toList()) }).toList())
])); ]));
@ -281,7 +361,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
child: ExpansionTile( child: ExpansionTile(
title: Text( title: Text(
TranslationBase.of(context).userViewRequest, TranslationBase.of(context).userViewRequest,
style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold, color: Colors.black),
), ),
children: <Widget>[ children: <Widget>[
FutureBuilder( FutureBuilder(
@ -294,19 +374,25 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
if (snapshot.hasError) if (snapshot.hasError)
return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable)); return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable));
else else
return Column( return Container(
padding: EdgeInsets.all(15),
child: Card(
elevation: 3,
shape: cardRadius(8),
child: Column(
children: [ children: [
Column(children: [ Column(children: [
Padding( Padding(
padding: EdgeInsets.only(left: 10, right: 10), padding: EdgeInsets.all(10),
child: Row(children: [ child: Row(children: [
Expanded(flex: 3, child: AppText(TranslationBase.of(context).name)), Expanded(flex: 3, child: AppText(TranslationBase.of(context).name, fontWeight: FontWeight.w600)),
Expanded(flex: 1, child: AppText(TranslationBase.of(context).allow)), Expanded(flex: 1, child: AppText(TranslationBase.of(context).allow, fontWeight: FontWeight.w600)),
Expanded(flex: 1, child: AppText(TranslationBase.of(context).reject)), Expanded(flex: 1, child: AppText(TranslationBase.of(context).reject, fontWeight: FontWeight.w600)),
])), ])),
Divider(color: Colors.black, height: 1),
Column( Column(
children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.map<Widget>((result) { children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.map<Widget>((result) {
return Padding( return Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
@ -338,7 +424,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
}).toList()) }).toList())
]) ])
], ],
); )));
} }
}) })
], ],
@ -348,7 +434,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
child: ExpansionTile( child: ExpansionTile(
title: Text( title: Text(
TranslationBase.of(context).sentRequest, TranslationBase.of(context).sentRequest,
style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold, color: Colors.black),
), ),
children: <Widget>[ children: <Widget>[
FutureBuilder( FutureBuilder(
@ -362,11 +448,21 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable)); return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable));
else else
return Container( return Container(
padding: EdgeInsets.all(15),
height: SizeConfig.screenHeight * .3, height: SizeConfig.screenHeight * .3,
child: Card(
elevation: 3,
shape: cardRadius(8),
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
Padding(padding: EdgeInsets.only(left: 10, right: 10), child: Row(children: [Expanded(flex: 3, child: AppText(TranslationBase.of(context).theName))])), Padding(
padding: EdgeInsets.all(10),
child: Row(children: [
Expanded(flex: 3, child: AppText(TranslationBase.of(context).theName, fontWeight: FontWeight.w600)),
Expanded(flex: 2, child: AppText(TranslationBase.of(context).status, fontWeight: FontWeight.w600))
])),
Divider(color: Colors.black, height: 1),
Column( Column(
children: snapshot.data.getAllSharedRecordsByStatusList.map<Widget>((result) { children: snapshot.data.getAllSharedRecordsByStatusList.map<Widget>((result) {
return Padding( return Padding(
@ -385,7 +481,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
}).toList(), }).toList(),
) )
], ],
))); ))));
} }
}) })
], ],
@ -394,7 +490,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
child: ExpansionTile( child: ExpansionTile(
title: Text( title: Text(
TranslationBase.of(context).userView, TranslationBase.of(context).userView,
style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold, color: Colors.black),
), ),
children: <Widget>[ children: <Widget>[
FutureBuilder( FutureBuilder(
@ -407,15 +503,21 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
if (snapshot.hasError) if (snapshot.hasError)
return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable)); return Padding(padding: EdgeInsets.all(10), child: Text(TranslationBase.of(context).noDataAvailable));
else else
return Column( return Container(
padding: EdgeInsets.all(15),
child: Card(
elevation: 3,
shape: cardRadius(8),
child: Column(
children: [ children: [
Column(children: [ Column(children: [
Padding( Padding(
padding: EdgeInsets.only(left: 10, right: 10), padding: EdgeInsets.all(10),
child: Row(children: [ child: Row(children: [
Expanded(flex: 3, child: AppText(TranslationBase.of(context).name)), Expanded(flex: 3, child: AppText(TranslationBase.of(context).name)),
Expanded(flex: 1, child: AppText(TranslationBase.of(context).delete)), Expanded(flex: 1, child: AppText(TranslationBase.of(context).delete)),
])), ])),
Divider(color: Colors.black),
Column( Column(
children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.map<Widget>((result) { children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.map<Widget>((result) {
return Padding( return Padding(
@ -439,7 +541,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
}).toList()) }).toList())
]) ])
], ],
); )));
} }
}) })
], ],
@ -523,38 +625,40 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
} }
loginAfter(result, context) async { loginAfter(result, context) async {
GifLoaderDialogUtils.hideDialog(context);
var currentLang = await sharedPref.getString(APP_LANGUAGE); var currentLang = await sharedPref.getString(APP_LANGUAGE);
Provider.of<ProjectViewModel>(context, listen: false).setPrivilege(privilegeList: result, isLoginChild: true); Provider.of<ProjectViewModel>(context, listen: false).setPrivilege(privilegeList: result, isLoginChild: true);
result = list.CheckActivationCode.fromJson(result); result = list.CheckActivationCode.fromJson(result);
var familyFile = await sharedPref.getObject(FAMILY_FILE); var familyFile = await sharedPref.getObject(FAMILY_FILE);
result = list.CheckActivationCode.fromJson(result);
var mainUser = await sharedPref.getObject(MAIN_USER); var mainUser = await sharedPref.getObject(MAIN_USER);
var bloodType = await sharedPref.getString(BLOOD_TYPE); var loginType = await sharedPref.getInt(LAST_LOGIN);
this.sharedPref.clear(); this.sharedPref.clear();
if (mainUser["PatientID"] != result.list.patientID) { if (mainUser["PatientID"] != result.list.patientID) {
result.list.isFamily = true; result.list.isFamily = true;
} }
this.sharedPref.setString(APP_LANGUAGE, currentLang); this.sharedPref.setString(APP_LANGUAGE, currentLang);
this.sharedPref.setInt(LAST_LOGIN, loginType);
this.sharedPref.setObject(MAIN_USER, mainUser); this.sharedPref.setObject(MAIN_USER, mainUser);
this.sharedPref.setObject(USER_PROFILE, result.list); this.sharedPref.setObject(USER_PROFILE, result.list);
this.sharedPref.setObject(FAMILY_FILE, familyFile); this.sharedPref.setObject(FAMILY_FILE, familyFile);
this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID); this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID);
this.sharedPref.setString(TOKEN, result.authenticationTokenID); this.sharedPref.setString(TOKEN, result.authenticationTokenID);
await authenticatedUserObject.getUser(getUser: true); await authenticatedUserObject.getUser(getUser: true);
Provider.of<ProjectViewModel>(context, listen: false).user = authenticatedUserObject.user; Provider.of<ProjectViewModel>(context, listen: false).user = authenticatedUserObject.user;
Provider.of<ProjectViewModel>(context, listen: false).setUser(authenticatedUserObject.user); Provider.of<ProjectViewModel>(context, listen: false).setUser(authenticatedUserObject.user);
await pharmacyModuleViewModel.generatePharmacyToken().then((value) async { // await pharmacyModuleViewModel.generatePharmacyToken().then((value) async {
if (pharmacyModuleViewModel.error.isNotEmpty) await pharmacyModuleViewModel.createUser(); // if (pharmacyModuleViewModel.error.isNotEmpty) await pharmacyModuleViewModel.createUser();
}); // });
appointmentRateViewModel appointmentRateViewModel
.getIsLastAppointmentRatedList() .getIsLastAppointmentRatedList()
.then((value) => { .then((value) => {
getToDoCount(), getToDoCount(),
// Utils.hideProgressDialog(), GifLoaderDialogUtils.hideDialog(context),
if (appointmentRateViewModel.isHaveAppointmentNotRate) if (appointmentRateViewModel.isHaveAppointmentNotRate)
{ {
Navigator.pushAndRemoveUntil( Navigator.pushAndRemoveUntil(
@ -577,7 +681,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
.catchError((err) { .catchError((err) {
print(err); print(err);
// Utils.hideProgressDialog(); // Utils.hideProgressDialog();
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
}); });
} }
@ -610,12 +714,12 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, toDoProvider.notificationsCount);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']); print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1 && res['AppointmentActiveNumber'] != null) { if (res['MessageStatus'] == 1 && res['AppointmentActiveNumber'] != null) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);

@ -50,13 +50,12 @@ class NotificationsDetailsPage extends StatelessWidget {
height: 25, height: 25,
), ),
Container( Container(
// margin: EdgeInsets.only(left: 30),
width: double.infinity, width: double.infinity,
color: Colors.grey[400], color: Colors.grey[400],
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts( child: Texts(
getDateForm(notification.createdOn), DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false),
fontSize: 16, fontSize: 16,
), ),
), ),

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_
import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -60,8 +61,9 @@ class NotificationsPage extends StatelessWidget {
.map( .map(
(notification) => InkWell( (notification) => InkWell(
onTap: () async { onTap: () async {
if (!notification.isRead) if (!notification.isRead) {
model.markAsRead(notification.id); model.markAsRead(notification.id);
}
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
@ -82,7 +84,7 @@ class NotificationsPage extends StatelessWidget {
border: Border.all( border: Border.all(
color: notification.isRead color: notification.isRead
? Colors.grey[200] ? Colors.grey[200]
: Theme.of(context).primaryColor, : CustomColors.accentColor,
width: 0.5), width: 0.5),
), ),
child: Row( child: Row(
@ -93,7 +95,7 @@ class NotificationsPage extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(getDateForm(notification.createdOn)), Texts(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false)),
SizedBox( SizedBox(
height: 5, height: 5,
), ),

@ -87,7 +87,7 @@ class _ErOptionsState extends State<ErOptions> {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
Navigator.push(context, FadePage(page: RRTMainScreen())); if(rrtLocked) Navigator.push(context, FadePage(page: RRTMainScreen()));
}, },
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).rrtService, title: TranslationBase.of(context).rrtService,

@ -5,6 +5,10 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
class RRTLogPage extends StatefulWidget { class RRTLogPage extends StatefulWidget {
final List<PrescriptionsOrder> orders; final List<PrescriptionsOrder> orders;
@ -18,10 +22,18 @@ class RRTLogPage extends StatefulWidget {
class RRTLogPageState extends State<RRTLogPage> { class RRTLogPageState extends State<RRTLogPage> {
RRTViewModel viewModel; RRTViewModel viewModel;
@override
void initState() {
setState(() {});
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<RRTViewModel>( return BaseView<RRTViewModel>(
onModelReady: (vm) => viewModel = vm, onModelReady: (vm) => {
viewModel = vm,
},
builder: (ctx, vm, widgetState) { builder: (ctx, vm, widgetState) {
return ListView.builder( return ListView.builder(
itemCount: widget.orders.length, itemCount: widget.orders.length,
@ -36,12 +48,13 @@ class RRTLogPageState extends State<RRTLogPage> {
deleteOrder(PrescriptionsOrder order) async { deleteOrder(PrescriptionsOrder order) async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
var success = await viewModel.cancelOrder(order); var success = await viewModel.cancelOrder(order);
GifLoaderDialogUtils.hideDialog(context);
if (success) { if (success) {
setState(() { viewModel.setState(ViewState.Busy);
widget.orders.remove(order);
});
}
await viewModel.getAllOrders(); await viewModel.getAllOrders();
viewModel.setState(ViewState.Idle);
Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: RRTMainScreen));
Navigator.push(context, FadePage(page: RRTMainScreen()));
}
} }
} }

@ -9,6 +9,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class RRTMainScreen extends StatefulWidget { class RRTMainScreen extends StatefulWidget {
final index = 0;
RRTMainScreen({index});
@override @override
State<StatefulWidget> createState() => RRTMainScreenState(); State<StatefulWidget> createState() => RRTMainScreenState();
} }

@ -5,26 +5,37 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
final _item_content_seperator = Container(height: 0.25, padding: EdgeInsets.all(10), color: Colors.grey.withOpacity(0.5)); final _item_content_seperator = Container(height: 0.25, padding: EdgeInsets.all(10), color: Colors.grey.withOpacity(0.5));
class RRTLogListItem extends StatelessWidget { class RRTLogListItem extends StatefulWidget {
final PrescriptionsOrder order; final PrescriptionsOrder order;
final Function(PrescriptionsOrder) onCancel; final Function(PrescriptionsOrder) onCancel;
RRTLogListItem(this.order, {this.onCancel}); RRTLogListItem(this.order, {this.onCancel});
@override
State<StatefulWidget> createState() => RRTLogListItemState();
BuildContext _context; BuildContext _context;
}
class RRTLogListItemState extends State<RRTLogListItem> {
RRTViewModel viewModel;
TranslationBase localize; TranslationBase localize;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
_context = context;
localize = TranslationBase.of(context); localize = TranslationBase.of(context);
int status = order.status; int status = widget.order.status;
String _statusDisp = projectViewModel.isArabic ? order.descriptionN : order.description; String _statusDisp = projectViewModel.isArabic ? widget.order.descriptionN : widget.order.description;
Color _color; Color _color;
if (status == 1) { if (status == 1) {
//pending //pending
@ -39,6 +50,11 @@ class RRTLogListItem extends StatelessWidget {
//cancel // Rejected //cancel // Rejected
_color = Color(0xffD02127); _color = Color(0xffD02127);
} }
return BaseView<RRTViewModel>(
onModelReady: (vm) => {
viewModel = vm,
},
builder: (ctx, vm, widgetState) {
return Container( return Container(
margin: EdgeInsets.all(5), margin: EdgeInsets.all(5),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -83,7 +99,7 @@ class RRTLogListItem extends StatelessWidget {
), ),
SizedBox(height: 6), SizedBox(height: 6),
Text( Text(
'${TranslationBase.of(context).requestID}: ${order.iD}', '${TranslationBase.of(context).requestID}: ${widget.order.iD}',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
Row( Row(
@ -95,7 +111,7 @@ class RRTLogListItem extends StatelessWidget {
), ),
Expanded( Expanded(
child: Text( child: Text(
!projectViewModel.isArabic ? order.nearestProjectDescription.trim().toString() : order.nearestProjectDescriptionN.toString(), !projectViewModel.isArabic ? widget.order.nearestProjectDescription.trim().toString() : widget.order.nearestProjectDescriptionN.toString(),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56),
), ),
), ),
@ -110,7 +126,7 @@ class RRTLogListItem extends StatelessWidget {
), ),
Expanded( Expanded(
child: Text( child: Text(
order.getFormattedDateTime(), widget.order.getFormattedDateTime(),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56),
), ),
), ),
@ -124,14 +140,15 @@ class RRTLogListItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Text( Text(
DateUtil.getDayMonthYearDateFormattedLang(order.createdOn, projectViewModel.isArabic), DateUtil.getDayMonthYearDateFormattedLang(widget.order.createdOn, projectViewModel.isArabic),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
), ),
SizedBox(height: 12), SizedBox(height: 12),
if (order.status == 1 || order.status == 2) if (widget.order.status == 1 || widget.order.status == 2)
InkWell( InkWell(
onTap: () { onTap: () {
onCancel(order); //onCancel(order);
cancelOrders(widget.order);
}, },
child: Container( child: Container(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 14), padding: EdgeInsets.symmetric(vertical: 8, horizontal: 14),
@ -152,6 +169,7 @@ class RRTLogListItem extends StatelessWidget {
), ),
), ),
); );
});
// return Container( // return Container(
// padding: EdgeInsets.all(15), // padding: EdgeInsets.all(15),
@ -207,4 +225,16 @@ class RRTLogListItem extends StatelessWidget {
// style: TextStyle(color: Colors.white, fontSize: 13), // style: TextStyle(color: Colors.white, fontSize: 13),
// ), // ),
// ); // );
cancelOrders(order) async {
GifLoaderDialogUtils.showMyDialog(context);
var success = await viewModel.cancelOrder(order);
if (success) {
viewModel.setState(ViewState.Busy);
await viewModel.getAllOrders();
viewModel.setState(ViewState.Idle);
Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: RRTMainScreen));
Navigator.push(context, FadePage(page: RRTMainScreen()));
}
}
} }

@ -116,9 +116,7 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
} }
void loadAddresses() async { void loadAddresses() async {
// GifLoaderDialogUtils.showMyDialog(context);
await viewModel.getCustomerInfo(); await viewModel.getCustomerInfo();
// GifLoaderDialogUtils.hideDialog(context);
if (viewModel.addressesList.isNotEmpty) setState(() {}); if (viewModel.addressesList.isNotEmpty) setState(() {});
} }

@ -16,6 +16,7 @@ import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart'; import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
class RRTPlaceOrderPage extends StatelessWidget { class RRTPlaceOrderPage extends StatelessWidget {
TranslationBase localize; TranslationBase localize;
@ -206,7 +207,11 @@ class RRTPlaceOrderPage extends StatelessWidget {
} }
} }
gotoRRTRoot() { gotoRRTRoot() async {
Navigator.popUntil(_context, (route) => Utils.route(route, equalsTo: ErOptions)); viewModel.setState(ViewState.Busy);
await viewModel.getAllOrders();
viewModel.setState(ViewState.Idle);
Navigator.popUntil(_context, (route) => Utils.route(route, equalsTo: RRTMainScreen));
Navigator.push(_context, FadePage(page: RRTMainScreen()));
} }
} }

@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-ord
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart'; import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/reports/user_agreement_page.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/user_agreement_page.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -190,6 +191,7 @@ class RRTRequestPageState extends State<RRTRequestPage> {
else else
AppToast.showErrorToast(message: TranslationBase.of(context).pleaseAcceptTerms); AppToast.showErrorToast(message: TranslationBase.of(context).pleaseAcceptTerms);
}, },
color: acceptTerms ? CustomColors.accentColor : Colors.grey,
), ),
), ),
], ],

@ -94,6 +94,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, widget.appo.doctorTitle + " " + widget.appo.doctorNameObj,
widget.appo.doctorID,
widget.appo.doctorImageURL, widget.appo.doctorImageURL,
widget.appo.doctorSpeciality, widget.appo.doctorSpeciality,
"", "",
@ -107,7 +108,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
"", "",
//model.user.emailAddress, //model.user.emailAddress,
), ),
isNeedToShowButton: (widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment) ? false : true, isNeedToShowButton: (widget.appo.clinicID == 17 || widget.appo.clinicID == 47 || widget.appo.clinicID == 23 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment) ? false : true,
buttonTitle: TranslationBase.of(context).schedule, buttonTitle: TranslationBase.of(context).schedule,
buttonIcon: 'assets/images/new/Boo_ Appointment.svg', buttonIcon: 'assets/images/new/Boo_ Appointment.svg',
showConfirmMessageDialog: false, showConfirmMessageDialog: false,
@ -136,7 +137,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
onTap: (index) { onTap: (index) {
setState(() { setState(() {
if (index == 1) { if (index == 1) {
if (widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment) { if (widget.appo.clinicID == 17 || widget.appo.clinicID == 47 || widget.appo.clinicID == 23 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment) {
_tabController.index = _tabController.previousIndex; _tabController.index = _tabController.previousIndex;
AppointmentDetails.showFooterButton = false; AppointmentDetails.showFooterButton = false;
} else { } else {
@ -147,7 +148,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
}, },
tabs: [ tabs: [
Tab(child: Text(TranslationBase.of(context).appoActions, style: TextStyle(color: Colors.black))), Tab(child: Text(TranslationBase.of(context).appoActions, style: TextStyle(color: Colors.black))),
widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.clinicID == 47 || widget.appo.clinicID == 265 || widget.appo.isExecludeDoctor || widget.appo.isLiveCareAppointment
? Tab( ? Tab(
child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.grey)), child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.grey)),
) )
@ -357,7 +358,8 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
width: 100.0, width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(TranslationBase.of(context).excellent, style: TextStyle(fontSize: 13.0, color: Colors.black))), child: Text(TranslationBase.of(context).excellent, style: TextStyle(fontSize: 13.0, color: Colors.black))),
Container( Expanded(
child: Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
child: SizedBox( child: SizedBox(
width: getRatingWidth(doctorDetailsList[0].patientNumber), width: getRatingWidth(doctorDetailsList[0].patientNumber),
@ -367,6 +369,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
), ),
), ),
), ),
),
], ],
), ),
), ),
@ -579,11 +582,11 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, toDoProvider.notificationsCount);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);

@ -167,7 +167,7 @@ class _SchedulePageState extends State<SchedulePage> {
? Icons ? Icons
.arrow_back_ios_outlined .arrow_back_ios_outlined
: Icons : Icons
.arrow_forward_ios_outlined, size: 16.0), .arrow_forward_outlined, size: 16.0),
], ],
) )
]))), ]))),

@ -67,7 +67,7 @@ class _AppointmentActionsState extends State<AppointmentActions> {
padding: EdgeInsets.all(21), padding: EdgeInsets.all(21),
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (context, index) { itemBuilder: (context, index) {
bool shouldEnable = (widget.appo.clinicID == 17 && appoButtonsList[index].caller == "openReschedule"); bool shouldEnable = (widget.appo.clinicID == 17 && widget.appo.clinicID == 47 && appoButtonsList[index].caller == "openReschedule");
return InkWell( return InkWell(
onTap: shouldEnable onTap: shouldEnable
? null ? null

@ -74,7 +74,7 @@ class _PrescriptionReportState extends State<PrescriptionReportPage> {
.prescriptionReportEnhList[index].itemDescription)), .prescriptionReportEnhList[index].itemDescription)),
)), )),
Icon( Icon(
Icons.arrow_forward_ios, Icons.arrow_forward,
size: 18, size: 18,
color: Colors.grey[500], color: Colors.grey[500],
) )

@ -47,7 +47,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
updateSelectedPaymentMethod("MADA"); updateSelectedPaymentMethod("MADA");
}, },
child: Card( child: Card(
elevation: 3.0, elevation: 0.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -83,7 +83,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
updateSelectedPaymentMethod("VISA"); updateSelectedPaymentMethod("VISA");
}, },
child: Card( child: Card(
elevation: 3.0, elevation: 0.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -119,7 +119,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
updateSelectedPaymentMethod("MASTERCARD"); updateSelectedPaymentMethod("MASTERCARD");
}, },
child: Card( child: Card(
elevation: 3.0, elevation: 0.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -155,7 +155,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
updateSelectedPaymentMethod("Installment"); updateSelectedPaymentMethod("Installment");
}, },
child: Card( child: Card(
elevation: 3.0, elevation: 0.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -192,7 +192,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
updateSelectedPaymentMethod("ApplePay"); updateSelectedPaymentMethod("ApplePay");
}, },
child: Card( child: Card(
elevation: 3.0, elevation: 0.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(

@ -5,7 +5,9 @@ import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_mode
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -13,6 +15,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart'; import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -49,6 +52,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
var reconizedWord; var reconizedWord;
var event = RobotProvider(); var event = RobotProvider();
List<AppoitmentAllHistoryResultList> appoList = [];
String getSelected(BuildContext context) { String getSelected(BuildContext context) {
switch (messageType) { switch (messageType) {
case MessageType.ComplaintOnAnAppointment: case MessageType.ComplaintOnAnAppointment:
@ -111,7 +116,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
children: <Widget>[ children: <Widget>[
Text( Text(
TranslationBase.of(context).likeToHear, TranslationBase.of(context).likeToHear,
textAlign: TextAlign.center, // textAlign: TextAlign.center,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox(height: 21), SizedBox(height: 21),
@ -159,184 +164,50 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
isShowListAppointHistory = true; isShowListAppointHistory = true;
}); });
}, },
child: Container( child: DoctorCard(
// margin: EdgeInsets.all(8.0), onTap: null,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), isInOutPatient: appointHistory.isInOutPatient,
child: Row( name: appointHistory.doctorTitle + " " + appointHistory.doctorNameObj,
children: <Widget>[ // billNo: _appointmentResult.invoiceNo,
Container( profileUrl: appointHistory.doctorImageURL,
width: projectViewModel.isArabic ? 27 : 20, subName: appointHistory.projectName,
height: projectViewModel.isArabic ? 105 : 90, isLiveCareAppointment: appointHistory.isLiveCareAppointment,
decoration: BoxDecoration( date: DateUtil.convertStringToDate(appointHistory.appointmentDate),
//Colors.red[900] Color(0xff404545) rating: appointHistory.actualDoctorRate + 0.0,
color: appointHistory.isLiveCareAppointment appointmentTime: appointHistory.startTime.substring(0, 5),
? Color(0xff404545)
: !appointHistory.isInOutPatient
? Colors.red[900]
: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(8),
bottomLeft: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(8),
topRight: projectViewModel.isArabic ? Radius.circular(8) : Radius.circular(0),
bottomRight: projectViewModel.isArabic ? Radius.circular(8) : Radius.circular(0),
),
),
child: RotatedBox(
quarterTurns: 3,
child: Center(
child: Text(
appointHistory.isLiveCareAppointment
? TranslationBase.of(context).liveCare.toUpperCase()
: !appointHistory.isInOutPatient
? TranslationBase.of(context).inPatient.toUpperCase()
: TranslationBase.of(context).outpatient.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 12),
),
)),
),
Expanded(
flex: 4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: LargeAvatar(
name: appointHistory.doctorNameObj,
url: appointHistory.doctorImageURL,
),
),
Expanded(
flex: 4,
child: Container(
margin: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
appointHistory.doctorNameObj,
bold: true,
),
Texts(
DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(appointHistory.appointmentDate)),
variant: 'caption3',
),
StarRating(totalAverage: appointHistory.doctorRate.toDouble(), forceStars: true),
],
),
),
),
],
),
),
],
),
),
Expanded(
flex: 1,
child: Center(
child: Icon(
Icons.arrow_forward_ios,
size: 15,
),
),
)
],
), ),
), ),
), SizedBox(height: 12),
if (messageType == MessageType.ComplaintOnAnAppointment && model.appointHistoryList.length != 0 && isShowListAppointHistory) if (messageType == MessageType.ComplaintOnAnAppointment && appoList.length != 0 && isShowListAppointHistory)
Container( Container(
height: model.appointHistoryList.length > 2 ? MediaQuery.of(context).size.height * 0.25 : MediaQuery.of(context).size.height * 0.15, margin: EdgeInsets.only(bottom: 10.0),
height: appoList.length > 2 ? MediaQuery.of(context).size.height * 0.35 : MediaQuery.of(context).size.height * 0.17,
child: ListView.builder( child: ListView.builder(
itemCount: model.appointHistoryList.length, itemCount: appoList.length,
itemBuilder: (context, index) => InkWell( itemBuilder: (context, index) => InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
appointHistory = model.appointHistoryList[index]; appointHistory = appoList[index];
isShowListAppointHistory = false; isShowListAppointHistory = false;
}); });
}, },
child: Container( child: DoctorCard(
margin: EdgeInsets.only(left: 8, right: 8), onTap: null,
color: Colors.white, isInOutPatient: appoList[index].isInOutPatient,
child: Column( name: appoList[index].doctorTitle + " " + appoList[index].doctorNameObj,
children: <Widget>[ profileUrl: appoList[index].doctorImageURL,
Row( subName: appoList[index].projectName,
children: <Widget>[ isLiveCareAppointment: appoList[index].isLiveCareAppointment,
Expanded( date: DateUtil.convertStringToDate(appoList[index].appointmentDate),
flex: 4, rating: appoList[index].actualDoctorRate + 0.0,
child: Column( appointmentTime: appoList[index].startTime.substring(0, 5),
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: LargeAvatar(
name: model.appointHistoryList[index].doctorNameObj,
url: model.appointHistoryList[index].doctorImageURL,
),
),
Expanded(
flex: 4,
child: Container(
margin: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
model.appointHistoryList[index].doctorNameObj,
bold: true,
),
Texts(
DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(model.appointHistoryList[index].appointmentDate)),
variant: 'caption3',
),
StarRating(totalAverage: model.appointHistoryList[index].doctorRate.toDouble(), forceStars: true),
],
),
),
),
],
),
),
],
),
),
Expanded(
flex: 1,
child: Center(
child: Icon(
Icons.arrow_forward_ios,
size: 15,
),
),
)
],
),
SizedBox(
height: 5,
),
Divider(
height: 0.5,
color: Colors.grey[400],
)
],
), ),
), ),
), ),
), ),
), inputWidget(TranslationBase.of(context).subject, "", titleController),
inputWidget(TranslationBase.of(context).subject, "xxxxxxxx", titleController),
SizedBox(height: 12), SizedBox(height: 12),
inputWidget(TranslationBase.of(context).message, "xxxxxxxx", messageController, lines: 11, suffixTap: () { inputWidget(TranslationBase.of(context).message, "", messageController, lines: 11, suffixTap: () {
openSpeechReco(); openSpeechReco();
}), }),
SizedBox(height: 12), SizedBox(height: 12),
@ -492,7 +363,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
TextField( TextField(
enabled: isEnable, enabled: isEnable,
scrollPadding: EdgeInsets.zero, scrollPadding: EdgeInsets.zero,
keyboardType: TextInputType.number, keyboardType: TextInputType.text,
controller: _controller, controller: _controller,
maxLines: lines, maxLines: lines,
onChanged: (value) => {setState(() {})}, onChanged: (value) => {setState(() {})},
@ -515,19 +386,6 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
), ),
suffixIconConstraints: BoxConstraints(minWidth: 50), suffixIconConstraints: BoxConstraints(minWidth: 50),
suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap), suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap),
// prefixIconConstraints: BoxConstraints(minWidth: 50),
// prefixIcon: suffix == null
// ? null
// : Text(
// "+" + suffix,
// style: TextStyle(
// fontSize: 14,
// height: 21 / 14,
// fontWeight: FontWeight.w500,
// color: Color(0xff2E303A),
// letterSpacing: -0.56,
// ),
// ),
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
border: InputBorder.none, border: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
@ -570,19 +428,39 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
// Show Dialog function // Show Dialog function
void confirmBox(FeedbackViewModel model) { void confirmBox(FeedbackViewModel model) {
DoctorsListService service = new DoctorsListService();
showDialog( showDialog(
context: context, context: context,
child: FeedbackTypeDialog( child: FeedbackTypeDialog(
messageTypeDialog: messageType, messageTypeDialog: messageType,
onValueSelected: (MessageType value) { onValueSelected: (MessageType value) {
if (value == MessageType.ComplaintOnAnAppointment) { if (value == MessageType.ComplaintOnAnAppointment) {
appoList.clear();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
model.getPatentAppointmentHistory().then((value) { service.getPatientAppointmentHistory(false, context, isForCOC: true).then((res) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
setState(() {
if (res['MessageStatus'] == 1) {
if (res['AppoimentAllHistoryResultList'].length != 0) {
res['AppoimentAllHistoryResultList'].forEach((v) {
appoList.add(new AppoitmentAllHistoryResultList.fromJson(v));
});
setState(() { setState(() {
appointHistory = null; appointHistory = null;
isShowListAppointHistory = true;
}); });
} else {}
} else {
}
}); });
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
// print(err);
// AppToast.showErrorToast(message: err);
// Navigator.of(context).pop();
});
} else {
isShowListAppointHistory = false;
} }
setMessageType(value); setMessageType(value);
}, },
@ -694,7 +572,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.NON, value: MessageType.NON,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -716,7 +594,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.ComplaintOnAnAppointment, value: MessageType.ComplaintOnAnAppointment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -738,7 +616,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.ComplaintWithoutAppointment, value: MessageType.ComplaintWithoutAppointment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -760,7 +638,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.Question, value: MessageType.Question,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -782,7 +660,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.Compliment, value: MessageType.Compliment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -804,7 +682,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio( leading: Radio(
value: MessageType.Suggestion, value: MessageType.Suggestion,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), onChanged: (MessageType value) => setMessageDialogType(value),
), ),
), ),
@ -837,7 +715,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
child: Center( child: Center(
child: Texts( child: Texts(
TranslationBase.of(context).cancel, TranslationBase.of(context).cancel,
color: Theme.of(context).primaryColor, color: CustomColors.accentColor,
), ),
), ),
), ),

@ -1,13 +1,16 @@
import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback-detail.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback-detail.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class StatusFeedbackPage extends StatefulWidget { class StatusFeedbackPage extends StatefulWidget {
@override @override
@ -17,6 +20,7 @@ class StatusFeedbackPage extends StatefulWidget {
class _StatusFeedbackPageState extends State<StatusFeedbackPage> { class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<FeedbackViewModel>( return BaseView<FeedbackViewModel>(
onModelReady: (model) => model.getCOC(), onModelReady: (model) => model.getCOC(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
@ -28,67 +32,69 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
child: model.cOCItemList.isNotEmpty child: model.cOCItemList.isNotEmpty
? Container( ? Container(
margin: EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0, bottom: 80), margin: EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0, bottom: 80),
padding: EdgeInsets.all(15.0),
child: ListView.builder( child: ListView.builder(
itemCount: model.cOCItemList.length, itemCount: model.cOCItemList.length,
itemBuilder: (context, index) => InkWell( itemBuilder: (context, index) => InkWell(
onTap: () { onTap: () {
gotodetails(model.cOCItemList[index]);
}, },
child: Container( child: Card(
decoration: BoxDecoration( shape: cardRadius(12),
shape: BoxShape.rectangle, margin: EdgeInsets.all(10),
border: Border.all(color: Colors.white, width: 0.5),
borderRadius: BorderRadius.all(Radius.circular(5)),
color: Colors.white,
),
margin: EdgeInsets.all(4),
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(12.0),
child: Column( child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 8,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: [
Expanded( Column(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
Texts('${model.cOCItemList[index].cOCTitle}'), Text(projectViewModel.isArabic ? model.cOCItemList[index].statusAr : model.cOCItemList[index].status,
Texts( style: TextStyle(fontSize: 14.0, letterSpacing: -0.56, fontWeight: FontWeight.bold)),
TranslationBase.of(context).number + ' : ${model.cOCItemList[index].itemID}', Container(
variant: 'overline', margin: EdgeInsets.only(top: 5.0),
), child: Text(model.cOCItemList[index].formType.toString(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
color: Color(0xff2B353E),
letterSpacing: -0.48,
height: 18 / 12))),
myRichText(TranslationBase.of(context).number + ": ", model.cOCItemList[index].itemID.toString(), projectViewModel.isArabic),
Text(model.cOCItemList[index].cOCTitle,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
color: Color(0xff2B353E),
letterSpacing: -0.48,
height: 18 / 12)),
], ],
), ),
), Column(
Expanded( crossAxisAlignment: CrossAxisAlignment.end,
child: Column( children: [
crossAxisAlignment: CrossAxisAlignment.start, Text(model.cOCItemList[index].date.split(" ")[0],
children: <Widget>[ style: TextStyle(
Texts('${model.cOCItemList[index].status}'), fontSize: 12,
Texts( fontWeight: FontWeight.w600,
'${model.cOCItemList[index].date}', fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
variant: 'overline', color: Color(0xff2B353E),
), letterSpacing: -0.48)),
Text(model.cOCItemList[index].date.split(" ")[1],
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
color: Color(0xff2B353E),
letterSpacing: -0.48)),
], ],
), ),
),
], ],
), ),
Texts('${model.cOCItemList[index].formType}'),
Divider(
height: 4.5,
color: Colors.grey[500],
)
],
), ),
), ),
))), )),
) )
: Center( : Center(
child: Column( child: Column(
@ -117,16 +123,17 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
), ),
), ),
), ),
Container( ],
),
bottomSheet: Container(
color: Colors.white, color: Colors.white,
padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).search, TranslationBase.of(context).search,
() => {}, projectViewModel.isLogin ? null : () => {},
disabledColor: Colors.grey,
), ),
), ),
],
),
), ),
); );
} }

@ -1,5 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart'; import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -154,8 +155,12 @@ class _AttachInsuranceCardImageDialogState extends State<AttachInsuranceCardImag
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () { onTap: () {
if(file != null && image != null) {
Navigator.pop(context); Navigator.pop(context);
widget.image(file, image); widget.image(file, image);
} else {
AppToast.showErrorToast(message: TranslationBase.of(context).noInsuranceCardAttached);
}
}, },
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),

@ -2,7 +2,9 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
@ -45,7 +47,7 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
description: TranslationBase.of(context).infoApprovals, description: TranslationBase.of(context).infoApprovals,
infoList: TranslationBase.of(context).infoApprovalPoints, infoList: TranslationBase.of(context).infoApprovalPoints,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
body: ListView.separated( body: model.insuranceApproval.length > 0 ? ListView.separated(
padding: EdgeInsets.all(21), padding: EdgeInsets.all(21),
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
itemBuilder: (_, index) { itemBuilder: (_, index) {
@ -148,7 +150,7 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
height: 48, height: 48,
alignment: Alignment.bottomRight, alignment: Alignment.bottomRight,
child: Icon( child: Icon(
Icons.visibility_sharp, Icons.arrow_forward,
color: Color(0xff2E303A), color: Color(0xff2E303A),
), ),
) )
@ -164,7 +166,7 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
); );
}, },
separatorBuilder: (context, index) => SizedBox(height: 12), separatorBuilder: (context, index) => SizedBox(height: 12),
itemCount: model.insuranceApproval.length)), itemCount: model.insuranceApproval.length) : getNoDataWidget(context)),
); );
} }

@ -150,7 +150,9 @@ class InsurancePage extends StatelessWidget {
patientID: patientID, patientID: patientID,
patientIdentificationID: patientIdentificationID, patientIdentificationID: patientIdentificationID,
name: name, name: name,
))); ))).then((value) {
model.getInsuranceUpdated();
});
} else { } else {
AppToast.showErrorToast(message: _insuranceCardService.error); AppToast.showErrorToast(message: _insuranceCardService.error);
} }

@ -77,6 +77,8 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
SignalRUtil signalRUtil; SignalRUtil signalRUtil;
ToDoCountProviderModel toDoProvider;
bool _showBottomNavigationBar = true; bool _showBottomNavigationBar = true;
///inject the user data ///inject the user data
@ -505,6 +507,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
setState(() { setState(() {
notificationCount = notificationCount =
value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString();
model.setState(model.count, true, notificationCount);
sharedPref.setString(NOTIFICATION_COUNT, notificationCount); sharedPref.setString(NOTIFICATION_COUNT, notificationCount);
}) })
} }
@ -555,14 +558,14 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
pageController.jumpToPage(0); pageController.jumpToPage(0);
}, },
), ),
projectViewModel.isLogin && notificationCount != '' projectViewModel.isLogin && model.notificationsCount != null
? new Positioned( ? new Positioned(
right: projectViewModel.isArabic ? 35 : 0, right: projectViewModel.isArabic ? 35 : 0,
top: 5, top: 5,
child: new Container( child: new Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
decoration: new BoxDecoration( decoration: new BoxDecoration(
color: Colors.red, color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
constraints: BoxConstraints( constraints: BoxConstraints(
@ -570,7 +573,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
minHeight: 20, minHeight: 20,
), ),
child: new Text( child: new Text(
notificationCount, model.notificationsCount.toString(),
style: new TextStyle( style: new TextStyle(
color: Colors.white, color: Colors.white,
fontSize: projectViewModel.isArabic ? 8 : 9, fontSize: projectViewModel.isArabic ? 8 : 9,
@ -677,6 +680,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
setState(() { setState(() {
if (value != null) { if (value != null) {
notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString();
model.setState(model.count, true, notificationCount);
sharedPref.setString(NOTIFICATION_COUNT, notificationCount); sharedPref.setString(NOTIFICATION_COUNT, notificationCount);
} }
}), }),

@ -137,19 +137,20 @@ class LoggedSliderView extends StatelessWidget {
padding: const EdgeInsets.only(left: 20, right: 20), padding: const EdgeInsets.only(left: 20, right: 20),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( flex: 3, Expanded(
flex: 3,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SvgPicture.asset( SvgPicture.asset(
'assets/images/new/height.svg', 'assets/images/new/height.svg',
width: 12, width: 11,
height: 12, height: 11,
), ),
mWidth(6), mWidth(6),
Texts( Texts(
"${TranslationBase.of(context).height}: ${model.heightCm} ${TranslationBase.of(context).cm}", "${TranslationBase.of(context).height}: ${model.heightCm} ${TranslationBase.of(context).cm}",
color: Colors.white, color: Colors.white,
fontSize: 10, fontSize: 8,
) )
], ],
), ),
@ -157,16 +158,21 @@ class LoggedSliderView extends StatelessWidget {
SizedBox( SizedBox(
width: 3, width: 3,
), ),
Expanded( flex: 3, Expanded(
flex: 3,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SvgPicture.asset( SvgPicture.asset(
'assets/images/new/weight.svg', 'assets/images/new/weight.svg',
width: 12, width: 11,
height: 12, height: 11,
), ),
mWidth(6), mWidth(6),
Texts('${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}', color: Colors.white, fontSize: 10) Texts(
'${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}',
color: Colors.white,
fontSize: 8,
)
], ],
), ),
), ),
@ -179,11 +185,15 @@ class LoggedSliderView extends StatelessWidget {
children: <Widget>[ children: <Widget>[
SvgPicture.asset( SvgPicture.asset(
'assets/images/new/blood.svg', 'assets/images/new/blood.svg',
width: 12, width: 11,
height: 12, height: 11,
), ),
mWidth(6), mWidth(6),
Texts('${TranslationBase.of(context).bloodType1} ${model.booldType}', color: Colors.white, fontSize: 10) Texts(
'${TranslationBase.of(context).bloodType1} ${model.booldType}',
color: Colors.white,
fontSize: 8,
)
], ],
), ),
), ),

@ -170,11 +170,11 @@ class _LiveCareTypeSelectState extends State<LiveCareTypeSelect> {
), ),
InkWell( InkWell(
onTap: (){ onTap: (){
Navigator.pop(context, "schedule"); // Navigator.pop(context, "schedule");
}, },
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.grey[700], color: Colors.grey[400],
borderRadius: BorderRadius.all(Radius.circular(10.0))), borderRadius: BorderRadius.all(Radius.circular(10.0))),
height: 100.0, height: 100.0,
margin: EdgeInsets.only(top: 20.0), margin: EdgeInsets.only(top: 20.0),

@ -160,9 +160,9 @@ class _ConfirmLogin extends State<ConfirmLogin> {
), ),
Text( Text(
user.editedOn != null user.editedOn != null
? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.editedOn), projectViewModel.isArabic) ? DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(user.editedOn))
: user.createdOn != null : user.createdOn != null
? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.createdOn), projectViewModel.isArabic) ? DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(user.createdOn))
: '--', : '--',
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
), ),
@ -191,9 +191,9 @@ class _ConfirmLogin extends State<ConfirmLogin> {
Expanded(child: SizedBox()), Expanded(child: SizedBox()),
Text( Text(
user.editedOn != null user.editedOn != null
? DateUtil.formatDateToTime(DateUtil.convertStringToDate(user.editedOn)) ? DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(user.editedOn), false)
: user.createdOn != null : user.createdOn != null
? DateUtil.formatDateToTime(DateUtil.convertStringToDate(user.createdOn)) ? DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(user.createdOn), false)
: '--', : '--',
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48),
), ),
@ -392,13 +392,11 @@ class _ConfirmLogin extends State<ConfirmLogin> {
loginWithFingurePrintFace(type, int isActive) async { loginWithFingurePrintFace(type, int isActive) async {
if (isActive == 1 || isActive == 0) { if (isActive == 1 || isActive == 0) {
const iosStrings = const iosStrings =
const IOSAuthMessages(cancelButton: 'cancel', goToSettingsButton: 'settings', goToSettingsDescription: 'Please set up your Touch ID.', lockOut: 'Please reenable your Touch ID'); const IOSAuthMessages(cancelButton: 'cancel', goToSettingsButton: 'settings', goToSettingsDescription: 'Please set up your Touch ID.', lockOut: 'Please reenable your Touch ID');
try { try {
authenticated = await auth.authenticateWithBiometrics(localizedReason: 'Scan your fingerprint to authenticate', useErrorDialogs: true, stickyAuth: true, iOSAuthStrings: iosStrings); authenticated = await auth.authenticateWithBiometrics(localizedReason: 'Scan your fingerprint to authenticate', useErrorDialogs: true, stickyAuth: true, iOSAuthStrings: iosStrings);
} on PlatformException catch (e) { } on PlatformException catch (e) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: 'Please enable your Touch or Face ID'); AppToast.showErrorToast(message: 'Please enable your Touch or Face ID');
@ -584,11 +582,11 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, "0");
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, "0");
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);
@ -689,36 +687,36 @@ class _ConfirmLogin extends State<ConfirmLogin> {
), ),
); );
return InkWell( // return InkWell(
onTap: () { // onTap: () {
if (_flag == 0) { // if (_flag == 0) {
setState(() { // setState(() {
isMoreOption = true; // isMoreOption = true;
}); // });
} else { // } else {
authenticateUser(4, isActive: _loginIndex); // authenticateUser(4, isActive: _loginIndex);
} // }
}, // },
child: RoundedContainer( // child: RoundedContainer(
height: 150, // height: 150,
borderColor: Colors.grey, // borderColor: Colors.grey,
showBorder: true, // showBorder: true,
child: Padding( // child: Padding(
padding: EdgeInsets.fromLTRB(30, 15, 30, 15), // padding: EdgeInsets.fromLTRB(30, 15, 30, 15),
child: Column( // child: Column(
children: <Widget>[ // children: <Widget>[
Image.asset( // Image.asset(
_icon, // _icon,
height: SizeConfig.imageSizeMultiplier * 13, // height: SizeConfig.imageSizeMultiplier * 13,
width: SizeConfig.imageSizeMultiplier * 16, // width: SizeConfig.imageSizeMultiplier * 16,
), // ),
SizedBox( // SizedBox(
height: 20, // height: 20,
), // ),
Texts(_title, fontSize: SizeConfig.textMultiplier * 2, color: Colors.black) // Texts(_title, fontSize: SizeConfig.textMultiplier * 2, color: Colors.black)
], // ],
), // ),
))); // )));
} }
// todo 'sikander' optimize this after knowing usage // todo 'sikander' optimize this after knowing usage

@ -59,8 +59,7 @@ class LoginType extends StatelessWidget {
RichText( RichText(
text: TextSpan( text: TextSpan(
text: TranslationBase.of(context).forgotPassword, text: TranslationBase.of(context).forgotPassword,
style: TextStyle( style: TextStyle(decoration: TextDecoration.underline, fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffC9272B), letterSpacing: -0.48, height: 18 / 12),
decoration: TextDecoration.underline, fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffC9272B), letterSpacing: -0.48, height: 18 / 12),
recognizer: TapGestureRecognizer()..onTap = () => Navigator.of(context).push(FadePage(page: ForgotPassword())), recognizer: TapGestureRecognizer()..onTap = () => Navigator.of(context).push(FadePage(page: ForgotPassword())),
), ),
), ),
@ -88,141 +87,141 @@ class LoginType extends StatelessWidget {
), ),
); );
AppScaffold( // AppScaffold(
appBarTitle: TranslationBase.of(context).login, // appBarTitle: TranslationBase.of(context).login,
isShowAppBar: true, // isShowAppBar: true,
isShowDecPage: false, // isShowDecPage: false,
body: SingleChildScrollView( // body: SingleChildScrollView(
child: Container( // child: Container(
padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), // padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
height: SizeConfig.realScreenHeight * .9, // height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth, // width: SizeConfig.realScreenWidth,
child: Column( // child: Column(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 4, // flex: 4,
child: Column( // child: Column(
// mainAxisAlignment: MainAxisAlignment.spaceEvenly, // // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ // children: <Widget>[
Image.asset( // Image.asset(
'assets/images/DQ/logo.png', // 'assets/images/DQ/logo.png',
height: 90, // height: 90,
width: 90, // width: 90,
), // ),
AppText( // AppText(
TranslationBase.of(context).logintypeRadio, // TranslationBase.of(context).logintypeRadio,
fontSize: SizeConfig.textMultiplier * 3.5, // fontSize: SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.start, // textAlign: TextAlign.start,
marginBottom: 20.0, // marginBottom: 20.0,
marginTop: 20.0, // marginTop: 20.0,
), // ),
Row( // Row(
mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
child: InkWell( // child: InkWell(
onTap: () => { // onTap: () => {
LoginType.loginType = 1, // LoginType.loginType = 1,
Navigator.of(context).push(FadePage(page: Login())), // Navigator.of(context).push(FadePage(page: Login())),
}, // },
child: RoundedContainer( // child: RoundedContainer(
borderColor: Colors.grey, // borderColor: Colors.grey,
showBorder: true, // showBorder: true,
child: Padding( // child: Padding(
padding: EdgeInsets.fromLTRB(20, 10, 20, 10), // padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
child: Column( // child: Column(
mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ // children: <Widget>[
Image.asset( // Image.asset(
'assets/images/id_card_icon.png', // 'assets/images/id_card_icon.png',
height: SizeConfig.imageSizeMultiplier * 12, // height: SizeConfig.imageSizeMultiplier * 12,
width: SizeConfig.imageSizeMultiplier * 15, // width: SizeConfig.imageSizeMultiplier * 15,
), // ),
SizedBox( // SizedBox(
height: 20, // height: 20,
), // ),
AppText( // AppText(
TranslationBase.of(context).idNo, // TranslationBase.of(context).idNo,
fontSize: SizeConfig.textMultiplier * 2, // fontSize: SizeConfig.textMultiplier * 2,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
) // )
], // ],
), // ),
)))), // )))),
Expanded( // Expanded(
child: InkWell( // child: InkWell(
onTap: () => { // onTap: () => {
LoginType.loginType = 2, // LoginType.loginType = 2,
Navigator.of(context).push(FadePage(page: Login())), // Navigator.of(context).push(FadePage(page: Login())),
}, // },
child: RoundedContainer( // child: RoundedContainer(
borderColor: Colors.grey, // borderColor: Colors.grey,
showBorder: true, // showBorder: true,
child: Padding( // child: Padding(
padding: EdgeInsets.fromLTRB(25, 10, 25, 10), // padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
child: Column( // child: Column(
children: <Widget>[ // children: <Widget>[
Image.asset( // Image.asset(
'assets/images/my_file_white_icon.png', // 'assets/images/my_file_white_icon.png',
height: SizeConfig.imageSizeMultiplier * 12, // height: SizeConfig.imageSizeMultiplier * 12,
width: SizeConfig.imageSizeMultiplier * 15, // width: SizeConfig.imageSizeMultiplier * 15,
), // ),
SizedBox( // SizedBox(
height: 20, // height: 20,
), // ),
AppText( // AppText(
TranslationBase.of(context).fileNo, // TranslationBase.of(context).fileNo,
fontSize: SizeConfig.textMultiplier * 2, // fontSize: SizeConfig.textMultiplier * 2,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
) // )
], // ],
), // ),
)))) // ))))
], // ],
), // ),
SizedBox( // SizedBox(
height: 25, // height: 25,
), // ),
Divider( // Divider(
color: Colors.grey, // color: Colors.grey,
height: 2, // height: 2,
), // ),
Center( // Center(
child: InkWell( // child: InkWell(
onTap: () => { // onTap: () => {
Navigator.of(context).push(FadePage(page: ForgotPassword())), // Navigator.of(context).push(FadePage(page: ForgotPassword())),
}, // },
child: AppText(TranslationBase.of(context).forgotPassword, fontSize: SizeConfig.textMultiplier * 2.5, marginTop: 20.0, underline: true))) // child: AppText(TranslationBase.of(context).forgotPassword, fontSize: SizeConfig.textMultiplier * 2.5, marginTop: 20.0, underline: true)))
]), // ]),
), // ),
Expanded( // Expanded(
flex: 1, // flex: 1,
child: Column( // child: Column(
mainAxisAlignment: MainAxisAlignment.end, // mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ // children: <Widget>[
Divider( // Divider(
color: Colors.grey, // color: Colors.grey,
height: 2, // height: 2,
), // ),
SizedBox( // SizedBox(
height: 10, // height: 10,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
child: DefaultButton( // child: DefaultButton(
TranslationBase.of(context).registerNow, // TranslationBase.of(context).registerNow,
() => { // () => {
Navigator.of(context).push(FadePage(page: Register())), // Navigator.of(context).push(FadePage(page: Register())),
}, // },
)), // )),
], // ],
), // ),
], // ],
)) // ))
], // ],
)))); // ))));
} }
Widget getButton(BuildContext _context, String _title, String _icon, int _flag) { Widget getButton(BuildContext _context, String _title, String _icon, int _flag) {

@ -359,12 +359,12 @@ class _Login extends State<Login> {
} }
getToDoCount() { getToDoCount() {
toDoProvider.setState(0, true); toDoProvider.setState(0, true, toDoProvider.notificationsCount);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']); print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); toDoProvider.setState(res['AppointmentActiveNumber'], true, toDoProvider.notificationsCount);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
print(err); print(err);

@ -24,7 +24,7 @@ class ActiveMedicationsPage extends StatelessWidget {
isShowDecPage: true, isShowDecPage: true,
baseViewModel: model, baseViewModel: model,
appBarTitle: TranslationBase.of(context).activeMedications, appBarTitle: TranslationBase.of(context).activeMedications,
body: Container( body: model.activePrescriptionReport.length > 0 ? Container(
child: ListView.builder( child: ListView.builder(
itemCount: model.activePrescriptionReport.length, itemCount: model.activePrescriptionReport.length,
itemBuilder: (context, index) => Container( itemBuilder: (context, index) => Container(
@ -197,7 +197,7 @@ class ActiveMedicationsPage extends StatelessWidget {
), ),
), ),
), ),
), ) : getNoDataWidget(context),
), ),
); );
} }

@ -4,9 +4,11 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/ask_doctor/request_type.dart'; import 'package:diplomaticquarterapp/pages/medical/ask_doctor/request_type.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -22,7 +24,20 @@ class AskDoctorPage extends StatelessWidget {
onModelReady: (model) => model.getMyDoctor(), onModelReady: (model) => model.getMyDoctor(),
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
body: _appointmentExpandableList(model.patientDoctorAppointmentListHospital, model), body: model.patientDoctorAppointmentListHospital.length > 0 ? _appointmentExpandableList(model.patientDoctorAppointmentListHospital, model) : noDoctor(context),
),
);
}
Widget noDoctor(BuildContext context) {
return Container(
margin: EdgeInsets.only(left: 50.0, right: 50.0),
child: Center(
child: Text(TranslationBase.of(context).askDocEmpty, textAlign: TextAlign.center, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: CustomColors.accentColor
)),
), ),
); );
} }

@ -99,7 +99,7 @@ class DoctorResponse extends StatelessWidget {
), ),
), ),
Icon(projectViewModel.isArabic Icon(projectViewModel.isArabic
? Icons.arrow_forward_ios ? Icons.arrow_forward
: Icons.arrow_back_ios) : Icons.arrow_back_ios)
], ],
), ),
@ -169,7 +169,7 @@ class DoctorResponse extends StatelessWidget {
), ),
), ),
Icon(projectViewModel.isArabic Icon(projectViewModel.isArabic
? Icons.arrow_forward_ios ? Icons.arrow_forward
: Icons.arrow_back_ios) : Icons.arrow_back_ios)
], ],
), ),

@ -15,6 +15,7 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -258,16 +259,13 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
height: 70,
width: double.infinity, width: double.infinity,
color: Theme.of(context).scaffoldBackgroundColor,
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
color: Colors.white, child: DefaultButton(
child: SecondaryButton( TranslationBase.of(context).submit,
textColor: Colors.white, (amount.isEmpty || _fileTextController.text.isEmpty || _selectedHospital == null) ? null :
label: TranslationBase.of(context).submit, () {
color: CustomColors.accentColor,
disabled: amount.isEmpty || _fileTextController.text.isEmpty || _selectedHospital == null,
onTap: () {
var mobileNum; var mobileNum;
var patientName; var patientName;
@ -320,6 +318,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
} }
}); });
}, },
disabledColor: Colors.grey,
), ),
)), )),
); );

@ -41,10 +41,7 @@ class _EyeHomePageState extends State<EyeHomePage> with SingleTickerProviderStat
super.initState(); super.initState();
_tabController = TabController(length: 2, vsync: this); _tabController = TabController(length: 2, vsync: this);
_tabController.addListener(() { _tabController.addListener(() {
setState(() {});
setState(() {
});
}); });
} }
@ -70,6 +67,7 @@ class _EyeHomePageState extends State<EyeHomePage> with SingleTickerProviderStat
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.appointmentAllHistoryResultList.doctorTitle + " " + widget.appointmentAllHistoryResultList.doctorNameObj, widget.appointmentAllHistoryResultList.doctorTitle + " " + widget.appointmentAllHistoryResultList.doctorNameObj,
widget.appointmentAllHistoryResultList.doctorID,
widget.appointmentAllHistoryResultList.doctorImageURL, widget.appointmentAllHistoryResultList.doctorImageURL,
widget.appointmentAllHistoryResultList.doctorSpeciality, widget.appointmentAllHistoryResultList.doctorSpeciality,
"", "",

@ -27,8 +27,7 @@ class InvoiceDetail extends StatefulWidget {
final DentalInvoiceDetailResponse dentalInvoiceDetailResponse; final DentalInvoiceDetailResponse dentalInvoiceDetailResponse;
final BuildContext context; final BuildContext context;
InvoiceDetail(this.doctor, this.listDentalAppointments, InvoiceDetail(this.doctor, this.listDentalAppointments, this.dentalInvoiceDetailResponse, this.context);
this.dentalInvoiceDetailResponse, this.context);
@override @override
_InvoiceDetailState createState() => _InvoiceDetailState(); _InvoiceDetailState createState() => _InvoiceDetailState();
@ -50,11 +49,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
generateInvoiceDetails(); generateInvoiceDetails();
return AppScaffold( return AppScaffold(
appBarTitle: widget.doctor.doctorTitle != null appBarTitle: widget.doctor.doctorTitle != null ? widget.doctor.doctorTitle.toString() : TranslationBase.of(context).dr + " " + widget.doctor.name.toString(),
? widget.doctor.doctorTitle.toString()
: TranslationBase.of(context).dr +
" " +
widget.doctor.name.toString(),
isShowAppBar: true, isShowAppBar: true,
isShowDecPage: false, isShowDecPage: false,
showNewAppBar: true, showNewAppBar: true,
@ -67,6 +62,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
widget.doctor.name, widget.doctor.name,
widget.doctor.doctorID,
widget.doctor.doctorImageURL, widget.doctor.doctorImageURL,
widget.doctor.speciality, widget.doctor.speciality,
widget.doctor.clinicName, widget.doctor.clinicName,
@ -76,7 +72,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
widget.doctor.nationalityFlagURL, widget.doctor.nationalityFlagURL,
widget.doctor.doctorRate, widget.doctor.doctorRate,
widget.doctor.actualDoctorRate, widget.doctor.actualDoctorRate,
widget.doctor.noOfPatientsRate, widget.doctor.noOfPatientsRate ?? 0,
projectViewModel.user.emailAddress), projectViewModel.user.emailAddress),
onTap: () { onTap: () {
sendInvoiceEmail(); sendInvoiceEmail();
@ -86,8 +82,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Card( child: Card(
elevation: 3.0, elevation: 3.0,
shape: cardRadius(12), shape: cardRadius(12),
margin: EdgeInsets.only( margin: EdgeInsets.only(left: 16, top: 8, right: 16, bottom: 16),
left: 16, top: 8, right: 16, bottom: 16),
child: Padding( child: Padding(
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: Column( child: Column(
@ -112,8 +107,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Card( child: Card(
elevation: 3.0, elevation: 3.0,
shape: cardRadius(12), shape: cardRadius(12),
margin: EdgeInsets.only( margin: EdgeInsets.only(left: 16, top: 8, right: 16, bottom: 16),
left: 16, top: 8, right: 16, bottom: 16),
child: Padding( child: Padding(
padding: const EdgeInsets.all(15.0), padding: const EdgeInsets.all(15.0),
child: Column( child: Column(
@ -121,29 +115,12 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
children: [ children: [
Container( Container(
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
child: Text(TranslationBase.of(context).cardDetail, child: Text(TranslationBase.of(context).cardDetail, style: TextStyle(color: Colors.black, letterSpacing: -0.64, fontSize: 18.0, fontWeight: FontWeight.bold)),
style: TextStyle(
color: Colors.black,
letterSpacing: -0.64,
fontSize: 18.0,
fontWeight: FontWeight.bold)),
), ),
myRichText( myRichText(TranslationBase.of(context).insuranceCompany + ": ", widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].companyName, projectViewModel.isArabic),
TranslationBase.of(context).insuranceCompany +
": ",
widget.dentalInvoiceDetailResponse
.listEInvoiceForDental[0].companyName,
projectViewModel.isArabic),
myRichText( myRichText(
TranslationBase.of(context).insuranceID + ": ", TranslationBase.of(context).insuranceID + ": ",
widget widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID != null ? widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID : "N/A",
.dentalInvoiceDetailResponse
.listEInvoiceForDental[0]
.insuranceID !=
null
? widget.dentalInvoiceDetailResponse
.listEInvoiceForDental[0].insuranceID
: "N/A",
projectViewModel.isArabic), projectViewModel.isArabic),
], ],
), ),
@ -155,8 +132,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Card( child: Card(
elevation: 3.0, elevation: 3.0,
shape: cardRadius(12), shape: cardRadius(12),
margin: EdgeInsets.only( margin: EdgeInsets.only(left: 16, top: 8, right: 16, bottom: 16),
left: 16, top: 8, right: 16, bottom: 16),
child: Padding( child: Padding(
padding: const EdgeInsets.all(15.0), padding: const EdgeInsets.all(15.0),
child: Column( child: Column(
@ -164,13 +140,7 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
children: [ children: [
Container( Container(
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
child: Text( child: Text(TranslationBase.of(context).totalBalance, style: TextStyle(letterSpacing: -0.64, color: Colors.black, fontSize: 18.0, fontWeight: FontWeight.bold)),
TranslationBase.of(context).totalBalance,
style: TextStyle(
letterSpacing: -0.64,
color: Colors.black,
fontSize: 18.0,
fontWeight: FontWeight.bold)),
), ),
Container( Container(
width: double.infinity, width: double.infinity,
@ -178,15 +148,10 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(TranslationBase.of(context).discount),
TranslationBase.of(context).discount),
), ),
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(this.totalDiscount.toString() + " " + TranslationBase.of(context).sar, isBold: true),
this.totalDiscount.toString() +
" " +
TranslationBase.of(context).sar,
isBold: true),
) )
], ],
), ),
@ -198,26 +163,13 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(TranslationBase.of(context).totalVAT.toString() +
TranslationBase.of(context)
.totalVAT
.toString() +
" (" + " (" +
widget widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].vATPercentage.toString() +
.dentalInvoiceDetailResponse
.listEInvoiceForDental[0]
.listConsultation[0]
.vATPercentage
.toString() +
"%): "), "%): "),
), ),
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(num.tryParse(this.totalVAT.toString()).toStringAsFixed(2) + " " + TranslationBase.of(context).sar, isBold: true),
num.tryParse(this.totalVAT.toString())
.toStringAsFixed(2) +
" " +
TranslationBase.of(context).sar,
isBold: true),
) )
], ],
), ),
@ -229,15 +181,10 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(TranslationBase.of(context).total),
TranslationBase.of(context).total),
), ),
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(this.subTotal.toString() + " " + TranslationBase.of(context).sar, isBold: true),
this.subTotal.toString() +
" " +
TranslationBase.of(context).sar,
isBold: true),
) )
], ],
), ),
@ -249,15 +196,10 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(TranslationBase.of(context).paid),
TranslationBase.of(context).paid),
), ),
Expanded( Expanded(
child: _getNormalText( child: _getNormalText(this.grandTotal.toString() + " " + TranslationBase.of(context).sar, isBold: true),
this.grandTotal.toString() +
" " +
TranslationBase.of(context).sar,
isBold: true),
) )
], ],
), ),
@ -284,10 +226,8 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
List<ListConsultation> listConsultations = new List(); List<ListConsultation> listConsultations = new List();
widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.forEach((item) {
.forEach((item) { var i = listConsultations.indexWhere((x) => x.procedureID == item.procedureID);
var i = listConsultations
.indexWhere((x) => x.procedureID == item.procedureID);
if (i <= -1) { if (i <= -1) {
listConsultations.add(item); listConsultations.add(item);
} }
@ -308,16 +248,10 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
GifLoaderDialogUtils.showMyDialog(widget.context); GifLoaderDialogUtils.showMyDialog(widget.context);
MyInvoicesService myInvoicesService = new MyInvoicesService(); MyInvoicesService myInvoicesService = new MyInvoicesService();
myInvoicesService myInvoicesService.sendDentalAppointmentInvoiceEmail(widget.listDentalAppointments.projectID, widget.listDentalAppointments.appointmentNo, widget.context).then((res) {
.sendDentalAppointmentInvoiceEmail(
widget.listDentalAppointments.projectID,
widget.listDentalAppointments.appointmentNo,
widget.context)
.then((res) {
GifLoaderDialogUtils.hideDialog(widget.context); GifLoaderDialogUtils.hideDialog(widget.context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast( AppToast.showSuccessToast(message: TranslationBase.of(widget.context).emailSentSuccessfully);
message: TranslationBase.of(widget.context).emailSentSuccessfully);
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
@ -342,37 +276,17 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
], ],
), ),
); );
for (int i = 0; for (int i = 0; i < widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.length; i++) {
i <
widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0]
.listConsultation.length;
i++) {
tableRow.add( tableRow.add(
TableRow(children: [ TableRow(children: [
Utils.tableColumnValue( Utils.tableColumnValue('${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].procedureName}',
'${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].procedureName}', isLast: i == (widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.length - 1)),
isLast: i == Utils.tableColumnValue('${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].quantity}',
(widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0] isLast: i == (widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.length - 1)),
.listConsultation.length - Utils.tableColumnValue('${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].price.toString() + " " + TranslationBase.of(context).sar}',
1)), isLast: i == (widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.length - 1)),
Utils.tableColumnValue( Utils.tableColumnValue('${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].total.toString() + " " + TranslationBase.of(context).sar}',
'${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].quantity}', isLast: i == (widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation.length - 1)),
isLast: i ==
(widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0]
.listConsultation.length -
1)),
Utils.tableColumnValue(
'${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].price.toString() + " " + TranslationBase.of(context).sar}',
isLast: i ==
(widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0]
.listConsultation.length -
1)),
Utils.tableColumnValue(
'${widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[i].total.toString() + " " + TranslationBase.of(context).sar}',
isLast: i ==
(widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0]
.listConsultation.length -
1)),
]), ]),
); );
} }

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -49,6 +50,7 @@ class _WeightHomePageState extends State<WeightHomePage> with SingleTickerProvid
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
appBarTitle: TranslationBase.of(context).weight, appBarTitle: TranslationBase.of(context).weight,
backgroundColor: CustomColors.appBackgroudGrey2Color,
appBarIcons: [ appBarIcons: [
IconButton( IconButton(
icon: Icon(Icons.email), icon: Icon(Icons.email),
@ -106,35 +108,22 @@ class _WeightHomePageState extends State<WeightHomePage> with SingleTickerProvid
) )
], ],
), ),
floatingActionButton: Stack( floatingActionButton: FloatingActionButton(
children: [ child: Icon(
Positioned( Icons.add,
bottom: 80, color: Colors.white,
right: projectViewModel.isArabic ? MediaQuery.of(context).size.width * .85 : 0, ),
child: InkWell( backgroundColor: CustomColors.accentColor,
onTap: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: AddWeightPage( page: AddWeightPage(
model: model, model: model,
)));
},
child: Container(
width: 55,
height: 55,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Theme.of(context).primaryColor,
),
child: Center(
child: Icon(
Icons.add,
color: Colors.white,
), ),
), ),
))) );
], },
), ),
), ),
), ),

@ -2,9 +2,11 @@ import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -20,26 +22,34 @@ class WeightMonthlyPage extends StatelessWidget {
this.model, this.model,
}) : super(key: key); }) : super(key: key);
List<List> monthlyGroup = []; List<List> monthlyGroup = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: ListView( body: ListView(
children: [ children: [
Container( Card(
width: double.maxFinite, shape: cardRadius(12),
color: Colors.white, elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: MonthLineChartCurved( child: MonthLineChartCurved(
horizontalInterval: 1.0, horizontalInterval: 1.0,
title: TranslationBase.of(context).weight, title: TranslationBase.of(context).weight,
timeSeries: model.weighMonthTimeSeriesData.isEmpty ? [TimeSeriesSales3(0, 0.0)] : model.weighMonthTimeSeriesData, timeSeries: model.weighMonthTimeSeriesData.isEmpty ? [TimeSeriesSales3(0, 0.0)] : model.weighMonthTimeSeriesData,
indexes: model.weighMonthTimeSeriesData.length ~/ 5.5, indexes: model.weighMonthTimeSeriesData.length ~/ 5.5,
)),
SizedBox(
height: 12,
), ),
),
Card(
shape: cardRadius(12),
elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts(TranslationBase.of(context).details), child: Texts(TranslationBase.of(context).details),
@ -78,6 +88,10 @@ class WeightMonthlyPage extends StatelessWidget {
) )
], ],
), ),
),
mHeight(80),
],
),
); );
} }

@ -1,9 +1,11 @@
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -25,21 +27,35 @@ class WeightWeeklyPage extends StatelessWidget {
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: ListView( body: ListView(
children: [ children: [
Container( // Container(
margin: EdgeInsets.only(top: 12, left: 8, right: 8), // margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white, // color: Colors.white,
// child: LineChartCurved(
// horizontalInterval: 1.0,
// title: TranslationBase.of(context).weight,
// timeSeries: model.weightWeekTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesData,
// indexes: model.weightWeekTimeSeriesData.length ~/ 5.5 ?? 0,
// ),
// ),
Card(
shape: cardRadius(12),
elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: LineChartCurved( child: LineChartCurved(
horizontalInterval: 1.0,
title: TranslationBase.of(context).weight, title: TranslationBase.of(context).weight,
timeSeries: model.weightWeekTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesData, timeSeries: model.weightWeekTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesData,
indexes: model.weightWeekTimeSeriesData.length ~/ 5.5 ?? 0, indexes: model.weightWeekTimeSeriesData.length ~/ 5.5 ?? 0,
), ),
), ),
SizedBox( Card(
height: 12, shape: cardRadius(12),
), elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: Column(crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts(TranslationBase.of(context).details), child: Texts(TranslationBase.of(context).details),
@ -67,6 +83,10 @@ class WeightWeeklyPage extends StatelessWidget {
) )
], ],
), ),
),
mHeight(80),
],
),
); );
} }
@ -109,7 +129,11 @@ class WeightWeeklyPage extends StatelessWidget {
model: model, model: model,
), ),
), ),
); ).then((value) {
if (model.weekWeightMeasurementResult.isEmpty) {
model.weightWeekTimeSeriesData.clear();
}
});
}, },
child: Container( child: Container(
// height: 70, // height: 70,

@ -2,9 +2,11 @@ import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -26,21 +28,26 @@ class WeightYearPage extends StatelessWidget {
groupData(); groupData();
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: ListView( body: ListView(
children: [ children: [
Container( Card(
width: double.maxFinite, shape: cardRadius(12),
color: Colors.white, elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: LineChartCurved( child: LineChartCurved(
horizontalInterval: 2.0, horizontalInterval: 2.0,
title: TranslationBase.of(context).weight, title: TranslationBase.of(context).weight,
timeSeries: model.weightYearTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesData, timeSeries: model.weightYearTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesData,
indexes: model.weightYearTimeSeriesData.length ~/ 5.5 ?? "", indexes: model.weightYearTimeSeriesData.length ~/ 5.5 ?? "",
)), )),
SizedBox(
height: 12, Card(
), shape: cardRadius(12),
Padding( elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,children: [ Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts(TranslationBase.of(context).details), child: Texts(TranslationBase.of(context).details),
), ),
@ -74,7 +81,10 @@ class WeightYearPage extends StatelessWidget {
]), ]),
], ],
), ),
) )],
),
),
mHeight(80),
], ],
), ),
); );

@ -111,7 +111,12 @@ class BloodPressureWeeklyPage extends StatelessWidget {
measureTimeSelectedType: diabtec.measuredArmDesc, measureTimeSelectedType: diabtec.measuredArmDesc,
), ),
), ),
); ).then((value) {
if(model.weekDiabtecPatientResult.isEmpty) {
model.weightWeekTimeSeriesDataTop.clear();
model.weightWeekTimeSeriesDataLow.clear();
}
});
}, },
child: Container( child: Container(
// height: 70, // height: 70,

@ -116,7 +116,11 @@ class BloodSugarWeeklyPage extends StatelessWidget {
bloodSugarViewMode: bloodSugarViewMode, bloodSugarViewMode: bloodSugarViewMode,
), ),
), ),
); ).then((value) {
if(bloodSugarViewMode.weekDiabtecPatientResult.isEmpty) {
timeSeriesData.clear();
}
});
}, },
child: Container( child: Container(
// height: 70, // height: 70,

@ -36,7 +36,7 @@ class LineChartCurved extends StatelessWidget {
), ),
Text( Text(
title, title,
style: TextStyle(color: Colors.black, fontSize: 15, letterSpacing: 2), style: TextStyle(color: Colors.black, fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
SizedBox( SizedBox(
@ -44,7 +44,7 @@ class LineChartCurved extends StatelessWidget {
), ),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.only(right: 18.0, left: 16.0, top: 15, bottom: 15), padding: const EdgeInsets.only(right: 18.0, left: 16.0),
child: LineChart( child: LineChart(
sampleData1(context), sampleData1(context),
swapAnimationDuration: const Duration(milliseconds: 250), swapAnimationDuration: const Duration(milliseconds: 250),
@ -80,6 +80,83 @@ class LineChartCurved extends StatelessWidget {
} }
} }
} }
// LineChartData sampleData1(context) {
// return LineChartData(
// lineTouchData: LineTouchData(
// touchTooltipData: LineTouchTooltipData(
// tooltipBgColor: Colors.white,
// ),
// touchCallback: (LineTouchResponse touchResponse) {},
// handleBuiltInTouches: true,
// ),
// gridData: FlGridData(show: true, drawVerticalLine: true, drawHorizontalLine: true, horizontalInterval: 14, verticalInterval: 14),
// titlesData: FlTitlesData(
// bottomTitles: SideTitles(
// showTitles: true,
// getTextStyles: (value) => const TextStyle(
// color: Colors.black,
// fontSize: 10,
// ),
// // rotateAngle: 90,
// //rotateAngle:-65,
// margin: 22,
// getTitles: (value) {
// if (timeSeries.length < 15) {
// if (timeSeries.length > value.toInt()) {
// return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
// } else
// return '';
// } else {
// if (value.toInt() == 0) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
// if (value.toInt() == timeSeries.length - 1) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
// if (xAxixs.contains(value.toInt())) {
// return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
// }
// }
// return '';
// },
// ),
// leftTitles: SideTitles(
// showTitles: true,
// // interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
// interval: 3,
// getTextStyles: (value) => const TextStyle(
// color: Colors.black,
// fontWeight: FontWeight.bold,
// fontSize: 10,
// ),
//
// margin: 12,
// ),
// ),
// borderData: FlBorderData(
// show: true,
// border: const Border(
// bottom: BorderSide(
// color: Colors.black,
// width: 0.5,
// ),
// left: BorderSide(
// color: Colors.black,
// ),
// right: BorderSide(
// color: Colors.black,
// ),
// top: BorderSide(
// color: Colors.transparent,
// ),
// ),
// ),
// minX: 0,
// maxX: (timeSeries.length - 1).toDouble(),
// maxY: getMaxY() + 0.3,
// minY: 0,
// //getMinY(),
// lineBarsData: getData(context),
// );
// }
LineChartData sampleData1(context) { LineChartData sampleData1(context) {
return LineChartData( return LineChartData(
lineTouchData: LineTouchData( lineTouchData: LineTouchData(
@ -89,8 +166,7 @@ class LineChartCurved extends StatelessWidget {
touchCallback: (LineTouchResponse touchResponse) {}, touchCallback: (LineTouchResponse touchResponse) {},
handleBuiltInTouches: true, handleBuiltInTouches: true,
), ),
gridData: FlGridData( gridData: FlGridData(show: true, drawVerticalLine: true, drawHorizontalLine: true, horizontalInterval: 14, verticalInterval: 14),
horizontalInterval: horizontalInterval, show: true, drawVerticalLine: true, drawHorizontalLine: true),
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
@ -98,8 +174,7 @@ class LineChartCurved extends StatelessWidget {
color: Colors.black, color: Colors.black,
fontSize: 10, fontSize: 10,
), ),
// rotateAngle: 90, rotateAngle: -65,
//rotateAngle:-65,
margin: 22, margin: 22,
getTitles: (value) { getTitles: (value) {
if (timeSeries.length < 15) { if (timeSeries.length < 15) {
@ -108,10 +183,8 @@ class LineChartCurved extends StatelessWidget {
} else } else
return ''; return '';
} else { } else {
if (value.toInt() == 0) if (value.toInt() == 0) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; if (value.toInt() == timeSeries.length - 1) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (value.toInt() == timeSeries.length - 1)
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (xAxixs.contains(value.toInt())) { if (xAxixs.contains(value.toInt())) {
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
} }
@ -121,13 +194,21 @@ class LineChartCurved extends StatelessWidget {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
getTextStyles: (value) => const TextStyle( getTextStyles: (value) => const TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), ),
interval: 3.0,
// interval: getMaxY() - getMinY() <= 500
// ? getMaxY() - getMinY() <= 50
// ? 10
// : 10
// : getMaxY() - getMinY() <= 1000
// ? 100
// : getMaxY() - getMinY() >= 10000
// ? 5000
// : 200,
margin: 12, margin: 12,
), ),
), ),
@ -152,11 +233,11 @@ class LineChartCurved extends StatelessWidget {
minX: 0, minX: 0,
maxX: (timeSeries.length - 1).toDouble(), maxX: (timeSeries.length - 1).toDouble(),
maxY: getMaxY() + 0.3, maxY: getMaxY() + 0.3,
minY: 0,//getMinY(), minY: 0,
//getMinY(),
lineBarsData: getData(context), lineBarsData: getData(context),
); );
} }
double getMaxY() { double getMaxY() {
double max = 0; double max = 0;
timeSeries.forEach((element) { timeSeries.forEach((element) {
@ -180,9 +261,6 @@ class LineChartCurved extends StatelessWidget {
List<LineChartBarData> getData(context) { List<LineChartBarData> getData(context) {
List<FlSpot> spots = List(); List<FlSpot> spots = List();
if (timeSeries.length == 0) {
spots.add(FlSpot(0, 0));
}
for (int index = 0; index < timeSeries.length; index++) { for (int index = 0; index < timeSeries.length; index++) {
spots.add(FlSpot(index.toDouble(), timeSeries[index].sales)); spots.add(FlSpot(index.toDouble(), timeSeries[index].sales));
} }
@ -191,9 +269,8 @@ class LineChartCurved extends StatelessWidget {
spots: spots, spots: spots,
isCurved: true, isCurved: true,
colors: [secondaryColor], colors: [secondaryColor],
barWidth: 5, barWidth: 1.5,
isStrokeCapRound: true, isStrokeCapRound: true,
curveSmoothness: 0.12,
dotData: FlDotData( dotData: FlDotData(
show: false, show: false,
), ),

@ -36,7 +36,7 @@ class MonthLineChartCurved extends StatelessWidget {
), ),
Text( Text(
title, title,
style: TextStyle(color: Colors.black, fontSize: 15, letterSpacing: 2), style: TextStyle(color: Colors.black, fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
SizedBox( SizedBox(
@ -91,7 +91,12 @@ class MonthLineChartCurved extends StatelessWidget {
handleBuiltInTouches: true, handleBuiltInTouches: true,
), ),
gridData: FlGridData( gridData: FlGridData(
horizontalInterval: horizontalInterval, show: true, drawVerticalLine: true, drawHorizontalLine: true), horizontalInterval: 12,
show: true,
drawVerticalLine: true,
drawHorizontalLine: true,
verticalInterval: 12,
),
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
@ -111,7 +116,11 @@ class MonthLineChartCurved extends StatelessWidget {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), ),
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, interval: getMaxY() - getMinY() <= 500
? 50
: getMaxY() - getMinY() <= 1000
? 100
: 200,
// getTitles: (value) { // getTitles: (value) {
// if (value.toInt() == 0) // if (value.toInt() == 0)
@ -184,7 +193,7 @@ class MonthLineChartCurved extends StatelessWidget {
spots: spots, spots: spots,
isCurved: true, isCurved: true,
colors: [secondaryColor], colors: [secondaryColor],
barWidth: 5, barWidth: 1.5,
isStrokeCapRound: true, isStrokeCapRound: true,
curveSmoothness: 0.0, curveSmoothness: 0.0,
dotData: FlDotData( dotData: FlDotData(

@ -7,9 +7,12 @@ import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/add_new_address_Request_Model.dart'; import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/add_new_address_Request_Model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/PrescriptionDeliveryViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/PrescriptionDeliveryViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/NewCMC/cmc_location_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/location_page.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/NewHomeHealthCare/location_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/select_location_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/select_location_dialog.dart';
@ -28,20 +31,13 @@ class PrescriptionDeliveryAddressPage extends StatefulWidget {
final List<PrescriptionReport> prescriptionReportList; final List<PrescriptionReport> prescriptionReportList;
final List<PrescriptionReportEnh> prescriptionReportEnhList; final List<PrescriptionReportEnh> prescriptionReportEnhList;
const PrescriptionDeliveryAddressPage( const PrescriptionDeliveryAddressPage({Key key, this.prescriptions, this.prescriptionReportList, this.prescriptionReportEnhList}) : super(key: key);
{Key key,
this.prescriptions,
this.prescriptionReportList,
this.prescriptionReportEnhList})
: super(key: key);
@override @override
_PrescriptionDeliveryAddressPageState createState() => _PrescriptionDeliveryAddressPageState createState() => _PrescriptionDeliveryAddressPageState();
_PrescriptionDeliveryAddressPageState();
} }
class _PrescriptionDeliveryAddressPageState class _PrescriptionDeliveryAddressPageState extends State<PrescriptionDeliveryAddressPage> {
extends State<PrescriptionDeliveryAddressPage> {
AddressInfo _selectedAddress; AddressInfo _selectedAddress;
Completer<GoogleMapController> _controller = Completer(); Completer<GoogleMapController> _controller = Completer();
@ -82,130 +78,57 @@ class _PrescriptionDeliveryAddressPageState
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).shippingAddresss, appBarTitle: TranslationBase.of(context).shippingAddresss,
baseViewModel: model, baseViewModel: model,
showNewAppBarTitle: true,
showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: Container( body: Container(
height: MediaQuery.of(context).size.height * 0.65, child: Column(
children: [
Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
SizedBox( Card(
height: 8, margin: EdgeInsets.only(left: 12, right: 12, bottom: 12, top: 12),
), shape: cardRadius(12),
InkWell( elevation: 3,
onTap: () {
confirmSelectLocationDialog(model.addressesList);
},
child: Container( child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15), child: InkWell(
height: 50, onTap: () => confirmSelectLocationDialog(model.addressesList),
child: Container(
padding: EdgeInsets.all(8),
width: double.infinity,
// height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(10),
borderRadius: BorderRadius.circular(7),
color: Colors.white, color: Colors.white,
shape: BoxShape.rectangle,
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: [
Expanded( Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
child: Text( child: Text(
getAddressName(), getAddressName(),
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.45,
), ),
margin: EdgeInsets.only(left: 10, right: 10),
), ),
), ),
), Icon(Icons.arrow_drop_down)
Icon(
Icons.arrow_drop_down,
size: 22,
color: Colors.grey,
)
], ],
), ),
), ),
), ),
SizedBox( height: 50,
height: 10, width: double.infinity,
),
_selectedAddress == null
? Container(
child: Image.asset(
projectViewModel.isArabic
? 'assets/images/pharmacy/shipping_image_ar.png'
: 'assets/images/pharmacy/shipping_image.png',
height: 300,
),
)
: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey)),
height: 200,
child: GoogleMap(
mapType: MapType.normal,
markers: markers,
initialCameraPosition: _kGooglePlex,
onMapCreated:
(GoogleMapController controller) {
_controller.complete(controller);
},
),
),
),
SizedBox(
height: 10,
),
Texts(
TranslationBase.of(context).shippingAddresss),
SizedBox(
height: 10,
),
Texts(
'${model.user.firstName} ${model.user.lastName}'),
SizedBox(
height: 10,
),
Texts(_selectedAddress.address1),
SizedBox(
height: 10,
),
Texts(_selectedAddress.address2),
SizedBox(
height: 10,
),
Texts(_selectedAddress.city +
" " +
_selectedAddress.country),
],
),
)
],
),
), ),
), ),
bottomSheet: Container( InkWell(
width: double.infinity, onTap: () async {
height: MediaQuery.of(context).size.height * 0.25,
color: Colors.grey[100],
child: Column(
children: <Widget>[
Divider(),
Container(
width: MediaQuery.of(context).size.width * 0.8,
child: Button(
label:
TranslationBase.of(context).addNewAddress.toUpperCase(),
onTap: () {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
@ -214,8 +137,7 @@ class _PrescriptionDeliveryAddressPageState
longitude: longitude, longitude: longitude,
)), )),
).then((value) { ).then((value) {
if (value != null && if (value != null && value is AddNewAddressRequestModel) {
value is AddNewAddressRequestModel) {
setState(() { setState(() {
_selectedAddress = AddressInfo( _selectedAddress = AddressInfo(
id: value.customer.id.toString(), id: value.customer.id.toString(),
@ -236,7 +158,6 @@ class _PrescriptionDeliveryAddressPageState
province: value.customer.addresses[0].province, province: value.customer.addresses[0].province,
stateProvinceId: value.customer.addresses[0].stateProvinceId, stateProvinceId: value.customer.addresses[0].stateProvinceId,
zipPostalCode: value.customer.addresses[0].zipPostalCode, zipPostalCode: value.customer.addresses[0].zipPostalCode,
); );
List latLongArr = _selectedAddress.latLong.split(','); List latLongArr = _selectedAddress.latLong.split(',');
@ -259,17 +180,125 @@ class _PrescriptionDeliveryAddressPageState
} }
}); });
}, },
child: Padding(
padding: EdgeInsets.only(left: 12, right: 12, bottom: 16, top: 8),
child: Row(
children: [
Icon(Icons.add_circle_outline_sharp),
mWidth(12),
Text(
TranslationBase.of(context).addNewAddress,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
],
), ),
), ),
),
if (_selectedAddress != null)
Card(
shape: cardRadius(12),
color: Colors.white,
margin: EdgeInsets.all(12),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
TranslationBase.of(context).selectAddress + ":",
fontSize: 12,
color: CustomColors.grey,
fontWeight: FontWeight.w600,
),
mHeight(12),
Container( Container(
width: MediaQuery.of(context).size.width * 0.8, height: 175,
decoration: containerColorRadiusBorder(Colors.white, 12, Colors.grey),
clipBehavior: Clip.antiAlias,
child: Card(
shape: cardRadius(12),
clipBehavior: Clip.antiAlias,
elevation: 0,
margin: const EdgeInsets.all(0),
// child: GoogleMap(
// mapType: MapType.normal,
// markers: markers,
// initialCameraPosition: _kGooglePlex,
// onMapCreated: (GoogleMapController controller) {
// _controller.complete(controller);
// },
// ),
child: Image.network(
"https://maps.googleapis.com/maps/api/staticmap?center=" +
_kGooglePlex.target.latitude.toString() +
"," +
_kGooglePlex.target.longitude.toString() +
"&zoom=16&size=600x300&maptype=roadmap&markers=color:red%7C" +
_kGooglePlex.target.latitude.toString() +
"," +
_kGooglePlex.target.longitude.toString() +
"&key=AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8",
width: double.infinity,
height: double.infinity,
fit: BoxFit.cover,
),
),
),
SizedBox(
height: 10,
),
Texts(
TranslationBase.of(context).shippingAddresss + ":",
fontSize: 12,
color: CustomColors.grey,
fontWeight: FontWeight.w600,
),
SizedBox(
height: 2,
),
Texts(
'${model.user.firstName} ${model.user.lastName}',
fontSize: 12,
fontWeight: FontWeight.w600,
),
Texts(
_selectedAddress.address1,
fontSize: 12,
fontWeight: FontWeight.w600,
),
Texts(
_selectedAddress.address2,
fontSize: 12,
fontWeight: FontWeight.w600,
),
Texts(
_selectedAddress.city + " " + _selectedAddress.country,
fontSize: 12,
fontWeight: FontWeight.w600,
),
],
),
),
)
],
),
),
),
Card(
shape: cardRadius(0),
margin: EdgeInsets.zero,
elevation: 20,
child: Container(
width: double.infinity,
padding: EdgeInsets.only(left: 16, right: 16, top: 16),
child: Button( child: Button(
label: label: TranslationBase.of(context).continues.toUpperCase(),
TranslationBase.of(context).continues.toUpperCase(),
disabled: _selectedAddress == null, disabled: _selectedAddress == null,
backgroundColor: _selectedAddress == null backgroundColor: _selectedAddress == null ? CustomColors.grey2 : CustomColors.accentColor,
? Colors.green[300]
: Colors.green[700],
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
@ -277,20 +306,21 @@ class _PrescriptionDeliveryAddressPageState
page: PrescriptionOrderOverview( page: PrescriptionOrderOverview(
latitude: latitude, latitude: latitude,
longitude: longitude, longitude: longitude,
prescriptionReportEnhList: prescriptionReportEnhList: widget.prescriptionReportEnhList,
widget.prescriptionReportEnhList, prescriptionReportList: widget.prescriptionReportList,
prescriptionReportList:
widget.prescriptionReportList,
prescriptions: widget.prescriptions, prescriptions: widget.prescriptions,
selectedAddress: _selectedAddress, selectedAddress: _selectedAddress,
), ),
), ),
); );
}, },
)) ),
),
),
], ],
), ),
)), ),
),
); );
} }

@ -5,8 +5,10 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_repor
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart'; import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer_addresses_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/PrescriptionDeliveryViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/PrescriptionDeliveryViewModel.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
@ -21,6 +23,7 @@ class PrescriptionOrderOverview extends StatelessWidget {
final AddressInfo selectedAddress; final AddressInfo selectedAddress;
final double latitude; final double latitude;
final double longitude; final double longitude;
PrescriptionOrderOverview({Key key, this.prescriptions, this.prescriptionReportList, this.prescriptionReportEnhList, this.selectedAddress, this.latitude, this.longitude}); PrescriptionOrderOverview({Key key, this.prescriptions, this.prescriptionReportList, this.prescriptionReportEnhList, this.selectedAddress, this.latitude, this.longitude});
@override @override
@ -30,24 +33,32 @@ class PrescriptionOrderOverview extends StatelessWidget {
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).orderOverview, appBarTitle: TranslationBase.of(context).orderOverview,
baseViewModel: model, baseViewModel: model,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: Container( body: Container(
height: MediaQuery.of(context).size.height * 0.8, height: double.infinity,
child: Column(
children: [
Expanded(
child: Column( child: Column(
children: [ children: [
if (!prescriptions.isInOutPatient) if (!prescriptions.isInOutPatient)
Card(
margin: EdgeInsets.all(12),
shape: cardRadius(12),
clipBehavior: Clip.antiAlias,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
...List.generate( ...List.generate(
prescriptionReportList.length, prescriptionReportList.length,
(index) => Container( (index) => Card(
width: double.infinity, margin: EdgeInsets.all(0.0),
margin: EdgeInsets.only(top: 10, left: 10, right: 10),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.all( shape: cardRadius(0),
Radius.circular(10.0), elevation: 0,
),
border: Border.all(color: Colors.grey[200], width: 0.5),
),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
ClipRRect( ClipRRect(
@ -66,37 +77,53 @@ class PrescriptionOrderOverview extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Texts(prescriptionReportList[index].itemDescription.isNotEmpty
prescriptionReportList[index].itemDescription.isNotEmpty ? prescriptionReportList[index].itemDescription : prescriptionReportList[index].itemDescriptionN)), ? prescriptionReportList[index].itemDescription
: prescriptionReportList[index].itemDescriptionN)),
)), )),
Icon(
Icons.arrow_forward_ios,
size: 18,
color: Colors.grey[500],
)
], ],
), ),
)) ))
],
),
),
)
else else
Card(
margin: EdgeInsets.all(12),
shape: cardRadius(12),
clipBehavior: Clip.antiAlias,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...List.generate( ...List.generate(
prescriptionReportEnhList.length, prescriptionReportEnhList.length,
(index) => Container( (index) => Card(
margin: EdgeInsets.all(8.0), margin: EdgeInsets.all(0.0),
color: Colors.white, color: Colors.white,
shape: cardRadius(0),
elevation: 0,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
ClipRRect( Container(
borderRadius: BorderRadius.all(Radius.circular(5)), margin: EdgeInsets.only(bottom: 10.0),
decoration: BoxDecoration(
border: Border.all(width: 1.0, color: Color(0xffEBEBEB)),
borderRadius: BorderRadius.all(Radius.circular(30.0)),
),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(30)),
child: Image.network( child: Image.network(
prescriptionReportEnhList[index].imageSRCUrl, prescriptionReportEnhList[index].imageSRCUrl,
fit: BoxFit.cover, fit: BoxFit.cover,
width: 60, width: 48,
height: 70, height: 48,
), ),
), ),
SizedBox(
width: 10,
), ),
SizedBox(width: 14),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
@ -108,11 +135,6 @@ class PrescriptionOrderOverview extends StatelessWidget {
), ),
), ),
), ),
Icon(
Icons.arrow_forward_ios,
size: 18,
color: Colors.grey[500],
)
], ],
), ),
), ),
@ -120,20 +142,20 @@ class PrescriptionOrderOverview extends StatelessWidget {
], ],
), ),
), ),
bottomSheet: Container(
width: double.infinity,
height: MediaQuery.of(context).size.height * 0.15,
color: Colors.grey[100],
child: Column(
children: <Widget>[
SizedBox(
height: 12,
), ),
Container( ],
width: MediaQuery.of(context).size.width * 0.8, ),
),
Card(
shape: cardRadius(0),
margin: EdgeInsets.zero,
elevation: 20,
child: Container(
width: double.infinity,
margin: EdgeInsets.all(12),
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).submit.toUpperCase(), label: TranslationBase.of(context).submit.toUpperCase(),
color: Colors.green[800], color: CustomColors.accentColor,
onTap: () async { onTap: () async {
showDialog( showDialog(
context: context, context: context,
@ -166,7 +188,8 @@ class PrescriptionOrderOverview extends StatelessWidget {
), ),
); );
}, },
)) )),
)
], ],
), ),
), ),

@ -6,6 +6,7 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:giffy_dialog/giffy_dialog.dart';
import 'package:maps_launcher/maps_launcher.dart'; import 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@ -53,9 +54,7 @@ class PharmacyForPrescriptionsPage extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts(prescriptionReport.itemDescription.isNotEmpty child: Texts(prescriptionReport.itemDescription.isNotEmpty ? prescriptionReport.itemDescription : prescriptionReport.itemDescriptionN ?? ''),
? prescriptionReport.itemDescription
: prescriptionReport.itemDescriptionN ?? ''),
), ),
), ),
) )
@ -68,70 +67,172 @@ class PharmacyForPrescriptionsPage extends StatelessWidget {
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
itemBuilder: (context, index) => Container( itemBuilder: (context, index) => Container(
width: double.infinity, margin: EdgeInsets.all(12.0),
margin: EdgeInsets.only(top: 10, left: 10, right: 10), padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),
border: Border.all(color: Colors.grey[200], width: 0.5), boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
), ),
],
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
ClipRRect( InkWell(
borderRadius: BorderRadius.all(Radius.circular(5)), onTap: () {
child: Image.network( showDialog(
model.pharmacyPrescriptionsList[index].projectImageURL, context: context,
builder: (_) => AssetGiffyDialog(
title: Text(
model.pharmacyPrescriptionsList[index].locationDescription,
style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.w600),
),
image: Image.network(
model.pharmacyPrescriptionsList[index].projectImageURL.toString(),
fit: BoxFit.cover, fit: BoxFit.cover,
width: 60,
height: 70,
), ),
buttonCancelText: Text(TranslationBase.of(context).cancel),
buttonCancelColor: Colors.grey,
onlyCancelButton: true,
), ),
Expanded( );
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(model.pharmacyPrescriptionsList[index].locationDescription),
SizedBox(
height: 5,
),
Texts(model.pharmacyPrescriptionsList[index].cityName),
],
),
),
),
InkWell(
onTap: () {
MapsLauncher.launchCoordinates(double.parse(model.pharmacyPrescriptionsList[index].latitude), double.parse(model.pharmacyPrescriptionsList[index].longitude));
}, },
child: Icon( child: ClipRRect(
Icons.pin_drop, borderRadius: BorderRadius.circular(12),
size: 18, child: Image.network(
color: Colors.red[900], model.pharmacyPrescriptionsList[index].projectImageURL.toString(),
width: 48,
height: 48,
fit: BoxFit.cover,
), ),
), ),
SizedBox(
width: 15,
), ),
InkWell( Expanded(
onTap: Feedback.wrapForTap(() { child: Padding(
launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}"); padding: EdgeInsets.only(left: 12, right: 12),
}, context), child: Text(
child: Container( model.pharmacyPrescriptionsList[index].locationDescription?.trim().toString() +
child: Icon( "\n" +
Icons.call, model.pharmacyPrescriptionsList[index].cityName.trim().toString() +
size: 18, "\n" +
color: Colors.red[900], model.pharmacyPrescriptionsList[index].distanceInKilometers.toString() +
" " +
TranslationBase.of(context).km_ ??
"",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
),
), //model.cOCItemList[index].cOCTitl
IconButton(
icon: Icon(
Icons.location_on,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
// setState(() {
MapsLauncher.launchCoordinates(double.parse(model.pharmacyPrescriptionsList[index].latitude), double.parse(model.pharmacyPrescriptionsList[index].longitude),
model.pharmacyPrescriptionsList[index].locationDescription);
// });
},
), ),
IconButton(
icon: Icon(
Icons.phone,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
// setState(() {
launch("tel://" + model.pharmacyPrescriptionsList[index].phoneNumber);
// });
},
), ),
)
], ],
), ),
), ),
// Container(
// width: double.infinity,
// margin: EdgeInsets.only(top: 10, left: 10, right: 10),
// padding: EdgeInsets.all(8.0),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.all(
// Radius.circular(10.0),
// ),
// border: Border.all(color: Colors.grey[200], width: 0.5),
// ),
// child: Row(
// children: <Widget>[
// ClipRRect(
// borderRadius: BorderRadius.all(Radius.circular(5)),
// child: Image.network(
// model.pharmacyPrescriptionsList[index].projectImageURL,
// fit: BoxFit.cover,
// width: 60,
// height: 70,
// ),
// ),
// Expanded(
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// Texts(model.pharmacyPrescriptionsList[index].locationDescription),
// SizedBox(
// height: 5,
// ),
// Texts(model.pharmacyPrescriptionsList[index].cityName),
// ],
// ),
// ),
// ),
// InkWell(
// onTap: () {
// MapsLauncher.launchCoordinates(double.parse(model.pharmacyPrescriptionsList[index].latitude), double.parse(model.pharmacyPrescriptionsList[index].longitude));
// },
// child: Icon(
// Icons.pin_drop,
// size: 18,
// color: Colors.red[900],
// ),
// ),
// SizedBox(
// width: 15,
// ),
// InkWell(
// onTap: Feedback.wrapForTap(() {
// launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}");
// }, context),
// child: Container(
// child: Icon(
// Icons.call,
// size: 18,
// color: Colors.red[900],
// ),
// ),
// )
// ],
// ),
// ),
itemCount: model.pharmacyPrescriptionsList.length, itemCount: model.pharmacyPrescriptionsList.length,
), ),
) )

@ -38,6 +38,7 @@ class PrescriptionDetailsPage extends StatelessWidget {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
prescriptions.doctorName, prescriptions.doctorName,
prescriptions.doctorID,
prescriptions.doctorImageURL, prescriptions.doctorImageURL,
prescriptions.speciality, prescriptions.speciality,
"", "",
@ -180,6 +181,32 @@ class PrescriptionDetailsPage extends StatelessWidget {
}, },
); );
return; return;
showGeneralDialog(
barrierColor: Colors.black.withOpacity(0.5),
transitionBuilder: (context, a1, a2, widget) {
final curvedValue = Curves.easeInOutBack.transform(a1.value) - 1.0;
return Transform(
transform: Matrix4.translationValues(0.0, curvedValue * 200, 0.0),
child: Opacity(
opacity: a1.value,
child: PrescriptionReminderDialog(
eventId: prescriptionReport.itemID.toString(),
title: "${prescriptionReport.itemDescriptionN} Prescription Reminder",
description: "${prescriptionReport.itemDescriptionN} ${prescriptionReport.frequencyN} ${prescriptionReport.routeN} ",
startDate: startDate,
endDate: endDate,
location: prescriptionReport.remarks,
days: 1,
),
),
);
},
transitionDuration: Duration(milliseconds: 500),
barrierDismissible: true,
barrierLabel: '',
context: context,
pageBuilder: (context, animation1, animation2) {});
}, },
iconData: Icons.notifications_active, iconData: Icons.notifications_active,
color: Color(0xffEAEAEA), color: Color(0xffEAEAEA),

@ -49,6 +49,7 @@ class PrescriptionItemsPage extends StatelessWidget {
DoctorHeader( DoctorHeader(
headerModel: HeaderModel( headerModel: HeaderModel(
prescriptions.doctorName, prescriptions.doctorName,
prescriptions.doctorID,
prescriptions.doctorImageURL, prescriptions.doctorImageURL,
prescriptions.speciality, prescriptions.speciality,
"", "",
@ -186,7 +187,7 @@ class PrescriptionItemsPage extends StatelessWidget {
), ),
), ),
Icon( Icon(
Icons.arrow_forward_ios, Icons.arrow_forward,
size: 16, size: 16,
), ),
], ],
@ -306,7 +307,7 @@ class PrescriptionItemsPage extends StatelessWidget {
), ),
), ),
Icon( Icon(
Icons.arrow_forward_ios, Icons.arrow_forward,
size: 16, size: 16,
), ),
], ],

@ -109,11 +109,11 @@ class PrescriptionsHistoryDetailsPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Text( Text(
DateUtil.formatDateToDate(prescriptionsOrder.createdOn, projectViewModel.isArabic), DateUtil.getDayMonthYearDateFormatted(prescriptionsOrder.createdOn),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
), ),
Text( Text(
DateUtil.formatDateToTime(prescriptionsOrder.createdOn), DateUtil.formatDateToTimeLang(prescriptionsOrder.createdOn, false),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
), ),
], ],

@ -119,11 +119,11 @@ class PrescriptionsHistoryPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Text( Text(
DateUtil.formatDateToDate(prescriptionsViewModel.prescriptionsHistory[index].createdOn, projectViewModel.isArabic), DateUtil.getDayMonthYearDateFormatted(prescriptionsViewModel.prescriptionsHistory[index].createdOn),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
), ),
Text( Text(
DateUtil.formatDateToTime(prescriptionsViewModel.prescriptionsHistory[index].createdOn), DateUtil.formatDateToTimeLang(prescriptionsViewModel.prescriptionsHistory[index].createdOn, false),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
), ),
], ],
@ -133,7 +133,7 @@ class PrescriptionsHistoryPage extends StatelessWidget {
), ),
), ),
Icon( Icon(
Icons.arrow_forward_ios, Icons.arrow_forward,
size: 16, size: 16,
), ),
mWidth(6), mWidth(6),

@ -1,5 +1,6 @@
import 'dart:ui'; import 'dart:ui';
import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
@ -26,7 +27,7 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage> with Sing
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_tabController = TabController(length: 2, vsync: this); _tabController = TabController(length: 3, vsync: this);
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-prescriptions/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-prescriptions/ar/0.png')); imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-prescriptions/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-prescriptions/ar/0.png'));
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
@ -74,7 +75,8 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage> with Sing
letterSpacing: -0.48, letterSpacing: -0.48,
), ),
tabs: [ tabs: [
Text(TranslationBase.of(context).prescriptions, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins')), Text(TranslationBase.of(context).byClinic, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins')),
Text(TranslationBase.of(context).byHospital, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins')),
Text(TranslationBase.of(context).orderLog, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins')), Text(TranslationBase.of(context).orderLog, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins')),
], ],
), ),
@ -84,9 +86,19 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage> with Sing
controller: _tabController, controller: _tabController,
children: <Widget>[ children: <Widget>[
PrescriptionsPage( PrescriptionsPage(
FilterType.Clinic,
prescriptionsViewModel: model, prescriptionsViewModel: model,
showOrderLog: () async { showOrderLog: () async {
_tabController.animateTo(1); _tabController.animateTo(2);
await model.getPrescriptionsOrders(showLoading: true);
setState(() {});
},
),
PrescriptionsPage(
FilterType.Hospital,
prescriptionsViewModel: model,
showOrderLog: () async {
_tabController.animateTo(2);
await model.getPrescriptionsOrders(showLoading: true); await model.getPrescriptionsOrders(showLoading: true);
setState(() {}); setState(() {});
}, },

@ -16,33 +16,17 @@ import 'package:provider/provider.dart';
class PrescriptionsPage extends StatelessWidget { class PrescriptionsPage extends StatelessWidget {
final VoidCallback showOrderLog; final VoidCallback showOrderLog;
final FilterType filterType;
final PrescriptionsViewModel prescriptionsViewModel; final PrescriptionsViewModel prescriptionsViewModel;
const PrescriptionsPage({Key key, this.prescriptionsViewModel, this.showOrderLog}) : super(key: key); const PrescriptionsPage(this.filterType, {Key key, this.prescriptionsViewModel, this.showOrderLog}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
baseViewModel: prescriptionsViewModel, baseViewModel: prescriptionsViewModel,
body: FractionallySizedBox( body: ListView.separated(
widthFactor: 1.0,
child: ListView(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
children: <Widget>[
Row(
children: [
MyTabView(TranslationBase.of(context).byClinic, FilterType.Clinic, prescriptionsViewModel.filterType, () {
prescriptionsViewModel.setFilterType(FilterType.Clinic);
}),
MyTabView(TranslationBase.of(context).byHospital, FilterType.Hospital, prescriptionsViewModel.filterType, () {
prescriptionsViewModel.setFilterType(FilterType.Hospital);
}),
],
),
ListView.separated(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.only(top: 12), padding: EdgeInsets.only(top: 12),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Container( return Container(
@ -52,15 +36,17 @@ class PrescriptionsPage extends StatelessWidget {
); );
}, },
itemBuilder: (context, index) { itemBuilder: (context, index) {
List<Prescriptions> prescriptionsList = prescriptionsViewModel.prescriptionsOrderList[index].prescriptionsList; List<Prescriptions> prescriptionsList = prescriptionsViewModel.prescriptionsOrderListByValue(filterType)[index].prescriptionsList;
return AppExpandableNotifier( return AppExpandableNotifier(
title: prescriptionsViewModel.prescriptionsOrderList[index].filterName, title: prescriptionsViewModel.prescriptionsOrderListByValue(filterType)[index].filterName,
bodyWidget: ListView.separated( bodyWidget: ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21), padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
itemBuilder: (context, _index) { itemBuilder: (context, _index) {
Prescriptions prescriptions = prescriptionsList[_index]; Prescriptions prescriptions = prescriptionsList[_index];
bool _isSortByClinic = filterType == FilterType.Clinic;
return DoctorCard( return DoctorCard(
onTap: () async { onTap: () async {
final _shouldRecallApi = await Navigator.push( final _shouldRecallApi = await Navigator.push(
@ -78,11 +64,10 @@ class PrescriptionsPage extends StatelessWidget {
name: prescriptions.doctorName, name: prescriptions.doctorName,
profileUrl: prescriptions.doctorImageURL, profileUrl: prescriptions.doctorImageURL,
rating: prescriptions.actualDoctorRate.toDouble(), rating: prescriptions.actualDoctorRate.toDouble(),
subName: prescriptions.name, subName: _isSortByClinic ? prescriptions.name : prescriptions.clinicDescription,
isSortByClinic: _isSortByClinic,
isInOutPatient: prescriptions.isInOutPatient, isInOutPatient: prescriptions.isInOutPatient,
isLiveCareAppointment: prescriptions.isLiveCareAppointment, isLiveCareAppointment: prescriptions.isLiveCareAppointment,
// appointmentTime: DateUtil.formatDateToTime(DateUtil.convertStringToDate(prescriptions
// .appointmentDate)),
date: DateUtil.convertStringToDate(prescriptions date: DateUtil.convertStringToDate(prescriptions
.appointmentDate) //projectViewModel.isArabic? DateUtil.getMonthDayYearDateFormattedAr( DateUtil.convertStringToDate(prescriptions.appointmentDate) ):DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(prescriptions.appointmentDate)), .appointmentDate) //projectViewModel.isArabic? DateUtil.getMonthDayYearDateFormattedAr( DateUtil.convertStringToDate(prescriptions.appointmentDate) ):DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(prescriptions.appointmentDate)),
); );
@ -91,11 +76,7 @@ class PrescriptionsPage extends StatelessWidget {
itemCount: prescriptionsList.length), itemCount: prescriptionsList.length),
); );
}, },
itemCount: prescriptionsViewModel.prescriptionsOrderList.length, itemCount: prescriptionsViewModel.prescriptionsOrderListByValue(filterType).length,
) ));
],
),
),
);
} }
} }

@ -40,6 +40,7 @@ class RadiologyDetailsPage extends StatelessWidget {
DoctorHeader( DoctorHeader(
headerModel: new HeaderModel( headerModel: new HeaderModel(
finalRadiology.doctorName, finalRadiology.doctorName,
finalRadiology.doctorID,
finalRadiology.doctorImageURL, finalRadiology.doctorImageURL,
finalRadiology.speciality, finalRadiology.speciality,
finalRadiology.invoiceNo.toString(), finalRadiology.invoiceNo.toString(),

@ -137,15 +137,6 @@ class LineChartCurved extends StatelessWidget {
fontSize: 10, fontSize: 10,
), ),
interval: 3.0, interval: 3.0,
// interval: getMaxY() - getMinY() <= 500
// ? getMaxY() - getMinY() <= 50
// ? 10
// : 10
// : getMaxY() - getMinY() <= 1000
// ? 100
// : getMaxY() - getMinY() >= 10000
// ? 5000
// : 200,
margin: 12, margin: 12,
), ),
), ),

@ -33,7 +33,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
// vitalSigns.add(new VitalSign(TranslationBase.of(context).body, mode.bodyMax, TranslationBase.of(context).mass, "assets/images/new/")); // vitalSigns.add(new VitalSign(TranslationBase.of(context).body, mode.bodyMax, TranslationBase.of(context).mass, "assets/images/new/"));
vitalSigns.add(new VitalSign(TranslationBase.of(context).temperature, mode.temperatureCelcius, TranslationBase.of(context).tempC, "assets/images/new/temperature.svg")); vitalSigns.add(new VitalSign(TranslationBase.of(context).temperature, mode.temperatureCelcius, TranslationBase.of(context).tempC, "assets/images/new/temperature.svg"));
vitalSigns.add(new VitalSign(TranslationBase.of(context).heart, mode.hartRat, TranslationBase.of(context).bpm, "assets/images/new/heart_rate.svg")); vitalSigns.add(new VitalSign(TranslationBase.of(context).heart, mode.hartRat, TranslationBase.of(context).bpm, "assets/images/new/heart_rate.svg"));
vitalSigns.add(new VitalSign(TranslationBase.of(context).respirationRate, mode.respirationBeatPerMinute, TranslationBase.of(context).bpm, "assets/images/new/respiration_rate.svg")); vitalSigns.add(new VitalSign(TranslationBase.of(context).respirationRate, mode.respirationBeatPerMinute, TranslationBase.of(context).respirationBPM, "assets/images/new/respiration_rate.svg"));
vitalSigns.add(new VitalSign(TranslationBase.of(context).bloodPressure, mode.bloodPressure, TranslationBase.of(context).sysDias, "assets/images/new/blood_pressure.svg")); vitalSigns.add(new VitalSign(TranslationBase.of(context).bloodPressure, mode.bloodPressure, TranslationBase.of(context).sysDias, "assets/images/new/blood_pressure.svg"));
} }
@ -71,7 +71,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Body Mass Index is: " + mode.bodyMax, TranslationBase.of(context).bodyMassIndex + mode.bodyMax,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
letterSpacing: -0.64, letterSpacing: -0.64,
@ -83,15 +83,15 @@ class VitalSignDetailsScreen extends StatelessWidget {
height: MediaQuery.of(context).size.width / 2.8, height: MediaQuery.of(context).size.width / 2.8,
child: Row( child: Row(
children: [ children: [
showMass(context, "Underweight", "< 18.5", double.parse(mode.bodyMax) <= 18.5 ? Colors.red : Colors.black, 8), showMass(context, TranslationBase.of(context).underWeight, "< 18.5", double.parse(mode.bodyMax) <= 18.5 ? Colors.red : Colors.black, 8),
mWidth(12), mWidth(12),
showMass(context, "Normal", "18.5 - 24.9", (double.parse(mode.bodyMax) > 18.5 && double.parse(mode.bodyMax) < 25) ? Colors.red : Colors.black, 6), showMass(context, TranslationBase.of(context).healthy, "18.5 - 24.9", (double.parse(mode.bodyMax) > 18.5 && double.parse(mode.bodyMax) < 25) ? Colors.red : Colors.black, 6),
mWidth(12), mWidth(12),
showMass(context, "Overweight", "25 - 29.9", (double.parse(mode.bodyMax) >= 25 && double.parse(mode.bodyMax) < 30) ? Colors.red : Colors.black, 4), showMass(context, TranslationBase.of(context).overWeight, "25 - 29.9", (double.parse(mode.bodyMax) >= 25 && double.parse(mode.bodyMax) < 30) ? Colors.red : Colors.black, 4),
mWidth(12), mWidth(12),
showMass(context, "Obese", "30 - 34.9", (double.parse(mode.bodyMax) >= 30 && double.parse(mode.bodyMax) < 35) ? Colors.red : Colors.black, 2), showMass(context, TranslationBase.of(context).obese, "30 - 34.9", (double.parse(mode.bodyMax) >= 30 && double.parse(mode.bodyMax) < 35) ? Colors.red : Colors.black, 2),
mWidth(12), mWidth(12),
showMass(context, "Extreme Obese", "> 35", (double.parse(mode.bodyMax) >= 35) ? Colors.red : Colors.black, 0), showMass(context, TranslationBase.of(context).extremeObese, "> 35", (double.parse(mode.bodyMax) >= 35) ? Colors.red : Colors.black, 0),
], ],
), ),
), ),

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save