Merge branch 'sultan_v2.5' into 'development_v2.5'

Sultan v2.5

See merge request Cloud_Solution/diplomatic-quarter!594
merge-requests/594/merge
Sultan khan 4 years ago
commit aeac9cbb7b

@ -15,14 +15,14 @@ class MyApp extends StatefulWidget {
enum TtsState { playing, stopped, paused, continued } enum TtsState { playing, stopped, paused, continued }
class _MyAppState extends State<MyApp> { class _MyAppState extends State<MyApp> {
FlutterTts flutterTts; late FlutterTts flutterTts;
dynamic languages; dynamic languages;
String language; late String? language;
double volume = 0.5; double volume = 0.5;
double pitch = 1.0; double pitch = 1.0;
double rate = 0.5; double rate = 0.5;
String _newVoiceText; late String _newVoiceText;
TtsState ttsState = TtsState.stopped; TtsState ttsState = TtsState.stopped;
@ -140,15 +140,14 @@ class _MyAppState extends State<MyApp> {
} }
List<DropdownMenuItem<String>> getLanguageDropDownMenuItems() { List<DropdownMenuItem<String>> getLanguageDropDownMenuItems() {
var items = List<DropdownMenuItem<String>>(); var items = List<DropdownMenuItem<String>>.empty();
for (dynamic type in languages) { for (dynamic type in languages) {
items.add( items.add(DropdownMenuItem(value: type as String, child: Text(type as String)));
DropdownMenuItem(value: type as String, child: Text(type as String)));
} }
return items; return items;
} }
void changedLanguageDropDownItem(String selectedType) { void changedLanguageDropDownItem(String? selectedType) {
setState(() { setState(() {
language = selectedType; language = selectedType;
flutterTts.setLanguage(language); flutterTts.setLanguage(language);
@ -169,13 +168,7 @@ class _MyAppState extends State<MyApp> {
title: Text('Flutter TTS'), title: Text('Flutter TTS'),
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical, child: Column(children: [_inputSection(), _btnSection(), languages != null ? _languageDropDownSection() : Text(""), _buildSliders()]))));
child: Column(children: [
_inputSection(),
_btnSection(),
languages != null ? _languageDropDownSection() : Text(""),
_buildSliders()
]))));
} }
Widget _inputSection() => Container( Widget _inputSection() => Container(
@ -191,24 +184,17 @@ class _MyAppState extends State<MyApp> {
if (!kIsWeb && Platform.isAndroid) { if (!kIsWeb && Platform.isAndroid) {
return Container( return Container(
padding: EdgeInsets.only(top: 50.0), padding: EdgeInsets.only(top: 50.0),
child: child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildButtonColumn(Colors.green, Colors.greenAccent, Icons.play_arrow, 'PLAY', _speak),
_buildButtonColumn(Colors.green, Colors.greenAccent, _buildButtonColumn(Colors.red, Colors.redAccent, Icons.stop, 'STOP', _stop),
Icons.play_arrow, 'PLAY', _speak),
_buildButtonColumn(
Colors.red, Colors.redAccent, Icons.stop, 'STOP', _stop),
])); ]));
} else { } else {
return Container( return Container(
padding: EdgeInsets.only(top: 50.0), padding: EdgeInsets.only(top: 50.0),
child: child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildButtonColumn(Colors.green, Colors.greenAccent, Icons.play_arrow, 'PLAY', _speak),
_buildButtonColumn(Colors.green, Colors.greenAccent, _buildButtonColumn(Colors.red, Colors.redAccent, Icons.stop, 'STOP', _stop),
Icons.play_arrow, 'PLAY', _speak), _buildButtonColumn(Colors.blue, Colors.blueAccent, Icons.pause, 'PAUSE', _pause),
_buildButtonColumn(
Colors.red, Colors.redAccent, Icons.stop, 'STOP', _stop),
_buildButtonColumn(
Colors.blue, Colors.blueAccent, Icons.pause, 'PAUSE', _pause),
])); ]));
} }
} }
@ -223,25 +209,11 @@ class _MyAppState extends State<MyApp> {
) )
])); ]));
Column _buildButtonColumn(Color color, Color splashColor, IconData icon, Column _buildButtonColumn(Color color, Color splashColor, IconData icon, String label, Function func) {
String label, Function func) { return Column(mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [
return Column( IconButton(icon: Icon(icon), color: color, splashColor: splashColor, onPressed: () => func()),
mainAxisSize: MainAxisSize.min, Container(margin: const EdgeInsets.only(top: 8.0), child: Text(label, style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.w400, color: color)))
mainAxisAlignment: MainAxisAlignment.center, ]);
children: [
IconButton(
icon: Icon(icon),
color: color,
splashColor: splashColor,
onPressed: () => func()),
Container(
margin: const EdgeInsets.only(top: 8.0),
child: Text(label,
style: TextStyle(
fontSize: 12.0,
fontWeight: FontWeight.w400,
color: color)))
]);
} }
Widget _buildSliders() { Widget _buildSliders() {

File diff suppressed because it is too large Load Diff

@ -278,8 +278,14 @@ const Map localizedValues = {
"viewAll": {"en": "View All", 'ar': 'عرض الكل'}, "viewAll": {"en": "View All", 'ar': 'عرض الكل'},
"view": {"en": "View", 'ar': 'عرض'}, "view": {"en": "View", 'ar': 'عرض'},
"ContactUs": {"en": "Contact Us", 'ar': 'الوصول إلينا'}, "ContactUs": {"en": "Contact Us", 'ar': 'الوصول إلينا'},
"contactUsLocation": {"en": "P.O.Box: 91877 - Riyadh 11643, King Fahad Road - Olaya - Kingdom of Saudi Arabia", 'ar': 'صندوق بريد: 91877 - الرياض 11643 ، طريق الملك فهد - العليا - المملكة العربية السعودية'}, "contactUsLocation": {
"contactUsTime": {"en": "Saturday - Wednesday 8:00 AM - 10 PM, Thursday 8:00 AM- 8:00 PM, Friday 2:00 PM - 8:00 PM", 'ar': " السبت الأربعاء 08:00 ص 10:00 م , الخميس 08:00 ص 08:00 م, الجمعة 02:00 م - 08:00 م"}, "en": "P.O.Box: 91877 - Riyadh 11643, King Fahad Road - Olaya - Kingdom of Saudi Arabia",
'ar': 'صندوق بريد: 91877 - الرياض 11643 ، طريق الملك فهد - العليا - المملكة العربية السعودية'
},
"contactUsTime": {
"en": "Saturday - Wednesday 8:00 AM - 10 PM, Thursday 8:00 AM- 8:00 PM, Friday 2:00 PM - 8:00 PM",
'ar': " السبت الأربعاء 08:00 ص 10:00 م , الخميس 08:00 ص 08:00 م, الجمعة 02:00 م - 08:00 م"
},
"ViewAllWaysReachUs": {"en": "View All Ways Reach Us", 'ar': 'جميع طرق الاتصال بنا'}, "ViewAllWaysReachUs": {"en": "View All Ways Reach Us", 'ar': 'جميع طرق الاتصال بنا'},
"medicalProfile": {"en": "Medical Profile", 'ar': 'الملف الطبي'}, "medicalProfile": {"en": "Medical Profile", 'ar': 'الملف الطبي'},
"consultation": {"en": "Consultation", "ar": "استشارة"}, "consultation": {"en": "Consultation", "ar": "استشارة"},
@ -879,10 +885,7 @@ const Map localizedValues = {
}, },
"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": "العروض والباقات"},
"offerAndPackagesDetails": { "offerAndPackagesDetails": {"en": "This service allows you to view all HMG Offers:", "ar": "This service allows you to view all HMG Offers:"},
"en": "This service allows you to view all HMG Offers:",
"ar": "This service allows you to view all HMG Offers:"
},
"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": "نتيجة خاصة"},
@ -958,8 +961,10 @@ const Map localizedValues = {
"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 Rapid response team provides a comprehensive medical service for all sorts of urgent and stable cases of all ages, including adult and paediatric patients, the service is covered by a fully equipped and highly trained medical team capable of providing the best medical care at the patients home.", "en":
"ar": "فريق الاستجابة السريعة يقوم بتقديم رعاية صحية متكاملة لجميع الحالات الطارئة و المستقرة، الخدمة تشمل جميع الأعمار بما في ذلك حالات الأطفال، تشمل الخدمة إرسال فريق طبي كامل الجاهزية و على مستوى عالي من التدريب قادر على تقديم أفضل رعاية صحية من داخل المنزل." "The Rapid response team provides a comprehensive medical service for all sorts of urgent and stable cases of all ages, including adult and paediatric patients, the service is covered by a fully equipped and highly trained medical team capable of providing the best medical care at the patients home.",
"ar":
"فريق الاستجابة السريعة يقوم بتقديم رعاية صحية متكاملة لجميع الحالات الطارئة و المستقرة، الخدمة تشمل جميع الأعمار بما في ذلك حالات الأطفال، تشمل الخدمة إرسال فريق طبي كامل الجاهزية و على مستوى عالي من التدريب قادر على تقديم أفضل رعاية صحية من داخل المنزل."
}, },
"rrtService": {"en": "RRT Service", "ar": "خدمة RRT"}, "rrtService": {"en": "RRT Service", "ar": "خدمة RRT"},
"bill-amount": {"en": "Bill Amount", "ar": "مبلغ الفاتورة"}, "bill-amount": {"en": "Bill Amount", "ar": "مبلغ الفاتورة"},
@ -1632,28 +1637,41 @@ const Map localizedValues = {
"medicalFileSubtitle": {"en": "Details", "ar": "ملفي الطبي"}, "medicalFileSubtitle": {"en": "Details", "ar": "ملفي الطبي"},
"healthConvertersTitle": {"en": "Health", "ar": "تحويل"}, "healthConvertersTitle": {"en": "Health", "ar": "تحويل"},
"healthConvertersSubtitle": {"en": "Converters", "ar": "القياسات"}, "healthConvertersSubtitle": {"en": "Converters", "ar": "القياسات"},
"syncHealthData": { "en": "Sync Health Data", "ar": "مزامنة البيانات الصحية" }, "syncHealthData": {"en": "Sync Health Data", "ar": "مزامنة البيانات الصحية"},
"steps": { "en": "Steps", "ar": "الخطوات" }, "steps": {"en": "Steps", "ar": "الخطوات"},
"avgSteps": { "en": "Average Steps", "ar": "متوسط الخطوات" }, "avgSteps": {"en": "Average Steps", "ar": "متوسط الخطوات"},
"avgDistance": { "en": "Average Distance", "ar": "متوسط المسافة" }, "avgDistance": {"en": "Average Distance", "ar": "متوسط المسافة"},
"enterDetails": {"en": "Enter Details", "ar": "أدخل التفاصيل"}, "enterDetails": {"en": "Enter Details", "ar": "أدخل التفاصيل"},
"avgHeartRate": { "en": "Average Heart Rate", "ar": "متوسط معدل ضربات القلب" }, "avgHeartRate": {"en": "Average Heart Rate", "ar": "متوسط معدل ضربات القلب"},
"alreadySynced": { "en": "Already Synced", "ar": "متزامنة" }, "alreadySynced": {"en": "Already Synced", "ar": "متزامنة"},
"sync-instructions-intro1": { "en": "It Seems like you haven't synced your health data with the Dr. Alhabib App before. To proceed further, you need to sync your health data with the Dr. Alhabib App", "ar": "يبدو أنك لم تقم بمزامنة بياناتك الصحية مع تطبيق Dr. Alhabib App من قبل. للمتابعة ، تحتاج إلى مزامنة بياناتك الصحية مع تطبيق Dr. Alhabib" }, "sync-instructions-intro1": {
"sync-instructions-intro2": { "en": "Before syncing data, please make sure that you have followed the instructions properly", "ar": "قبل مزامنة البيانات ، يرجى التأكد من اتباع التعليمات بشكل صحيح." }, "en": "It Seems like you haven't synced your health data with the Dr. Alhabib App before. To proceed further, you need to sync your health data with the Dr. Alhabib App",
"sync-instructions-intro3": { "en": "Before syncing data, please make sure that following instructions are met:", "ar": "قبل مزامنة البيانات ، يرجى التأكد من تلبية الإرشادات التالية:" }, "ar": "يبدو أنك لم تقم بمزامنة بياناتك الصحية مع تطبيق Dr. Alhabib App من قبل. للمتابعة ، تحتاج إلى مزامنة بياناتك الصحية مع تطبيق Dr. Alhabib"
"ios-instructions-1": { "en": "Make sure that you have installed 'Health' App & 'Watch' App from Apple Store.", "ar": "تأكد من أنك قمت بتثبيت تطبيق 'Health' App & 'Watch' من متجر Apple." }, },
"ios-instructions-2": { "en": "Make sure that your Apple Watch is connected with the Watch & Health Apps.", "ar": "تأكد من اتصال Apple Watch بتطبيقات Watch & Health." }, "sync-instructions-intro2": {"en": "Before syncing data, please make sure that you have followed the instructions properly", "ar": "قبل مزامنة البيانات ، يرجى التأكد من اتباع التعليمات بشكل صحيح."},
"ios-instructions-3": { "en": "Make sure that data like heart rate, steps, distance etc. are being shown on your health app.", "ar": "تأكد من عرض بيانات مثل معدل ضربات القلب والخطوات والمسافة وما إلى ذلك على تطبيق صحتك." }, "sync-instructions-intro3": {"en": "Before syncing data, please make sure that following instructions are met:", "ar": "قبل مزامنة البيانات ، يرجى التأكد من تلبية الإرشادات التالية:"},
"supportedWatches": { "en": "Supported SmartWatches", "ar": "الساعات الذكية المدعومة" }, "ios-instructions-1": {"en": "Make sure that you have installed 'Health' App & 'Watch' App from Apple Store.", "ar": "تأكد من أنك قمت بتثبيت تطبيق 'Health' App & 'Watch' من متجر Apple."},
"watchInstructions": { "en": "View watch instructions", "ar": "عرض تعليمات الساعة" }, "ios-instructions-2": {"en": "Make sure that your Apple Watch is connected with the Watch & Health Apps.", "ar": "تأكد من اتصال Apple Watch بتطبيقات Watch & Health."},
"ios-instructions-3": {
"en": "Make sure that data like heart rate, steps, distance etc. are being shown on your health app.",
"ar": "تأكد من عرض بيانات مثل معدل ضربات القلب والخطوات والمسافة وما إلى ذلك على تطبيق صحتك."
},
"supportedWatches": {"en": "Supported SmartWatches", "ar": "الساعات الذكية المدعومة"},
"watchInstructions": {"en": "View watch instructions", "ar": "عرض تعليمات الساعة"},
"monthlyTab": {"en": "Monthly", "ar": "شهري"}, "monthlyTab": {"en": "Monthly", "ar": "شهري"},
"moreSupportedWatches": {"en": "More Supported Smartwatches...", "ar": "المزيد من الساعات الذكية المدعومة..."}, "moreSupportedWatches": {"en": "More Supported Smartwatches...", "ar": "المزيد من الساعات الذكية المدعومة..."},
"android-instructions-1": { "en": "Make sure that you have installed 'WearOS' & 'Google Fit' apps from Google PlayStore.", "ar": "تأكد من تثبيت تطبيقات 'WearOS' و 'Google Fit' من متجر Google PlayStore." }, "android-instructions-1": {
"android-instructions-2": { "en": "Make sure that you have installed your watch related apps from Google PlayStore.", "ar": "تأكد من أنك قمت بتثبيت التطبيقات المتعلقة بالساعات من Google PlayStore." }, "en": "Make sure that you have installed 'WearOS' & 'Google Fit' apps from Google PlayStore.",
"android-instructions-3": { "en": "Make sure that your Smart Watch is connected with the WearOS app & your watch apps.", "ar": "تأكد من أن ساعتك الذكية متصلة بتطبيق WearOS وتطبيقات ساعتك." }, "ar": "تأكد من تثبيت تطبيقات 'WearOS' و 'Google Fit' من متجر Google PlayStore."
"android-instructions-4": { "en": "Make sure that your smart watch apps are linked/associated with Google Fit App.", "ar": "تأكد من أن تطبيقات ساعتك الذكية مرتبطة / مرتبطة بتطبيق Google Fit." }, "android-instructions-5": { "en": "Make sure that data like heart rate, steps, distance etc. are being shown on your watch app & on Google Fit app & both are in sync.", "ar": "تأكد من عرض بيانات مثل معدل ضربات القلب والخطوات والمسافة وما إلى ذلك على تطبيق الساعة وعلى تطبيق Google Fit وكلاهما في حالة مزامنة." }, },
"tamaraInstPlan" : { "en": "Select the tamara installment plan", "ar": "حدد خطة تقسيط تمارة" }, "android-instructions-2": {"en": "Make sure that you have installed your watch related apps from Google PlayStore.", "ar": "تأكد من أنك قمت بتثبيت التطبيقات المتعلقة بالساعات من Google PlayStore."},
"android-instructions-3": {"en": "Make sure that your Smart Watch is connected with the WearOS app & your watch apps.", "ar": "تأكد من أن ساعتك الذكية متصلة بتطبيق WearOS وتطبيقات ساعتك."},
"android-instructions-4": {"en": "Make sure that your smart watch apps are linked/associated with Google Fit App.", "ar": "تأكد من أن تطبيقات ساعتك الذكية مرتبطة / مرتبطة بتطبيق Google Fit."},
"android-instructions-5": {
"en": "Make sure that data like heart rate, steps, distance etc. are being shown on your watch app & on Google Fit app & both are in sync.",
"ar": "تأكد من عرض بيانات مثل معدل ضربات القلب والخطوات والمسافة وما إلى ذلك على تطبيق الساعة وعلى تطبيق Google Fit وكلاهما في حالة مزامنة."
},
"tamaraInstPlan": {"en": "Select the tamara installment plan", "ar": "حدد خطة تقسيط تمارة"},
"onlineTag": {"en": "Online", "ar": "متصل"}, "onlineTag": {"en": "Online", "ar": "متصل"},
"offlineTag": {"en": "Offline", "ar": "غير متصل"}, "offlineTag": {"en": "Offline", "ar": "غير متصل"},
"viewDocList": {"en": "View List of Doctors", "ar": "عرض قائمة الأطباء"}, "viewDocList": {"en": "View List of Doctors", "ar": "عرض قائمة الأطباء"},
@ -1665,7 +1683,6 @@ const Map localizedValues = {
"RRTTitle": {"en": "RRT", "ar": "خدمة فريق"}, "RRTTitle": {"en": "RRT", "ar": "خدمة فريق"},
"RRTSubTitle": {"en": "Service", "ar": "الاستجابة السريع"}, "RRTSubTitle": {"en": "Service", "ar": "الاستجابة السريع"},
"transportation": {"en": "Transportation", "ar": "النقل"}, "transportation": {"en": "Transportation", "ar": "النقل"},
"neck": {"en": "Neck", "ar": "رقبه"}, "neck": {"en": "Neck", "ar": "رقبه"},
"waist": {"en": "Waist", "ar": "وسط"}, "waist": {"en": "Waist", "ar": "وسط"},
"hip": {"en": "Hip", "ar": "ورك او نتوء"}, "hip": {"en": "Hip", "ar": "ورك او نتوء"},
@ -1674,47 +1691,56 @@ const Map localizedValues = {
"babyAge": {"en": "Baby Age", "ar": "عمر الطفل الآن:"}, "babyAge": {"en": "Baby Age", "ar": "عمر الطفل الآن:"},
"babyAgeAvail": {"en": "baby age is not available", "ar": "عمر الطفل غير متوفر"}, "babyAgeAvail": {"en": "baby age is not available", "ar": "عمر الطفل غير متوفر"},
"deliveryDue": {"en": "The delivery due date is estimated to be on the", "ar": "من المقدر أن يكون تاريخ استحقاق التسليم في"}, "deliveryDue": {"en": "The delivery due date is estimated to be on the", "ar": "من المقدر أن يكون تاريخ استحقاق التسليم في"},
"almostInactive": {"en": "Almost Inactive(Little or no exercises)", "ar": "شبه غير نشط (تمارين قليلة أو معدومة)"}, "almostInactive": {"en": "Almost Inactive(Little or no exercises)", "ar": "شبه غير نشط (تمارين قليلة أو معدومة)"},
"lightActive1": {"en": "Lighty Active (1-3) days per week", "ar": "Lighty Active (1-3) أيام في الأسبوع"}, "lightActive1": {"en": "Lighty Active (1-3) days per week", "ar": "Lighty Active (1-3) أيام في الأسبوع"},
"veryActive": {"en": "very Active(6-7) days per week", "ar": "نشط جدا (6-7) أيام في الأسبوع"}, "veryActive": {"en": "very Active(6-7) days per week", "ar": "نشط جدا (6-7) أيام في الأسبوع"},
"superActive": {"en": "Super Active(very hard exercises)", "ar": "سوبر نشط (تمارين صعبة للغاية)"}, "superActive": {"en": "Super Active(very hard exercises)", "ar": "سوبر نشط (تمارين صعبة للغاية)"},
"dailyIntake": {"en": "Daily intake is", "ar": "المدخول اليومي"}, "dailyIntake": {"en": "Daily intake is", "ar": "المدخول اليومي"},
"calculateAmount": {"en": "Calculates the amount of energy that the persons body expends in a day", "ar": "تحسب كمية الطاقة التي يبذلها جسم الشخص في اليوم"}, "calculateAmount": {"en": "Calculates the amount of energy that the persons body expends in a day", "ar": "تحسب كمية الطاقة التي يبذلها جسم الشخص في اليوم"},
"bodyWillBurn": {"en": "This means the body will burn", "ar": "هذا يعني أن الجسم سوف يحترق"}, "bodyWillBurn": {"en": "This means the body will burn", "ar": "هذا يعني أن الجسم سوف يحترق"},
"caloriesEachDay": {"en": "calories each day, if engaged in no activity for the entire day.. Note: Daily calorie requirement is", "ar": "السعرات الحرارية في كل يوم ، إذا لم تمارس أي نشاط طوال اليوم .. ملاحظة: متطلبات السعرات الحرارية اليومية هي"}, "caloriesEachDay": {
"en": "calories each day, if engaged in no activity for the entire day.. Note: Daily calorie requirement is",
"ar": "السعرات الحرارية في كل يوم ، إذا لم تمارس أي نشاط طوال اليوم .. ملاحظة: متطلبات السعرات الحرارية اليومية هي"
},
"maintainWeight": {"en": "calories, to maintain the current weight.", "ar": "السعرات الحرارية للحفاظ على الوزن الحالي."}, "maintainWeight": {"en": "calories, to maintain the current weight.", "ar": "السعرات الحرارية للحفاظ على الوزن الحالي."},
"mediumFinger": {"en": "Medium(fingers touch)", "ar": "متوسطة (لمسة الأصابع)"}, "mediumFinger": {"en": "Medium(fingers touch)", "ar": "متوسطة (لمسة الأصابع)"},
"smallFinger": {"en": "Small(fingers overlap)", "ar": "صغير (أصابع متداخلة)"}, "smallFinger": {"en": "Small(fingers overlap)", "ar": "صغير (أصابع متداخلة)"},
"largeFinger": {"en": "Large(fingers don\'n touch)", "ar": "كبير (لا تلمس الأصابع)"}, "largeFinger": {"en": "Large(fingers don\'n touch)", "ar": "كبير (لا تلمس الأصابع)"},
"idealBodyWeight": {"en": "Calculates the ideal body weight based on height, Weight, and Body Size", "ar": "يحسب وزن الجسم المثالي بناءً على الطول والوزن وحجم الجسم"}, "idealBodyWeight": {"en": "Calculates the ideal body weight based on height, Weight, and Body Size", "ar": "يحسب وزن الجسم المثالي بناءً على الطول والوزن وحجم الجسم"},
"bodyFrameSize": {"en": "Body Frame Size", "ar": "حجم إطار الجسم"}, "bodyFrameSize": {"en": "Body Frame Size", "ar": "حجم إطار الجسم"},
"idealWeightRange": {"en": "Ideal weight range is", "ar": "نطاق الوزن المثالي هو"}, "idealWeightRange": {"en": "Ideal weight range is", "ar": "نطاق الوزن المثالي هو"},
"currentWeightPerfect": {"en": "Congratulations! The current weight is perfect and considered healthy", "ar": "تهانينا! الوزن الحالي مثالي ويعتبر صحي"}, "currentWeightPerfect": {"en": "Congratulations! The current weight is perfect and considered healthy", "ar": "تهانينا! الوزن الحالي مثالي ويعتبر صحي"},
"littleBitWeightMore": {"en": "This means that the weight is a little bit more than ideal weight by", "ar": "هذا يعني أن الوزن أكثر قليلاً من الوزن المثالي به"}, "littleBitWeightMore": {"en": "This means that the weight is a little bit more than ideal weight by", "ar": "هذا يعني أن الوزن أكثر قليلاً من الوزن المثالي به"},
"consultWithDoctor": {"en": "May wish to consult with the doctor for medical help. Click to view our list of Doctors", "ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء لدينا"}, "consultWithDoctor": {
"en": "May wish to consult with the doctor for medical help. Click to view our list of Doctors",
"ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء لدينا"
},
"excessiveObesity": {"en": "Means that you suffer from excessive obesity by", "ar": "يعني أنك تعاني من السمنة المفرطة بها"}, "excessiveObesity": {"en": "Means that you suffer from excessive obesity by", "ar": "يعني أنك تعاني من السمنة المفرطة بها"},
"mayWish": {"en": "May wish to consult with the doctor for medical help. Click to view our list of\n Doctors", "ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء \ n الخاصة بنا"}, "mayWish": {
"en": "May wish to consult with the doctor for medical help. Click to view our list of\n Doctors",
"ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء \ n الخاصة بنا"
},
"essential": {"en": "The category falls under essential", "ar": "الفئة تندرج تحت الأساسية"}, "essential": {"en": "The category falls under essential", "ar": "الفئة تندرج تحت الأساسية"},
"athlete": {"en": "The category falls under athlete", "ar": "فئة تندرج تحت رياضي"}, "athlete": {"en": "The category falls under athlete", "ar": "فئة تندرج تحت رياضي"},
"fitness": {"en": "The category falls under fitness", "ar": "الفئة تندرج تحت اللياقة البدنية"}, "fitness": {"en": "The category falls under fitness", "ar": "الفئة تندرج تحت اللياقة البدنية"},
"acceptable": {"en": "The category falls under acceptable", "ar": "الفئة تندرج تحت مقبول"}, "acceptable": {"en": "The category falls under acceptable", "ar": "الفئة تندرج تحت مقبول"},
"underObese": {"en": "The category falls under obese", "ar": "تندرج الفئة تحت السمنة"}, "underObese": {"en": "The category falls under obese", "ar": "تندرج الفئة تحت السمنة"},
"crossedLimits": {"en": "Please check the value you have entered, since the body fat percentage has crosed the limits.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، لأن نسبة الدهون في الجسم تجاوزت الحدود."}, "crossedLimits": {
"lowLimits": {"en": "Please check the value you have entered, since the body fat percentage cannot be this low.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، حيث لا يمكن أن تكون نسبة الدهون في الجسم منخفضة."}, "en": "Please check the value you have entered, since the body fat percentage has crosed the limits.",
"ar": "يرجى التحقق من القيمة التي أدخلتها ، لأن نسبة الدهون في الجسم تجاوزت الحدود."
},
"lowLimits": {
"en": "Please check the value you have entered, since the body fat percentage cannot be this low.",
"ar": "يرجى التحقق من القيمة التي أدخلتها ، حيث لا يمكن أن تكون نسبة الدهون في الجسم منخفضة."
},
"estimates": {"en": "Estimates the total body fat based on\nthe size", "ar": "تقدير إجمالي الدهون في الجسم بناءً على \ n الحجم"}, "estimates": {"en": "Estimates the total body fat based on\nthe size", "ar": "تقدير إجمالي الدهون في الجسم بناءً على \ n الحجم"},
"myCart": {"en": "My Cart", "ar": "عربة التسوق"}, "myCart": {"en": "My Cart", "ar": "عربة التسوق"},
"browseOffers": {"en": "Browse offers by clinic", "ar": "تصفح العروض حسب العيادة"}, "browseOffers": {"en": "Browse offers by clinic", "ar": "تصفح العروض حسب العيادة"},
"inactiveAct":{"en":"Almost inactive (little or no exercise)","ar":"غير نشط تقريبا (ممارسة الرياضة قليلة أو منعدمة)"}, "inactiveAct": {"en": "Almost inactive (little or no exercise)", "ar": "غير نشط تقريبا (ممارسة الرياضة قليلة أو منعدمة)"},
"light":{"en":"Lightly active (1-3) days per week","ar":"خفيف النشاط (1-3 أيام في الأسبوع)"}, "light": {"en": "Lightly active (1-3) days per week", "ar": "خفيف النشاط (1-3 أيام في الأسبوع)"},
"moderate":{"en":"Moderately active (3-5) days per week)","ar":"معتدل النشاط (3-5 أيام في الأسبوع)"}, "moderate": {"en": "Moderately active (3-5) days per week)", "ar": "معتدل النشاط (3-5 أيام في الأسبوع)"},
"very":{"en":"Very active (6-7) days per week)","ar":"نشط جداُ (6-7 أيام في الأسبوع)"}, "very": {"en": "Very active (6-7) days per week)", "ar": "نشط جداُ (6-7 أيام في الأسبوع)"},
"super":{"en":"Super active (very hard exercise)","ar":"عالي النشاط (ممارسة الرياضة الصعبة)"}, "super": {"en": "Super active (very hard exercise)", "ar": "عالي النشاط (ممارسة الرياضة الصعبة)"},
"resultCalories": {"en": "Daily intake is (#) calories", "ar": "الإحتياج اليومي (#) سعرة حرارية"}, "resultCalories": {"en": "Daily intake is (#) calories", "ar": "الإحتياج اليومي (#) سعرة حرارية"},
"bmrDesc": {"en": "Calculates the amount of energy that the persons body expends in a day", "ar": "معدل الأيض القاعدي: هو حساب كمية الطاقة التي يحتاجها الجسم في اليوم الواحد"}, "bmrDesc": {"en": "Calculates the amount of energy that the persons body expends in a day", "ar": "معدل الأيض القاعدي: هو حساب كمية الطاقة التي يحتاجها الجسم في اليوم الواحد"},
"idealWeightDesc": {"en": "Calculates the ideal body weight based on height, Weight, and Body Size", "ar": "حساب الوزن المثالي والوزن الصحي للجسم على أساس الطول، والوزن ،والجسم"}, "idealWeightDesc": {"en": "Calculates the ideal body weight based on height, Weight, and Body Size", "ar": "حساب الوزن المثالي والوزن الصحي للجسم على أساس الطول، والوزن ،والجسم"},
@ -1723,20 +1749,28 @@ const Map localizedValues = {
"bodyFrameMedium": {"en": "Medium (fingers touch)", "ar": "متوسط (الأصابع تتلامس)"}, "bodyFrameMedium": {"en": "Medium (fingers touch)", "ar": "متوسط (الأصابع تتلامس)"},
"bodyFrameLarge": {"en": "Large (fingers don't touch)", "ar": "عريض (الأصابع لا تتلامس)"}, "bodyFrameLarge": {"en": "Large (fingers don't touch)", "ar": "عريض (الأصابع لا تتلامس)"},
"bodyFatDesc": {"en": "Estimates the total body fat based on the size", "ar": "حساب الدهون في الجسم بناءاً على الحجم"}, "bodyFatDesc": {"en": "Estimates the total body fat based on the size", "ar": "حساب الدهون في الجسم بناءاً على الحجم"},
"obeseBodyFat": {"en": "The category falls under Obese.", "ar": "تندرج تحت فئة دهون جسم سمين"},
"obeseBodyFat":{"en":"The category falls under Obese.","ar":"تندرج تحت فئة دهون جسم سمين"}, "invalid": {"en": "Invalid input for calculation.", "ar": "البيانات المدخلة غير صالحة للحساب"},
"invalid":{"en":"Invalid input for calculation.","ar":"البيانات المدخلة غير صالحة للحساب"}, "more": {
"more":{"en":"Please check the value you have entered, since the body fat percentage has crossed the limits.","ar":"يرجى التحقق من القيمة التي أدخلتها ، نظرًا لأن نسبة الدهون في الجسم قد تجاوزت الحدود"}, "en": "Please check the value you have entered, since the body fat percentage has crossed the limits.",
"less":{"en":"Please check the value you have entered, since the body fat percentage cannot be this low.","ar":"يرجى التحقق من القيمة التي أدخلتها ، نظرًا لأن نسبة الدهون في الجسم لا يمكن أن تكون منخفضة"}, "ar": "يرجى التحقق من القيمة التي أدخلتها ، نظرًا لأن نسبة الدهون في الجسم قد تجاوزت الحدود"
"carbProteinDesc": {"en": "Calculates carbohydrate protein and fat ratio in calories and grams according to a pre-set ratio", "ar": "حساب نسب الكربوهيدرات و البروتينات و الدهون بالسعرات الحرارية والغرامات وفقا لنسب محددة مسبقا"}, },
"less": {
"en": "Please check the value you have entered, since the body fat percentage cannot be this low.",
"ar": "يرجى التحقق من القيمة التي أدخلتها ، نظرًا لأن نسبة الدهون في الجسم لا يمكن أن تكون منخفضة"
},
"carbProteinDesc": {
"en": "Calculates carbohydrate protein and fat ratio in calories and grams according to a pre-set ratio",
"ar": "حساب نسب الكربوهيدرات و البروتينات و الدهون بالسعرات الحرارية والغرامات وفقا لنسب محددة مسبقا"
},
"calDay": {"en": "Calories Per Day", "ar": "السعرات الحرارية في اليوم الواحد"}, "calDay": {"en": "Calories Per Day", "ar": "السعرات الحرارية في اليوم الواحد"},
"notSure": {"en": "Not sure? click here", "ar": "غير متأكد؟ اضغط هنا"}, "notSure": {"en": "Not sure? click here", "ar": "غير متأكد؟ اضغط هنا"},
"selectDiet": {"en": "Select Diet Type", "ar": "حدد نوع النظام الغذائي"}, "selectDiet": {"en": "Select Diet Type", "ar": "حدد نوع النظام الغذائي"},
"dietVeryLow":{"en":"Very Low Carb","ar":"حمية منخفضة جدا في الكربوهيدرات"}, "dietVeryLow": {"en": "Very Low Carb", "ar": "حمية منخفضة جدا في الكربوهيدرات"},
"dietLow":{"en":"Low Carb","ar":"حمية منخفضة الكربوهيدرات"}, "dietLow": {"en": "Low Carb", "ar": "حمية منخفضة الكربوهيدرات"},
"dietModerate":{"en":"Moderate Carb","ar":"حمية معتدلة الكربوهيدرات"}, "dietModerate": {"en": "Moderate Carb", "ar": "حمية معتدلة الكربوهيدرات"},
"dietUSDA":{"en":"USDA Guidelines","ar":"ارشادات وزارة الزراعة الأمريكية"}, "dietUSDA": {"en": "USDA Guidelines", "ar": "ارشادات وزارة الزراعة الأمريكية"},
"dietZone":{"en":"Zone Diet","ar":"حمية زون"}, "dietZone": {"en": "Zone Diet", "ar": "حمية زون"},
"Protein": {"en": "Protein", "ar": "بروتين"}, "Protein": {"en": "Protein", "ar": "بروتين"},
"Cals": {"en": "Cals", "ar": "كالس"}, "Cals": {"en": "Cals", "ar": "كالس"},
"gramsPerDay": {"en": "Grams Per Day", "ar": "غرام في اليوم"}, "gramsPerDay": {"en": "Grams Per Day", "ar": "غرام في اليوم"},
@ -1758,5 +1792,11 @@ const Map localizedValues = {
"ancillaryOrderPaymentSuccess": {"en": "Your payment for selected orders has been made successfully.", "ar": "تم سداد دفعتك للطلبات المحددة بنجاح."}, "ancillaryOrderPaymentSuccess": {"en": "Your payment for selected orders has been made successfully.", "ar": "تم سداد دفعتك للطلبات المحددة بنجاح."},
"connectTitle": {"en": "Connect", "ar": "تواصل"}, "connectTitle": {"en": "Connect", "ar": "تواصل"},
"connectSubtitle": {"en": "With us", "ar": "معنا"}, "connectSubtitle": {"en": "With us", "ar": "معنا"},
"covidConsent": {"en": "Covid-19 Test feature allows you to book an appointment for the Covid-19 Lab test within HMG branches, where a swab sample will be collected & processed. Once the result has been processed, we shall notify you via SMS on your registered mobile number & the test result will also be available in the Lab Results section of this app. Please note that this result is only available to you & not publicly available to anyone else. \nPlease accept to confirm & proceed.", "ar": "تتيح لك ميزة اختبار كوفيد19 حجز موعد في احد فروع مجموعة الحبيب الطبية ، حيث سيتم اخذ عينة المسحة ومعالجتها. بمجرد معالجة النتيجة ، سنخطرك عبر رسالة نصية قصيرة على رقم هاتفك المحمول المسجل وستكون نتيجة الاختبار متاحة أيضًا على التطبيق في قسم نتائج المختبر. يرجى ملاحظة أن هذه النتيجة متاحة لك فقط وليست متاحة للجمهور او اي شخص آخر. الرجاء الموافقة للتأكيد والمتابعة."}, "covidConsent": {
}; "en":
"Covid-19 Test feature allows you to book an appointment for the Covid-19 Lab test within HMG branches, where a swab sample will be collected & processed. Once the result has been processed, we shall notify you via SMS on your registered mobile number & the test result will also be available in the Lab Results section of this app. Please note that this result is only available to you & not publicly available to anyone else. \nPlease accept to confirm & proceed.",
"ar":
"تتيح لك ميزة اختبار كوفيد19 حجز موعد في احد فروع مجموعة الحبيب الطبية ، حيث سيتم اخذ عينة المسحة ومعالجتها. بمجرد معالجة النتيجة ، سنخطرك عبر رسالة نصية قصيرة على رقم هاتفك المحمول المسجل وستكون نتيجة الاختبار متاحة أيضًا على التطبيق في قسم نتائج المختبر. يرجى ملاحظة أن هذه النتيجة متاحة لك فقط وليست متاحة للجمهور او اي شخص آخر. الرجاء الموافقة للتأكيد والمتابعة."
},
"selectProcedure": {"en": "Please select procedure", "ar": "الرجاء تحديد الإجراء"}
};

@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/customer
import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart'; import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart';
import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/models/rrt/procedure_model.dart';
import 'package:diplomaticquarterapp/models/rrt/service_price.dart'; import 'package:diplomaticquarterapp/models/rrt/service_price.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/pharmacyAddress_service.dart'; import 'package:diplomaticquarterapp/services/pharmacy_services/pharmacyAddress_service.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
@ -21,6 +22,7 @@ class _RRTServiceData {
List<GetCMCAllOrdersResponseModel> pendingOrders = []; List<GetCMCAllOrdersResponseModel> pendingOrders = [];
List<GetCMCAllOrdersResponseModel> completedOrders = []; List<GetCMCAllOrdersResponseModel> completedOrders = [];
ServicePrice servicePrice; ServicePrice servicePrice;
List<ProcedureModel> procedure = [];
} }
class RRTViewModel extends BaseViewModel { class RRTViewModel extends BaseViewModel {
@ -34,9 +36,10 @@ class RRTViewModel extends BaseViewModel {
_RRTServiceData rrtServiceData = _RRTServiceData(); _RRTServiceData rrtServiceData = _RRTServiceData();
Future<_RRTServiceData> loadRequiredData() async { Future<_RRTServiceData> loadRequiredData() async {
await getServicePrice(); // await getServicePrice();
// await getAllOrders(); // await getAllOrders();
await getAllOrdersRC(); await getAllOrdersRC();
await getProcedure();
return rrtServiceData; return rrtServiceData;
} }
@ -94,7 +97,7 @@ class RRTViewModel extends BaseViewModel {
} }
Future<_RRTServiceData> getAllOrdersRC() async { Future<_RRTServiceData> getAllOrdersRC() async {
await _service.baseAppClient.post(GET_ALL_RRT_ORDERS_RC, isRCService: true, body: {}, onSuccess: (response, statusCode) { await _service.baseAppClient.post(GET_ALL_RRT_ORDERS_RC, isRCService: true, body: {}, onSuccess: (response, statusCode) {
var data = response["response"]; var data = response["response"];
rrtServiceData.completedOrders.clear(); rrtServiceData.completedOrders.clear();
rrtServiceData.pendingOrders.clear(); rrtServiceData.pendingOrders.clear();
@ -145,6 +148,23 @@ class RRTViewModel extends BaseViewModel {
return servicePrice; return servicePrice;
} }
Future<List<ProcedureModel>> getProcedure() async {
Map<String, dynamic> body = {"IdentificationNo": user.patientIdentificationNo, "ProjectID": 15};
List<ProcedureModel> procedure = [];
await _service.baseAppClient.post(GET_RRT_PROCEDURE, body: body, onSuccess: (response, statusCode) {
var data = response['Vida_ProcedureList'];
if (data != null && data is List) {
for (var i in data) {
procedure.add(ProcedureModel.fromJson(i));
}
rrtServiceData.procedure = procedure;
}
}, onFailure: (error, statusCode) {
AppToast.showErrorToast(message: error);
});
return procedure;
}
Future<bool> cancelOrder(PrescriptionsOrder order, {String reason = ""}) async { Future<bool> cancelOrder(PrescriptionsOrder order, {String reason = ""}) async {
var body = {"PresOrderID": order.iD, "PresOrderStatus": 4, "EditedBy": 3, "RejectionReason": reason}; var body = {"PresOrderID": order.iD, "PresOrderStatus": 4, "EditedBy": 3, "RejectionReason": reason};
var success = false; var success = false;

@ -0,0 +1,30 @@
class ProcedureModel {
int patientShare;
int patientShareWithTax;
int patientTaxAmount;
String procedureID;
String procedureName;
bool isSelected;
ProcedureModel({this.patientShare, this.patientShareWithTax, this.patientTaxAmount, this.procedureID, this.procedureName});
ProcedureModel.fromJson(Map<String, dynamic> json) {
patientShare = json['PatientShare'];
patientShareWithTax = json['PatientShareWithTax'];
patientTaxAmount = json['PatientTaxAmount'];
procedureID = json['ProcedureID'];
procedureName = json['ProcedureName'];
isSelected = json['isSelected'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientShare'] = this.patientShare;
data['PatientShareWithTax'] = this.patientShareWithTax;
data['PatientTaxAmount'] = this.patientTaxAmount;
data['ProcedureID'] = this.procedureID;
data['ProcedureName'] = this.procedureName;
data['isSelected'] = this.isSelected;
return data;
}
}

@ -67,7 +67,7 @@ class RRTMainScreenState extends State<RRTMainScreen> with SingleTickerProviderS
return Center(child: CircularProgressIndicator()); return Center(child: CircularProgressIndicator());
// else if(viewModel.state == ViewState.Error) // else if(viewModel.state == ViewState.Error)
} else if (viewModel.rrtServiceData != null && viewModel.rrtServiceData.servicePrice != null) { } else if (viewModel.rrtServiceData != null) {
return Column( return Column(
children: [tabBar(), Expanded(child: contentPager())], children: [tabBar(), Expanded(child: contentPager())],
); );
@ -127,7 +127,7 @@ class RRTMainScreenState extends State<RRTMainScreen> with SingleTickerProviderS
onPageChanged: onPageChanged, onPageChanged: onPageChanged,
controller: pageController, controller: pageController,
children: [ children: [
RRTRequestPage(servicePrice: viewModel.rrtServiceData.servicePrice, pendingOrders: viewModel.rrtServiceData.pendingOrders), RRTRequestPage(servicePrice: viewModel.rrtServiceData.servicePrice, pendingOrders: viewModel.rrtServiceData.pendingOrders, procedure: viewModel.rrtServiceData.procedure),
RRTLogPage(orders: viewModel.rrtServiceData.completedOrders), RRTLogPage(orders: viewModel.rrtServiceData.completedOrders),
], ],
); );

@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
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/er/rrt-view-model.dart'; import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/rrt/procedure_model.dart';
import 'package:diplomaticquarterapp/models/rrt/service_price.dart'; import 'package:diplomaticquarterapp/models/rrt/service_price.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/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
@ -28,8 +29,8 @@ import 'rrt-place-order.dart';
class RRTRequestPickupAddressPage extends StatefulWidget { class RRTRequestPickupAddressPage extends StatefulWidget {
final ServicePrice servicePrice; final ServicePrice servicePrice;
final ProcedureModel selectedProcedure;
RRTRequestPickupAddressPage({@required this.servicePrice}); RRTRequestPickupAddressPage({@required this.servicePrice, @required this.selectedProcedure});
@override @override
State<StatefulWidget> createState() => RRTRequestPickupAddressPageState(); State<StatefulWidget> createState() => RRTRequestPickupAddressPageState();
@ -145,7 +146,6 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
Container( Container(
margin: EdgeInsets.only(left: 12, right: 12, bottom: 12, top: 12), margin: EdgeInsets.only(left: 12, right: 12, bottom: 12, top: 12),
decoration: cardRadius(12), decoration: cardRadius(12),
child: Container( child: Container(
child: InkWell( child: InkWell(
onTap: () => confirmSelectLocationDialog(myAddresses), onTap: () => confirmSelectLocationDialog(myAddresses),
@ -253,13 +253,7 @@ class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage
return Padding( return Padding(
padding: const EdgeInsets.all(0.0), padding: const EdgeInsets.all(0.0),
child: DefaultButton(TranslationBase.of(context).continues, () { child: DefaultButton(TranslationBase.of(context).continues, () {
Navigator.push( Navigator.push(context, FadePage(page: RRTPlaceOrderPage(selectedAddress: selectedAddress, servicePrice: widget.servicePrice, selectedProcedure: widget.selectedProcedure)));
context,
FadePage(
page: RRTPlaceOrderPage(
selectedAddress: selectedAddress,
servicePrice: widget.servicePrice,
)));
}), }),
); );
} }

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
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/er/rrt-view-model.dart'; import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/rrt/procedure_model.dart';
import 'package:diplomaticquarterapp/models/rrt/service_price.dart'; import 'package:diplomaticquarterapp/models/rrt/service_price.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/Dialog/confirm_dialog.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/Dialog/confirm_dialog.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';
@ -23,8 +24,8 @@ class RRTPlaceOrderPage extends StatelessWidget {
RRTViewModel viewModel; RRTViewModel viewModel;
AddressInfo selectedAddress; AddressInfo selectedAddress;
final ServicePrice servicePrice; final ServicePrice servicePrice;
final ProcedureModel selectedProcedure;
RRTPlaceOrderPage({@required this.selectedAddress, @required this.servicePrice}); RRTPlaceOrderPage({@required this.selectedAddress, @required this.servicePrice, @required this.selectedProcedure});
TextEditingController noteController = TextEditingController(text: ''); TextEditingController noteController = TextEditingController(text: '');
BuildContext _context; BuildContext _context;
@ -89,7 +90,7 @@ class RRTPlaceOrderPage extends StatelessWidget {
height: 5, height: 5,
), ),
Text( Text(
"${servicePrice.totalPrice ?? '- - -'} ${localize.sar}", "${selectedProcedure.patientShareWithTax ?? '- - -'} ${localize.sar}",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18), style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
), ),
], ],
@ -178,7 +179,7 @@ class RRTPlaceOrderPage extends StatelessWidget {
params['longitude'] = latlng.longitude; params['longitude'] = latlng.longitude;
params['additionalDetails'] = noteController.text; params['additionalDetails'] = noteController.text;
params['nationality'] = projectViewModel.user.nationalityID; params['nationality'] = projectViewModel.user.nationalityID;
params['paymentAmount'] = servicePrice.totalPrice; params['PatientER_RealRRT_InsertProceduresList'] = selectedProcedure;
// var response = await viewModel.createOrder(params); // var response = await viewModel.createOrder(params);
// var requestId = await viewModel.createOrder(params); // var requestId = await viewModel.createOrder(params);

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart'; import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/models/rrt/procedure_model.dart';
import 'package:diplomaticquarterapp/models/rrt/service_price.dart'; import 'package:diplomaticquarterapp/models/rrt/service_price.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-order-list-item.dart'; import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-order-list-item.dart';
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';
@ -18,8 +19,8 @@ import 'package:flutter/material.dart';
class RRTRequestPage extends StatefulWidget { class RRTRequestPage extends StatefulWidget {
final List<GetCMCAllOrdersResponseModel> pendingOrders; final List<GetCMCAllOrdersResponseModel> pendingOrders;
final ServicePrice servicePrice; final ServicePrice servicePrice;
final List<ProcedureModel> procedure;
RRTRequestPage({this.pendingOrders, this.servicePrice}); RRTRequestPage({this.pendingOrders, this.servicePrice, this.procedure});
@override @override
State<StatefulWidget> createState() => RRTRequestPageState(); State<StatefulWidget> createState() => RRTRequestPageState();
@ -28,7 +29,7 @@ class RRTRequestPage extends StatefulWidget {
class RRTRequestPageState extends State<RRTRequestPage> { class RRTRequestPageState extends State<RRTRequestPage> {
bool acceptTerms = false; bool acceptTerms = false;
RRTViewModel viewModel; RRTViewModel viewModel;
dynamic selectedProcedure;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<RRTViewModel>( return BaseView<RRTViewModel>(
@ -52,6 +53,13 @@ class RRTRequestPageState extends State<RRTRequestPage> {
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15), padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
children: [ children: [
serviceDescription(context), serviceDescription(context),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
child: Text(
TranslationBase.of(context).selectProcedure,
style: TextStyle(fontWeight: FontWeight.bold),
)),
procedureList(context),
SizedBox(height: 20), SizedBox(height: 20),
priceTable(context), priceTable(context),
@ -94,11 +102,32 @@ class RRTRequestPageState extends State<RRTRequestPage> {
), ),
); );
Widget procedureList(BuildContext context) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 0.0),
child: Column(
children: widget.procedure
.map((e) => Row(
children: [
Radio(
value: e,
groupValue: selectedProcedure,
onChanged: (v) {
setState(() {
this.selectedProcedure = v;
});
}),
Text(e.procedureName)
],
))
.toList(),
),
);
Widget priceTable(BuildContext context) { Widget priceTable(BuildContext context) {
var radius = Radius.circular(8); var radius = Radius.circular(8);
String amount = widget.servicePrice.price.toString(); String amount = selectedProcedure != null ? selectedProcedure.patientShare.toString() : '0';
String vat = widget.servicePrice.vat.toString(); String vat = selectedProcedure != null ? selectedProcedure.patientTaxAmount.toString() : '0';
String total = widget.servicePrice.totalPrice.toString(); String total = selectedProcedure != null ? selectedProcedure.patientShareWithTax.toString() : '0';
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
@ -201,12 +230,7 @@ class RRTRequestPageState extends State<RRTRequestPage> {
} }
goToPickupAddress() async { goToPickupAddress() async {
Navigator.push( Navigator.push(context, FadePage(page: RRTRequestPickupAddressPage(servicePrice: widget.servicePrice, selectedProcedure: selectedProcedure)));
context,
FadePage(
page: RRTRequestPickupAddressPage(
servicePrice: widget.servicePrice,
)));
} }
deleteOrder(GetCMCAllOrdersResponseModel order) async { deleteOrder(GetCMCAllOrdersResponseModel order) async {

@ -2833,6 +2833,7 @@ class TranslationBase {
String get connectSubtitle => localizedValues["connectSubtitle"][locale.languageCode]; String get connectSubtitle => localizedValues["connectSubtitle"][locale.languageCode];
String get declineLbl => localizedValues["declineLbl"][locale.languageCode]; String get declineLbl => localizedValues["declineLbl"][locale.languageCode];
String get covidConsent => localizedValues["covidConsent"][locale.languageCode]; String get covidConsent => localizedValues["covidConsent"][locale.languageCode];
String get selectProcedure => localizedValues["selectProcedure"][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

Loading…
Cancel
Save