Compare commits

..

12 Commits

@ -1,4 +1,4 @@
'# diplomaticquarterapp # diplomaticquarterapp
A new Flutter application. A new Flutter application.

@ -142,7 +142,7 @@ dependencies {
// exclude group: 'com.google.protobuf',module: 'protobuf-javalite' // exclude group: 'com.google.protobuf',module: 'protobuf-javalite'
// exclude group: 'com.google.protobuf',module: 'protobuf-lite' // exclude group: 'com.google.protobuf',module: 'protobuf-lite'
// }) // })
implementation 'pub.devrel:easypermissions:3.0.0' implementation 'pub.devrel:easypermissions:0.4.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.guava:guava:27.0.1-android'
@ -167,7 +167,7 @@ dependencies {
implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1" implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1" implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
// implementation "org.jetbrains.anko:anko-commons:0.10.4" implementation "org.jetbrains.anko:anko-commons:0.10.4"
implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM
implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0' implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android

@ -22,6 +22,7 @@ import com.github.kittinunf.fuel.httpPost
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
import org.jetbrains.anko.doAsyncResult
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
@ -207,6 +208,7 @@ fun <T>httpPost(url: String, body: Map<String, Any?>, onSuccess: (response: HTTP
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.header("Allow", "*/*") .header("Allow", "*/*")
.response { request, response, result -> .response { request, response, result ->
result.doAsyncResult { }
result.fold({ data -> result.fold({ data ->
val dataString = String(data) val dataString = String(data)
if (isJSONValid(dataString)) { if (isJSONValid(dataString)) {

@ -11,8 +11,7 @@ buildscript {
repositories { repositories {
google() google()
// jcenter() jcenter()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' } maven { url 'https://developer.huawei.com/repo/' }
// maven { // maven {
@ -38,9 +37,6 @@ allprojects {
maven { maven {
url 'https://developer.huawei.com/repo/' url 'https://developer.huawei.com/repo/'
} }
maven {
url 'https://mvnrepository.com/artifact/'
}
maven { maven {
url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local" url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
} }

@ -1,7 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="21.035" height="25.699" viewBox="0 0 21.035 25.699"> <svg xmlns="http://www.w3.org/2000/svg" width="21.035" height="25.699" viewBox="0 0 21.035 25.699">
<g id="file_4_" data-name="file (4)" transform="translate(0 0)"> <g id="file_4_" data-name="file (4)" transform="translate(0 0)">
<path id="Path_4376" data-name="Path 4376" d="M199.117,108.4h.751v18.461a2.228,2.228,0,0,0,2.225,2.225h13.668v.684a1.42,1.42,0,0,1-1.42,1.42H199.12a1.42,1.42,0,0,1-1.42-1.42V109.82A1.418,1.418,0,0,1,199.117,108.4Z" transform="translate(-197.7 -105.491)" fill="#00000"/> <path id="Path_4376" data-name="Path 4376" d="M199.117,108.4h.751v18.461a2.228,2.228,0,0,0,2.225,2.225h13.668v.684a1.42,1.42,0,0,1-1.42,1.42H199.12a1.42,1.42,0,0,1-1.42-1.42V109.82A1.418,1.418,0,0,1,199.117,108.4Z" transform="translate(-197.7 -105.491)" fill="#989898"/>
<path id="Path_4377" data-name="Path 4377" d="M95.931,22.79H88.32a1.42,1.42,0,0,1-1.42-1.42V1.42A1.42,1.42,0,0,1,88.32,0H98.462V.47a1.378,1.378,0,0,0-.008.15V4.509a2,2,0,0,0,2,2h3.889c.04,0,.083,0,.123-.005h.494V21.371a1.42,1.42,0,0,1-1.42,1.42H95.931Zm-.287-4.825h4.962a.671.671,0,0,0,0-1.342H95.641a.671.671,0,1,0,0,1.342Zm-4.965-3.424h9.927a.671.671,0,0,0,0-1.342H90.679a.671.671,0,0,0,0,1.342Zm9.927-4.978H90.679a.671.671,0,0,0,0,1.342h9.927a.671.671,0,0,0,0-1.342Z" transform="translate(-83.924 0)" fill="#00000"/> <path id="Path_4377" data-name="Path 4377" d="M95.931,22.79H88.32a1.42,1.42,0,0,1-1.42-1.42V1.42A1.42,1.42,0,0,1,88.32,0H98.462V.47a1.378,1.378,0,0,0-.008.15V4.509a2,2,0,0,0,2,2h3.889c.04,0,.083,0,.123-.005h.494V21.371a1.42,1.42,0,0,1-1.42,1.42H95.931Zm-.287-4.825h4.962a.671.671,0,0,0,0-1.342H95.641a.671.671,0,1,0,0,1.342Zm-4.965-3.424h9.927a.671.671,0,0,0,0-1.342H90.679a.671.671,0,0,0,0,1.342Zm9.927-4.978H90.679a.671.671,0,0,0,0,1.342h9.927a.671.671,0,0,0,0-1.342Z" transform="translate(-83.924 0)" fill="#989898"/>
<path id="Path_4378" data-name="Path 4378" d="M92.626,6.481h-3.9A1.191,1.191,0,0,1,87.546,5.3V1.4a.6.6,0,0,1,.6-.6.582.582,0,0,1,.419.177L93.05,5.462A.6.6,0,0,1,92.626,6.481Z" transform="translate(-72.209 -0.779)" fill="#00000"/> <path id="Path_4378" data-name="Path 4378" d="M92.626,6.481h-3.9A1.191,1.191,0,0,1,87.546,5.3V1.4a.6.6,0,0,1,.6-.6.582.582,0,0,1,.419.177L93.05,5.462A.6.6,0,0,1,92.626,6.481Z" transform="translate(-72.209 -0.779)" fill="#989898"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@ -1,6 +1,5 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
final Color? secondaryColor = appColor; final Color? secondaryColor = Colors.red[800];
final Color? dividerColor = Colors.grey[600]; final Color? dividerColor = Colors.grey[600];

@ -20,10 +20,10 @@ var PACKAGES_SHOPPING_CART = '/api/shopping_cart_items';
var PACKAGES_ORDERS = '/api/orders'; var PACKAGES_ORDERS = '/api/orders';
var PACKAGES_ORDER_HISTORY = '/api/orders/items'; var PACKAGES_ORDER_HISTORY = '/api/orders/items';
var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara'; var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
// var BASE_URL = 'http://10.50.100.198:2018/'; // var BASE_URL = 'http://10.50.100.198:1022/';
// var BASE_URL = 'http://10.50.100.198:4422/'; // var BASE_URL = 'http://10.50.100.198:4422/';
var BASE_URL = 'https://uat.hmgwebservices.com/'; // var BASE_URL = 'https://uat.hmgwebservices.com/';
// var BASE_URL = 'https://hmgwebservices.com/'; var BASE_URL = 'https://hmgwebservices.com/';
// var BASE_URL = 'http://10.20.200.111:1010/'; // var BASE_URL = 'http://10.20.200.111:1010/';
// var BASE_URL = 'https://orash.cloudsolutions.com.sa/'; // var BASE_URL = 'https://orash.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/'; // var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/';
@ -601,9 +601,9 @@ var GET_DENTAL_APPOINTMENT_INVOICE = "Services/Patients.svc/REST/HIS_eInvoiceFor
var SEND_DENTAL_APPOINTMENT_INVOICE_EMAIL = "Services/Notifications.svc/REST/SendInvoiceForDental"; var SEND_DENTAL_APPOINTMENT_INVOICE_EMAIL = "Services/Notifications.svc/REST/SendInvoiceForDental";
var GET_TAMARA_PLAN = 'https://mdlaboratories.com/tamaralive/Home/GetInstallments'; var GET_TAMARA_PLAN = 'https://mdlaboratories.com/tamara/Home/GetInstallments';
var GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamaralive/api/OnlineTamara/order_status?orderid='; var GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamara/api/OnlineTamara/order_status?orderid=';
var UPDATE_TAMARA_STATUS = 'Services/PayFort_Serv.svc/REST/Tamara_UpdateRequestStatus'; var UPDATE_TAMARA_STATUS = 'Services/PayFort_Serv.svc/REST/Tamara_UpdateRequestStatus';
@ -665,13 +665,23 @@ var GET_WE_CARE_TOUR_URL = 'Services/Consent.svc/Rest/Consent_VirtualJurny_Url_G
var GET_DENTAL_INSTRUCTIONS = 'Services/OUTPs.svc/Rest/getProcedureNotification'; var GET_DENTAL_INSTRUCTIONS = 'Services/OUTPs.svc/Rest/getProcedureNotification';
var GET_ER_ONLINE_PAYMENT_DETAILS = 'Services/OUTPs.svc/Rest/Outp_GetPatientPaymentInformationForERClinic';
var AUTO_GENERATE_INVOICE_ER = 'Services/OUTPs.svc/Rest/Outp_AutoGenerateInvoiceForER';
var CHECK_IF_PATIENT_ARRIVED_ER_ONLINE_CHECKIN = 'Services/OUTPs.svc/Rest/IsPatientArrived';
var CHECK_PATIENT_ER_CLINIC_BALANCE_AMOUNT = 'Services/OUTPs.svc/Rest/getPatientAdvanceBalanceAmountByClinic';
var GET_PROJECT_FROM_NFC = 'Services/OUTPs.svc/Rest/GetProjectByNFC';
//PAYFORT //PAYFORT
var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails"; var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails";
var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse"; var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse";
// var payFortEnvironment = FortEnvironment.production; var payFortEnvironment = FortEnvironment.production;
// var applePayMerchantId = "merchant.com.hmgwebservices"; var applePayMerchantId = "merchant.com.hmgwebservices";
var payFortEnvironment = FortEnvironment.test; // var payFortEnvironment = FortEnvironment.test;
var applePayMerchantId = "merchant.com.hmgwebservices.uat"; // var applePayMerchantId = "merchant.com.hmgwebservices.uat";
class AppGlobal { class AppGlobal {
static var context; static var context;

@ -116,13 +116,13 @@ const Map localizedValues = {
"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', '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": "الدكتور سليمان الحبيب لتطبيقات الهاتف"},
"king-khalid-university": {"en": "King Khalid University", "ar": "جامعة الملك خالد"}, "dr-sulaiman-text": {"en": "Dr. Sulaiman Al Habib", "ar": "د. سليمان الحبيب"},
'welcome_text2': {'en': 'Have you previously visited the hospitals or medical centers of Dr. Sulaiman Al Habib?', 'ar': 'هل قمت مسبقا بزيارة مستشفيات او مراكز الدكتور سليمان الحبيب الطبية ؟'}, 'welcome_text2': {'en': 'Have you previously visited the hospitals or medical centers of Dr. Sulaiman Al Habib?', 'ar': 'هل قمت مسبقا بزيارة مستشفيات او مراكز الدكتور سليمان الحبيب الطبية ؟'},
'yes': {'en': 'Yes', 'ar': 'نعم'}, 'yes': {'en': 'Yes', 'ar': 'نعم'},
'no': {'en': 'No', 'ar': 'لا'}, 'no': {'en': 'No', 'ar': 'لا'},
@ -269,7 +269,6 @@ const Map localizedValues = {
"register-info-family": {"en": "How would like to add the new member?", "ar": "كيف ترغب باضافة العضو الجديد؟"}, "register-info-family": {"en": "How would like to add the new member?", "ar": "كيف ترغب باضافة العضو الجديد؟"},
"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': 'الملف الطبي الالكتروني'},
"MyMedicalFiles": {"en": "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': 'الرعاية الصحية المنزلية'},
@ -494,7 +493,7 @@ const Map localizedValues = {
"ar": "ar":
"توفر هذه الخدمة مجموعه من خدمات الرعايه الصحيه المنزلية و متابعه مستمره وشامله للذين لا يستطيعون الوصول للمنشات الصحيه في اماكن اقامتهم (التحاليل المخبرية الاشعة التطعيمات العلاج الطبيعي) ... " "توفر هذه الخدمة مجموعه من خدمات الرعايه الصحيه المنزلية و متابعه مستمره وشامله للذين لا يستطيعون الوصول للمنشات الصحيه في اماكن اقامتهم (التحاليل المخبرية الاشعة التطعيمات العلاج الطبيعي) ... "
}, },
"LoginRegister": {"en": "Login", "ar": "دخول"}, "LoginRegister": {"en": "Login/Register", "ar": "دخول / تسجيل"},
"OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"}, "OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"},
"info-lab": { "info-lab": {
"en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", "en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.",
@ -539,7 +538,6 @@ const Map localizedValues = {
"review": {"en": " reviews", "ar": "تقييمات"}, "review": {"en": " reviews", "ar": "تقييمات"},
"viewMedicalFile": {"en": "View Details", "ar": "عرض الملف الطبي"}, "viewMedicalFile": {"en": "View Details", "ar": "عرض الملف الطبي"},
"viewAllServices": {"en": "View All Services", "ar": "عرض جميع الخدمات"}, "viewAllServices": {"en": "View All Services", "ar": "عرض جميع الخدمات"},
"allServices": {"en": "All Services", "ar": "جميع الخدمات"},
"medicalFile": {"en": "Medical File", "ar": "ملفي الطبي"}, "medicalFile": {"en": "Medical File", "ar": "ملفي الطبي"},
"verified": {"en": "Verified", "ar": "تم التحقق"}, "verified": {"en": "Verified", "ar": "تم التحقق"},
"checkup": {"en": "Checkup", "ar": "فحص"}, "checkup": {"en": "Checkup", "ar": "فحص"},
@ -552,7 +550,7 @@ const Map localizedValues = {
"erservices": {"en": "Emergency", "ar": "الطوارئ"}, "erservices": {"en": "Emergency", "ar": "الطوارئ"},
"services2": {"en": "Services", "ar": "خدمات"}, "services2": {"en": "Services", "ar": "خدمات"},
"cantSeeProfile": {"en": "To view your medical profile, please log in or register now", "ar": "لتصفح ملفك الطبي الرجاء تسجيل الدخول أو التسجيل الآن"}, "cantSeeProfile": {"en": "To view your medical profile, please log in or register now", "ar": "لتصفح ملفك الطبي الرجاء تسجيل الدخول أو التسجيل الآن"},
"loginRegisterNow": {"en": "Login Now", "ar": "تسجيل الدخول الآن"}, "loginRegisterNow": {"en": "Login or Register Now", "ar": "تسجيل الدخول أو التسجيل الآن"},
"HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"}, "HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"},
"ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"}, "ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"},
"comprehensive": {"en": "Comprehensive", "ar": "شامل"}, "comprehensive": {"en": "Comprehensive", "ar": "شامل"},
@ -1815,37 +1813,37 @@ const Map localizedValues = {
"ar": "الرجاء السماح لتطبيق مجموعة الحبيب الطبية للظهورعلى سطح الشاشة عند استلام الاتصال من الطبيب لخدمة اللايف كير" "ar": "الرجاء السماح لتطبيق مجموعة الحبيب الطبية للظهورعلى سطح الشاشة عند استلام الاتصال من الطبيب لخدمة اللايف كير"
}, },
"cameraPermissionDialog": { "cameraPermissionDialog": {
"en": "King Khalid University app needs to access Camera to enable virtual consultation between patient & doctor, attach images and scan QR for parking service.", "en": "Dr. Al Habib app needs to access Camera to enable virtual consultation between patient & doctor, attach images and scan QR for parking service.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى الكاميرا لتمكين الاستشارة الافتراضية بين المريض والطبيب ، وإرفاق الصور ومسح QR لخدمة وقوف السيارات." "ar": "يحتاج تطبيق دكتور الحبيب الى صلاحية الوصول إلى الكاميرا لخدمة الاستشارة الافتراضية بين المراجع والطبيب وإرفاق الصور ومسح رمز الاستجابة السريع لخدمة مواقف السيارات."
}, },
"galleryPermission": { "galleryPermission": {
"en": "King Khalid University app needs to access Read & write external storage to upload images & documents in the E-Referral module and renew and update the insurance cards.", "en": "Dr. Al Habib app needs to access Read & write external storage to upload images & documents in the E-Referral module and renew and update the insurance cards.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى وحدة التخزين الخارجية للقراءة والكتابة لتحميل الصور والمستندات في وحدة الإحالة الإلكترونية وتجديد وتحديث بطاقات التأمين." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول إلى معرض الصور وذلك لتحميل الصور والمستندات لخدمة الإحالة الإلكترونية وكذلك لخدمة تجديد بطاقات التأمين وتحديثها."
}, },
"locationPermissionDialog": { "locationPermissionDialog": {
"en": "en":
"King Khalid University app collects location data to show the nearest HMG hospitals and ER Locations and provides health care services to your location and Health weather indicators service and the medication delivery.", "Dr. Al Habib app collects location data to show the nearest HMG hospitals and ER Locations and provides health care services to your location and Health weather indicators service and the medication delivery.",
"ar": "يجمع تطبيق جامعة الملك خالد بيانات الموقع لإظهار أقرب مستشفيات المجموعة ومواقع الطوارئ ويوفر خدمات الرعاية الصحية لموقعك وخدمة مؤشرات الطقس الصحي وتوصيل الأدوية." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى الموقع لإظهار أقرب مستشفيات المجموعة، مواقع الطوارئ، تقديم خدمات الرعاية الصحية إلى موقعك، خدمة مؤشرات الطقس الصحية وكذلك خدمة توصيل الأدوية."
}, },
"calendarPermission": { "calendarPermission": {
"en": "King Khalid University app collects calendar data to modify and set reminders for Appointments", "en": "Dr. Al Habib app collects calendar data to modify and set reminders for Appointments",
"ar": "يقوم تطبيق جامعة الملك خالد بجمع بيانات التقويم لتعديل وتعيين تذكيرات للمواعيد" "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى التقويم وذلك لاضافة تذكيرات بالمواعيد في التقويم."
}, },
"recordAudioPermission": { "recordAudioPermission": {
"en": "King Khalid University app needs audio permission to enable voice command features.", "en": "Dr. Al Habib app needs audio permission to enable voice command features.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى إذن صوتي لتمكين ميزات الأوامر الصوتية." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى الصوت لتفعيل خدمة الأوامر الصوتية."
}, },
"wifiPermission": { "wifiPermission": {
"en": "King Khalid University app needs to access WiFi state permission to connect to the HMG WiFi network from within the app when you visit the hospital.", "en": "Dr. Al Habib app needs to access WiFi state permission to connect to the HMG WiFi network from within the app when you visit the hospital.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى إذن حالة WiFi للاتصال بشبكة HMG WiFi من داخل التطبيق عند زيارة المستشفى." "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى الواي فاي للاتصال بشبكة الواي فاي في المجموعة عند زيارة المستشفى."
}, },
"physicalActivityPermission": { "physicalActivityPermission": {
"en": "King Khalid University app collects physical activity data to read heart rate, steps & distance from your smartwatch & send it to your doctor.", "en": "Dr. Al Habib app collects physical activity data to read heart rate, steps & distance from your smartwatch & send it to your doctor.",
"ar": "يجمع تطبيق جامعة الملك خالد بيانات النشاط البدني لقراءة معدل ضربات القلب والخطوات والمسافة من ساعتك الذكية وإرسالها إلى طبيبك." "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى بيانات النشاط البدني لقراءة معدل ضربات القلب والخطوات والمسافة من ساعتك الذكية وتحميلها على ملفك الطبي حتى يتمكن الطبيب من الاطلاع عليها."
}, },
"bluetoothPermission": { "bluetoothPermission": {
"en": "King Khalid University app needs to access Bluetooth permission to connect blood pressure & blood sugar devices with the app to analyze the data", "en": "Dr. Al Habib app needs to access Bluetooth permission to connect blood pressure & blood sugar devices with the app to analyze the data",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الحصول على إذن Bluetooth لتوصيل أجهزة ضغط الدم وسكر الدم بالتطبيق لتحليل البيانات" "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى البلوتوث لربط أجهزة ضغط الدم وسكر الدم بالتطبيق لتحليل البيانات وتحميلها على ملفك الطبي حتى يتمكن الطبيب من الاطلاع عليها."
}, },
"privacyPolicy": {"en": "Privacy Policy", "ar": "سياسة الخصوصية"}, "privacyPolicy": {"en": "Privacy Policy", "ar": "سياسة الخصوصية"},
"termsConditions": {"en": "Terms & Conditions", "ar": "الأحكام والشروط"}, "termsConditions": {"en": "Terms & Conditions", "ar": "الأحكام والشروط"},

@ -41,7 +41,6 @@ class DoctorList {
dynamic serviceID; dynamic serviceID;
String? setupID; String? setupID;
List<String>? speciality; List<String>? speciality;
List<String>? specialityN;
dynamic workingHours; dynamic workingHours;
dynamic decimalDoctorRate; dynamic decimalDoctorRate;
@ -88,7 +87,6 @@ class DoctorList {
this.serviceID, this.serviceID,
this.setupID, this.setupID,
this.speciality, this.speciality,
this.specialityN,
this.workingHours, this.workingHours,
this.decimalDoctorRate}); this.decimalDoctorRate});
@ -135,7 +133,6 @@ class DoctorList {
serviceID = json['ServiceID']; serviceID = json['ServiceID'];
setupID = json['SetupID']; setupID = json['SetupID'];
if (json.containsKey('Speciality') && json['Speciality'] != null) speciality = json['Speciality'].cast<String>(); if (json.containsKey('Speciality') && json['Speciality'] != null) speciality = json['Speciality'].cast<String>();
if (json.containsKey('SpecialityN') && json['SpecialityN'] != null) specialityN = json['SpecialityN'].cast<String>();
workingHours = json['WorkingHours']; workingHours = json['WorkingHours'];
decimalDoctorRate = json['DecimalDoctorRate']; decimalDoctorRate = json['DecimalDoctorRate'];
} }
@ -183,7 +180,6 @@ class DoctorList {
data['ServiceID'] = this.serviceID; data['ServiceID'] = this.serviceID;
data['SetupID'] = this.setupID; data['SetupID'] = this.setupID;
data['Speciality'] = this.speciality; data['Speciality'] = this.speciality;
data['SpecialityN'] = this.specialityN;
data['WorkingHours'] = this.workingHours; data['WorkingHours'] = this.workingHours;
data['DecimalDoctorRate'] = this.decimalDoctorRate; data['DecimalDoctorRate'] = this.decimalDoctorRate;
return data; return data;

@ -0,0 +1,96 @@
class EROnlineCheckInPaymentDetailsResponse {
num? cashPrice;
num? cashPriceTax;
num? cashPriceWithTax;
int? companyId;
String? companyName;
num? companyShareWithTax;
dynamic errCode;
int? groupID;
String? insurancePolicyNo;
String? message;
String? patientCardID;
num? patientShare;
num? patientShareWithTax;
num? patientTaxAmount;
int? policyId;
String? policyName;
String? procedureId;
String? procedureName;
dynamic setupID;
int? statusCode;
String? subPolicyNo;
EROnlineCheckInPaymentDetailsResponse(
{this.cashPrice,
this.cashPriceTax,
this.cashPriceWithTax,
this.companyId,
this.companyName,
this.companyShareWithTax,
this.errCode,
this.groupID,
this.insurancePolicyNo,
this.message,
this.patientCardID,
this.patientShare,
this.patientShareWithTax,
this.patientTaxAmount,
this.policyId,
this.policyName,
this.procedureId,
this.procedureName,
this.setupID,
this.statusCode,
this.subPolicyNo});
EROnlineCheckInPaymentDetailsResponse.fromJson(Map<String, dynamic> json) {
cashPrice = json['CashPrice'];
cashPriceTax = json['CashPriceTax'];
cashPriceWithTax = json['CashPriceWithTax'];
companyId = json['CompanyId'];
companyName = json['CompanyName'];
companyShareWithTax = json['CompanyShareWithTax'];
errCode = json['ErrCode'];
groupID = json['GroupID'];
insurancePolicyNo = json['InsurancePolicyNo'];
message = json['Message'];
patientCardID = json['PatientCardID'];
patientShare = json['PatientShare'];
patientShareWithTax = json['PatientShareWithTax'];
patientTaxAmount = json['PatientTaxAmount'];
policyId = json['PolicyId'];
policyName = json['PolicyName'];
procedureId = json['ProcedureId'];
procedureName = json['ProcedureName'];
setupID = json['SetupID'];
statusCode = json['StatusCode'];
subPolicyNo = json['SubPolicyNo'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['CashPrice'] = this.cashPrice;
data['CashPriceTax'] = this.cashPriceTax;
data['CashPriceWithTax'] = this.cashPriceWithTax;
data['CompanyId'] = this.companyId;
data['CompanyName'] = this.companyName;
data['CompanyShareWithTax'] = this.companyShareWithTax;
data['ErrCode'] = this.errCode;
data['GroupID'] = this.groupID;
data['InsurancePolicyNo'] = this.insurancePolicyNo;
data['Message'] = this.message;
data['PatientCardID'] = this.patientCardID;
data['PatientShare'] = this.patientShare;
data['PatientShareWithTax'] = this.patientShareWithTax;
data['PatientTaxAmount'] = this.patientTaxAmount;
data['PolicyId'] = this.policyId;
data['PolicyName'] = this.policyName;
data['ProcedureId'] = this.procedureId;
data['ProcedureName'] = this.procedureName;
data['SetupID'] = this.setupID;
data['StatusCode'] = this.statusCode;
data['SubPolicyNo'] = this.subPolicyNo;
return data;
}
}

@ -25,7 +25,6 @@ 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 '../../../../theme/theme_value.dart';
import '../dialogs/select_city_dialog.dart'; import '../dialogs/select_city_dialog.dart';
class NewEReferralStepThreePage extends StatefulWidget { class NewEReferralStepThreePage extends StatefulWidget {
@ -162,7 +161,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
color: appColor, color: CustomColors.accentColor,
), ),
), ),
), ),
@ -249,7 +248,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
children: [ children: [
Checkbox( Checkbox(
value: isPatientInsured, value: isPatientInsured,
activeColor: CustomColors.primaryColor, activeColor: CustomColors.accentColor,
onChanged: (bool? newValue) { onChanged: (bool? newValue) {
setState(() { setState(() {
isPatientInsured = newValue!; isPatientInsured = newValue!;
@ -343,7 +342,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
), ),

@ -669,7 +669,6 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails> with SingleTic
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -174,7 +174,7 @@ class _BMICalculatorState extends State<BMICalculator> {
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBMI(); calculateBMI();

@ -220,7 +220,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -254,7 +254,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -410,7 +410,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBmr(); calculateBmr();

@ -74,7 +74,7 @@ class BmrResultPage extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -98,7 +98,7 @@ class BmrResultPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -327,7 +327,7 @@ class _BodyFatState extends State<BodyFat> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -361,7 +361,7 @@ class _BodyFatState extends State<BodyFat> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -493,7 +493,7 @@ class _BodyFatState extends State<BodyFat> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBodyFat(); calculateBodyFat();

@ -78,7 +78,7 @@ class FatResult extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -96,7 +96,7 @@ class FatResult extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -156,7 +156,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -190,7 +190,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -344,7 +344,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: ageController.text.isNotEmpty ? int.parse(ageController.text) >120 ? Colors.grey : CustomColors.primaryColor : CustomColors.accentColor, color: ageController.text.isNotEmpty ? int.parse(ageController.text) >120 ? Colors.grey : CustomColors.accentColor : CustomColors.accentColor,
onTap: () { onTap: () {
if(ageController.text.isNotEmpty && int.parse(ageController.text) <121 && int.parse(_heightController.text)<250 && int.parse(_weightController.text) <200) if(ageController.text.isNotEmpty && int.parse(ageController.text) <121 && int.parse(_heightController.text)<250 && int.parse(_weightController.text) <200)
setState(() { setState(() {

@ -76,7 +76,7 @@ class CalorieResultPage extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -99,7 +99,7 @@ class CalorieResultPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -137,7 +137,7 @@ class _CarbsState extends State<Carbs> {
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
TranslationBase.of(context).notSure, TranslationBase.of(context).notSure,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.primaryColor, decoration: TextDecoration.underline), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.accentColor, decoration: TextDecoration.underline),
), ),
), ),
) )
@ -230,7 +230,7 @@ class _CarbsState extends State<Carbs> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
{ {

@ -74,7 +74,7 @@ class CarbsResult extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).seeListOfDoctor, label: TranslationBase.of(context).seeListOfDoctor,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -711,7 +711,6 @@ class _BookSuccessState extends State<BookSuccess> {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -569,15 +569,11 @@ class _DoctorProfileState extends State<DoctorProfile> with TickerProviderStateM
}); });
} }
navigateToLogin() async { navigateToLogin() {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
var data = await sharedPref.getObject(IMEI_USER_DATA); Navigator.of(context).pushNamed(
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN); WELCOME_LOGIN,
if (data != null) { );
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(LOGIN_TYPE);
}
} }
Future navigateToBookConfirm(context) async { Future navigateToBookConfirm(context) async {

@ -28,14 +28,14 @@ class _SearchState extends State<Search> with TickerProviderStateMixin {
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 2, vsync: this, initialIndex: widget.type, ); _tabController = new TabController(length: 2, vsync: this, initialIndex: widget.type);
super.initState(); super.initState();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.context = context; AppGlobal.context = context;
// ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
GAnalytics.TREATMENT_TYPE = null; // reset treatment type on start new booking GAnalytics.TREATMENT_TYPE = null; // reset treatment type on start new booking
return AppScaffold( return AppScaffold(
@ -56,13 +56,13 @@ class _SearchState extends State<Search> with TickerProviderStateMixin {
unselectedLabelColor: Color(0xff575757), unselectedLabelColor: Color(0xff575757),
labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
labelStyle: TextStyle( labelStyle: TextStyle(
fontFamily: context.read<ProjectViewModel>().isArabic ? 'Cairo' : 'Poppins', fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
), ),
unselectedLabelStyle: TextStyle( unselectedLabelStyle: TextStyle(
fontFamily: context.read<ProjectViewModel>().isArabic ? 'Cairo' : 'Poppins', fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins',
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
@ -70,14 +70,13 @@ class _SearchState extends State<Search> with TickerProviderStateMixin {
tabs: [Text(TranslationBase.of(context).clinicName), Text(TranslationBase.of(context).doctorName)], tabs: [Text(TranslationBase.of(context).clinicName), Text(TranslationBase.of(context).doctorName)],
onTap: (idx) { onTap: (idx) {
if (idx == 0) if (idx == 0)
context.read<ProjectViewModel>().analytics.appointment.book_appointment_by_clinic(); projectViewModel.analytics.appointment.book_appointment_by_clinic();
else else
context.read<ProjectViewModel>().analytics.appointment.book_appointment_by_doctor(); projectViewModel.analytics.appointment.book_appointment_by_doctor();
}, },
), ),
Expanded( Expanded(
child: TabBarView( child: TabBarView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
children: [ children: [
SearchByClinic(clnicIds: widget.clnicIds), SearchByClinic(clnicIds: widget.clnicIds),

@ -10,7 +10,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class SearchResults extends StatelessWidget { class SearchResults extends StatefulWidget {
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital; List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital;
bool isLiveCareAppointment; bool isLiveCareAppointment;
@ -18,16 +18,19 @@ class SearchResults extends StatelessWidget {
bool isDoctorNameSearch; bool isDoctorNameSearch;
OBGyneProcedureListResponse? obGyneProcedureListResponse; OBGyneProcedureListResponse? obGyneProcedureListResponse;
SearchResults( SearchResults({required this.doctorsList, required this.patientDoctorAppointmentListHospital, this.isObGyneAppointment = false, this.isDoctorNameSearch = false, required this.isLiveCareAppointment, this.obGyneProcedureListResponse});
{required this.doctorsList,
required this.patientDoctorAppointmentListHospital, @override
this.isObGyneAppointment = false, _SearchResultsState createState() => _SearchResultsState();
this.isDoctorNameSearch = false, }
required this.isLiveCareAppointment,
this.obGyneProcedureListResponse}); class _SearchResultsState extends State<SearchResults> {
List<DoctorList> tempList = [];
late ProjectViewModel projectViewModel;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).bookAppo, appBarTitle: TranslationBase.of(context).bookAppo,
isShowDecPage: false, isShowDecPage: false,
@ -35,9 +38,7 @@ class SearchResults extends StatelessWidget {
showNewAppBarTitle: true, showNewAppBarTitle: true,
showNewAppBar: true, showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGrey2Color, backgroundColor: CustomColors.appBackgroudGrey2Color,
body: patientDoctorAppointmentListHospital.isNotEmpty body: widget.patientDoctorAppointmentListHospital.isNotEmpty ? ListView.separated(
? ListView.separated(
addAutomaticKeepAlives: true,
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Container( return Container(
@ -47,35 +48,34 @@ class SearchResults extends StatelessWidget {
}, },
itemBuilder: (context, index) { itemBuilder: (context, index) {
return AppExpandableNotifier( return AppExpandableNotifier(
title: (patientDoctorAppointmentListHospital[index].distanceInKMs != "0") title: (widget.patientDoctorAppointmentListHospital[index].distanceInKMs != "0")
? patientDoctorAppointmentListHospital[index].filterName! + " - " + patientDoctorAppointmentListHospital[index].distanceInKMs! + " " + TranslationBase.of(context).km ? widget.patientDoctorAppointmentListHospital[index].filterName! + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs! + " " + TranslationBase.of(context).km
: patientDoctorAppointmentListHospital[index].filterName, : widget.patientDoctorAppointmentListHospital[index].filterName,
isTitleSingleLine: false, isTitleSingleLine: false,
isExpand: patientDoctorAppointmentListHospital.length == 1 ? true : false, isExpand: widget.patientDoctorAppointmentListHospital.length == 1 ? true : false,
bodyWidget: ListView.separated( bodyWidget: ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.only(bottom: 10, top: 10, left: 21, right: 21), padding: EdgeInsets.only(bottom: 10, top: 10, left: 21, right: 21),
itemBuilder: (context, _index) { itemBuilder: (context, _index) {
final doctor = patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList![_index]; final doctor = widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList![_index];
return DoctorView( return DoctorView(
doctor: doctor, doctor: doctor,
isLiveCareAppointment: isLiveCareAppointment, isLiveCareAppointment: widget.isLiveCareAppointment,
isObGyneAppointment: isObGyneAppointment, isObGyneAppointment: widget.isObGyneAppointment,
isDoctorNameSearch: isDoctorNameSearch, isDoctorNameSearch: widget.isDoctorNameSearch,
obGyneProcedureListResponse: obGyneProcedureListResponse, obGyneProcedureListResponse: widget.obGyneProcedureListResponse,
isShowDate: false, isShowDate: false,
onTap: () { onTap: () {
context.read<ProjectViewModel>().analytics.appointment.book_appointment_select_doctor(appointment_type: 'regular', doctor: doctor); projectViewModel.analytics.appointment.book_appointment_select_doctor(appointment_type: 'regular', doctor: doctor);
}); });
}, },
separatorBuilder: (context, index) => SizedBox(height: 14), separatorBuilder: (context, index) => SizedBox(height: 14),
itemCount: patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList!.length), itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList!.length),
); );
}, },
itemCount: patientDoctorAppointmentListHospital.length, itemCount: widget.patientDoctorAppointmentListHospital.length,
) ) : getNoDataWidget(context),
: getNoDataWidget(context),
); );
} }
} }

@ -4,8 +4,6 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart';
import 'package:diplomaticquarterapp/theme/colors.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/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -19,7 +17,6 @@ import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../MyAppointments/MyAppointments.dart';
import 'BookSuccess.dart'; import 'BookSuccess.dart';
class BookReminderPage extends StatefulWidget { class BookReminderPage extends StatefulWidget {
@ -209,13 +206,18 @@ class _BookReminderPageState extends State<BookReminderPage> {
} }
Future navigateToBookSuccess(BuildContext context) async { Future navigateToBookSuccess(BuildContext context) async {
Navigator.pop(context, null); Navigator.push(
Navigator.pushAndRemoveUntil(
context, context,
MaterialPageRoute(builder: (context) => LandingPage()), FadePage(
(Route<dynamic> route) => false, page: BookSuccess(
docObject: widget.docObject,
patientShareResponse: widget.patientShareResponse,
appoDateFormatted: widget.appoDateFormatted,
appoTimeFormatted: widget.appoTimeFormatted,
isCash: widget.isCash,
),
),
); );
Navigator.push(context, FadePage(page: MyAppointments()));
} }
Future<Map<Permission, PermissionStatus>> requestPermissions() async { Future<Map<Permission, PermissionStatus>> requestPermissions() async {

@ -69,7 +69,7 @@ class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> {
width: 150.0), width: 150.0),
), ),
Container( Container(
margin: EdgeInsets.only(left: 10.0, right: 8.0), margin: EdgeInsets.only(left: 10.0, right: 10.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [

@ -60,6 +60,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
final GlobalKey clinicDropdownKey = GlobalKey(); final GlobalKey clinicDropdownKey = GlobalKey();
final GlobalKey projectDropdownKey = GlobalKey(); final GlobalKey projectDropdownKey = GlobalKey();
TextEditingController ageController = new TextEditingController(); TextEditingController ageController = new TextEditingController();
late ProjectViewModel projectViewModel;
String radioValue = ""; String radioValue = "";
@ -69,14 +70,15 @@ class _SearchByClinicState extends State<SearchByClinic> {
void initState() { void initState() {
locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context); locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context);
WidgetsBinding.instance.addPostFrameCallback((_) => getClinicsList()); WidgetsBinding.instance.addPostFrameCallback((_) => getClinicsList());
checkPVM();
super.initState(); super.initState();
} }
void checkPVM(){ @override
if (context.read<ProjectViewModel>().isLogin) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
if (projectViewModel.isLogin) {
if (radioValue == null) { if (radioValue == null) {
if (context.read<ProjectViewModel>().user.gender == 1) { if (projectViewModel.user.gender == 1) {
radioValue = TranslationBase.of(context).male; radioValue = TranslationBase.of(context).male;
} else { } else {
radioValue = TranslationBase.of(context).female; radioValue = TranslationBase.of(context).female;
@ -86,20 +88,16 @@ class _SearchByClinicState extends State<SearchByClinic> {
radioValue = TranslationBase.of(context).female; radioValue = TranslationBase.of(context).female;
} }
if (ageController.text.isEmpty) { if (ageController.text.isEmpty) {
ageController.text = context.read<ProjectViewModel>().isLogin ? context.read<ProjectViewModel>().user!.age.toString() : ""; ageController.text = projectViewModel.isLogin ? projectViewModel.user!.age.toString() : "";
ageController.selection = TextSelection.fromPosition(TextPosition(offset: ageController.text.length)); ageController.selection = TextSelection.fromPosition(TextPosition(offset: ageController.text.length));
} }
}
@override
Widget build(BuildContext context) {
return Container( return Container(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
if (context.read<ProjectViewModel>().isLogin) if (projectViewModel.isLogin)
Column( Column(
children: [ children: [
Padding( Padding(
@ -248,7 +246,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
if (!nearestAppo) getDoctorsList(context); if (!nearestAppo) getDoctorsList(context);
} else {} } else {}
}); });
context.read<ProjectViewModel>().analytics.appointment.book_appointment_select_clinic(appointment_type: 'regular', clinic: clincs.clinicDescription); projectViewModel.analytics.appointment.book_appointment_select_clinic(appointment_type: 'regular', clinic: clincs.clinicDescription);
}); });
}, },
child: Container( child: Container(
@ -529,7 +527,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
} }
getProjectsList() { getProjectsList() {
int languageID = context.read<ProjectViewModel>().isArabic ? 1 : 2; int languageID = projectViewModel.isArabic ? 1 : 2;
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
List<HospitalsModel> projectsListLocal = []; List<HospitalsModel> projectsListLocal = [];
service service
@ -565,8 +563,8 @@ class _SearchByClinicState extends State<SearchByClinic> {
searchInfo.clinic = selectedClinic; searchInfo.clinic = selectedClinic;
searchInfo.date = DateTime.now(); searchInfo.date = DateTime.now();
if (context.read<ProjectViewModel>().isLogin) { if (projectViewModel.isLogin) {
if (context.read<ProjectViewModel>().user.age! > 12) { if (projectViewModel.user.age! > 12) {
navigateToDentalComplaints(context, searchInfo); navigateToDentalComplaints(context, searchInfo);
} else { } else {
callDoctorsSearchAPI(17); callDoctorsSearchAPI(17);
@ -603,7 +601,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
} }
callDoctorsSearchAPI(int clinicID) { callDoctorsSearchAPI(int clinicID) {
int languageID = context.read<ProjectViewModel>().isArabic ? 1 : 2; int languageID = projectViewModel.isArabic ? 1 : 2;
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<String> arr = []; List<String> arr = [];

@ -20,6 +20,7 @@ class SearchByDoctor extends StatefulWidget {
class _SearchByDoctorState extends State<SearchByDoctor> { class _SearchByDoctorState extends State<SearchByDoctor> {
TextEditingController doctorNameController = new TextEditingController(); TextEditingController doctorNameController = new TextEditingController();
late bool _isButtonDisabled; late bool _isButtonDisabled;
late ProjectViewModel projectViewModel;
@override @override
void initState() { void initState() {
@ -29,6 +30,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return Column( return Column(
children: [ children: [
Expanded( Expanded(
@ -71,7 +73,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
minWidth: MediaQuery.of(context).size.width, minWidth: MediaQuery.of(context).size.width,
height: 45.0, height: 45.0,
child: CustomTextButton( child: CustomTextButton(
backgroundColor: CustomColors.primaryColor, backgroundColor: CustomColors.accentColor,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
@ -88,7 +90,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
} }
getDoctorsList(BuildContext context) { getDoctorsList(BuildContext context) {
int languageID = context.read<ProjectViewModel>().isArabic ? 1 : 2; int languageID = projectViewModel.isArabic ? 1 : 2;
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
@ -148,7 +150,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
_searchDoctor(BuildContext context) { _searchDoctor(BuildContext context) {
getDoctorsList(context); getDoctorsList(context);
context.read<ProjectViewModel>().analytics.appointment.book_appointment_doctor_search(query: doctorNameController.text); projectViewModel.analytics.appointment.book_appointment_doctor_search(query: doctorNameController.text);
} }
navigateToSearchResults(context, List<DoctorList> docList, List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital) { navigateToSearchResults(context, List<DoctorList> docList, List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital) {

@ -23,7 +23,7 @@ import 'package:provider/provider.dart';
import '../DoctorProfile.dart'; import '../DoctorProfile.dart';
class DoctorView extends StatefulWidget { class DoctorView extends StatelessWidget {
final DoctorList doctor; final DoctorList doctor;
bool? isLiveCareAppointment; bool? isLiveCareAppointment;
bool isObGyneAppointment; bool isObGyneAppointment;
@ -45,29 +45,23 @@ class DoctorView extends StatefulWidget {
this.onTap, this.onTap,
this.obGyneProcedureListResponse}); this.obGyneProcedureListResponse});
@override
State<DoctorView> createState() => _DoctorViewState();
}
class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMixin {
late ProjectViewModel projectViewModel; late ProjectViewModel projectViewModel;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
super.build(context);
return InkWell( return InkWell(
onTap: () { onTap: () {
if (widget.isObGyneAppointment) { if (isObGyneAppointment) {
next(context); next(context);
} else { } else {
// if (doctor.clinicID == 17 && isDoctorNameSearch) { // if (doctor.clinicID == 17 && isDoctorNameSearch) {
// showDentalChiefComplaintsList(context); // showDentalChiefComplaintsList(context);
// } else // } else
if (widget.isShowFlag) { if (isShowFlag) {
getDoctorsProfile(context, widget.doctor, isAppo: true, isContinueDentalPlan: widget.isContinueDentalPlan); getDoctorsProfile(context, doctor, isAppo: true, isContinueDentalPlan: isContinueDentalPlan);
} }
(widget.onTap ?? () {})(); // For log analytics of doctor click from book appointment (onTap ?? () {})(); // For log analytics of doctor click from book appointment
} }
}, },
child: Container( child: Container(
@ -94,25 +88,23 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
widget.doctor.name ?? "", doctor.name ?? "",
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),
), ),
), ),
widget.isShowDate isShowDate ? Text(
? Text( DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(doctor.date)),
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(widget.doctor.date)),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
) ) : Container(),
: Container(),
], ],
), ),
if (widget.doctor.doctorTitle != null) SizedBox(height: 6), if (doctor.doctorTitle != null) SizedBox(height: 6),
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
LargeAvatar( LargeAvatar(
name: widget.doctor.name ?? "", name: doctor.name ?? "",
url: widget.doctor.doctorImageURL!, url: doctor.doctorImageURL!,
width: 48, width: 48,
height: 48, height: 48,
), ),
@ -122,25 +114,17 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
if (widget.doctor.clinicName != null) MyRichText(TranslationBase.of(context).clinic + ":", widget.doctor.clinicName!, context.read<ProjectViewModel>().isArabic), if (doctor.clinicName != null) MyRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName!, projectViewModel.isArabic),
if (widget.doctor.projectName != null) MyRichText(TranslationBase.of(context).branch, widget.doctor.projectName!, context.read<ProjectViewModel>().isArabic), if (doctor.projectName != null) MyRichText(TranslationBase.of(context).branch, doctor.projectName!, projectViewModel.isArabic),
if (!projectViewModel.isArabic) if (doctor.speciality != null && doctor.speciality!.length > 0)
if (widget.doctor.speciality != null && widget.doctor.speciality!.length > 0)
Text(
this.widget.doctor.speciality![0].trim(),
// getDoctorSpeciality(this.doctor.speciality).trim(),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
),
if (projectViewModel.isArabic)
if (widget.doctor.specialityN != null && widget.doctor.specialityN!.length > 0)
Text( Text(
this.widget.doctor.specialityN![0].trim(), this.doctor.speciality![0].trim(),
// getDoctorSpeciality(this.doctor.speciality).trim(), // getDoctorSpeciality(this.doctor.speciality).trim(),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
), ),
if (widget.doctor.nearestFreeSlot != null) if (doctor.nearestFreeSlot != null)
Text( Text(
getDate(widget.doctor.nearestFreeSlot), getDate(doctor.nearestFreeSlot),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff359846), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff359846), letterSpacing: -0.48, height: 18 / 12),
), ),
Row( Row(
@ -156,18 +140,9 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
itemSize: 20, itemSize: 20,
ignoreGestures: true, ignoreGestures: true,
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(Icons.star, color: CustomColors.accentColor,),
Icons.star, half: Icon(Icons.star_half, color: CustomColors.accentColor,),
color: CustomColors.accentColor, empty: Icon(Icons.star, color: CustomColors.accentColor,),
),
half: Icon(
Icons.star_half,
color: CustomColors.accentColor,
),
empty: Icon(
Icons.star,
color: CustomColors.accentColor,
),
), ),
tapOnlyMode: true, tapOnlyMode: true,
itemPadding: EdgeInsets.symmetric(horizontal: 4.0), itemPadding: EdgeInsets.symmetric(horizontal: 4.0),
@ -186,7 +161,7 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
// filledIcon: Icons.star, // filledIcon: Icons.star,
// emptyIcon: Icons.star_border, // emptyIcon: Icons.star_border,
// ), // ),
if (widget.isShowFlag) if (isShowFlag)
Icon( Icon(
Icons.arrow_forward, Icons.arrow_forward,
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
@ -208,13 +183,13 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
showDentalChiefComplaintsList(BuildContext context) { showDentalChiefComplaintsList(BuildContext context) {
HospitalsModel selectedHospital = new HospitalsModel(); HospitalsModel selectedHospital = new HospitalsModel();
selectedHospital.name = widget.doctor.projectName; selectedHospital.name = doctor.projectName;
ListClinicCentralized selectedClinic = new ListClinicCentralized(); ListClinicCentralized selectedClinic = new ListClinicCentralized();
selectedClinic.clinicDescription = widget.doctor.clinicName; selectedClinic.clinicDescription = doctor.clinicName;
SearchInfo searchInfo = new SearchInfo(); SearchInfo searchInfo = new SearchInfo();
searchInfo.ProjectID = widget.doctor.projectID; searchInfo.ProjectID = doctor.projectID;
searchInfo.ClinicID = widget.doctor.clinicID; searchInfo.ClinicID = doctor.clinicID;
searchInfo.date = DateTime.now(); searchInfo.date = DateTime.now();
searchInfo.hospital = selectedHospital; searchInfo.hospital = selectedHospital;
searchInfo.clinic = selectedClinic; searchInfo.clinic = selectedClinic;
@ -285,14 +260,8 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
} }
void next(BuildContext context) { void next(BuildContext context) {
Navigator.push( Navigator.push(context,
context, FadePage(page: ObGyneTimeSlots(projectID: doctor.projectID!, selectedClinicID: doctor.clinicID!, selectedDoctorID: doctor.doctorID!, obGyneProcedureListResponse: obGyneProcedureListResponse!)));
FadePage(
page: ObGyneTimeSlots(
projectID: widget.doctor.projectID!,
selectedClinicID: widget.doctor.clinicID!,
selectedDoctorID: widget.doctor.doctorID!,
obGyneProcedureListResponse: widget.obGyneProcedureListResponse!)));
} }
Future navigateToDoctorProfile(context, docObject, docProfile, {isAppo, bool isContinueDentalPlan = false}) async { Future navigateToDoctorProfile(context, docObject, docProfile, {isAppo, bool isContinueDentalPlan = false}) async {
@ -301,17 +270,13 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
FadePage( FadePage(
page: DoctorProfile( page: DoctorProfile(
doctor: docObject, doctor: docObject,
isLiveCareAppointment: widget.isLiveCareAppointment!, isLiveCareAppointment: isLiveCareAppointment!,
docProfileList: docProfile, docProfileList: docProfile,
isOpenAppt: isAppo, isOpenAppt: isAppo,
isDoctorNameSearch: widget.isDoctorNameSearch, isDoctorNameSearch: isDoctorNameSearch,
isContinueDentalPlan: isContinueDentalPlan, isContinueDentalPlan: isContinueDentalPlan,
), ),
), ),
); );
} }
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
} }

@ -54,7 +54,6 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)),
insetPadding: EdgeInsets.all(21), insetPadding: EdgeInsets.all(21),
child: ReminderDialog( child: ReminderDialog(
shouldPop: false,
onClick: (int i) async { onClick: (int i) async {
String text = ""; String text = "";
if (i == 0) { if (i == 0) {
@ -86,7 +85,6 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted,
scheduleDateTime: dateTime, scheduleDateTime: dateTime,
eventId: eventId); eventId: eventId);
Navigator.of(context).pop();
onSuccess(); onSuccess();
} }
} else { } else {
@ -102,9 +100,8 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
class ReminderDialog extends StatefulWidget { class ReminderDialog extends StatefulWidget {
Function? onClick; Function? onClick;
bool? shouldPop;
ReminderDialog({this.onClick, this.shouldPop = true}); ReminderDialog({this.onClick});
@override @override
_ReminderDialogState createState() => _ReminderDialogState(); _ReminderDialogState createState() => _ReminderDialogState();
@ -250,9 +247,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
TranslationBase.of(context).save, TranslationBase.of(context).save,
() { () {
widget.onClick!(i); widget.onClick!(i);
if(widget.shouldPop == true) {
Navigator.pop(context); Navigator.pop(context);
}
}, },
color: CustomColors.green, color: CustomColors.green,
), ),

@ -1,7 +1,6 @@
import 'package:diplomaticquarterapp/core/viewModels/contactus/livechat_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/contactus/livechat_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/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -111,7 +110,7 @@ class _HospitalsLiveChatPageState extends State<HospitalsLiveChatPage> {
TranslationBase.of(context).start, TranslationBase.of(context).start,
//Changed By Aamir URL //Changed By Aamir URL
chat!.isEmpty ? null : () => {launch(chat!)}, chat!.isEmpty ? null : () => {launch(chat!)},
color: appColor, color: Color(0xffD02127),
textColor: chat!.isEmpty ? Color(0xff000000) : Colors.white, textColor: chat!.isEmpty ? Color(0xff000000) : Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -243,7 +243,7 @@ class _AmbulanceRequestIndexPageState extends State<AmbulanceRequestIndexPage> {
width: 8, width: 8,
height: 8, height: 8,
decoration: containerRadius( decoration: containerRadius(
CustomColors.primaryColor, CustomColors.accentColor,
100, 100,
), ),
), ),

@ -0,0 +1,205 @@
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.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/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class EROnlineCheckInBookAppointment extends StatefulWidget {
const EROnlineCheckInBookAppointment();
@override
State<EROnlineCheckInBookAppointment> createState() => _EROnlineCheckInBookAppointmentState();
}
class _EROnlineCheckInBookAppointmentState extends State<EROnlineCheckInBookAppointment> with SingleTickerProviderStateMixin {
late ProjectViewModel projectViewModel;
List<HospitalsModel> projectsList = [];
final GlobalKey projectDropdownKey = GlobalKey();
HospitalsModel? selectedHospital;
String projectDropdownValue = "";
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
getProjectsList();
});
super.initState();
}
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).emergency + " ${TranslationBase.of(context).checkinOptions}",
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InkWell(
onTap: () {
openDropdown(projectDropdownKey);
},
child: Container(
width: double.infinity,
decoration: containerRadius(Colors.white, 12),
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12),
child: Row(
children: [
Flexible(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).selectHospital,
style: TextStyle(
fontSize: 11,
letterSpacing: -0.44,
fontWeight: FontWeight.w600,
),
),
Container(
height: 18,
child: DropdownButtonHideUnderline(
child: DropdownButton<HospitalsModel>(
key: projectDropdownKey,
hint: new Text(TranslationBase.of(context).selectHospital),
value: selectedHospital,
iconSize: 0,
isExpanded: true,
style: TextStyle(fontSize: 14, letterSpacing: -0.56, color: Colors.black),
items: projectsList.map((item) {
return new DropdownMenuItem<HospitalsModel>(
value: item,
child: new Text(item.name!),
);
}).toList(),
onChanged: (newValue) async {
setState(() {
selectedHospital = newValue!;
projectDropdownValue = newValue.mainProjectID.toString();
});
},
),
),
),
],
),
),
Icon(Icons.keyboard_arrow_down),
],
),
),
),
mHeight(16),
Container(
width: double.infinity,
decoration: containerRadius(Colors.white, 12),
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).clinicName,
style: TextStyle(
fontSize: 11,
letterSpacing: -0.44,
fontWeight: FontWeight.w600,
),
),
Text(
"ER Clinic",
style: TextStyle(fontSize: 14, letterSpacing: -0.56, color: Colors.black),
),
],
),
),
],
),
),
bottomSheet: Container(
height: 80,
color: CustomColors.white,
padding: EdgeInsets.fromLTRB(12.0, 12.0, 12.0, 25.0),
child: DefaultButton(
TranslationBase.of(context).bookAppo,
() {
if (projectDropdownValue == "" || selectedHospital == null) {
AppToast.showErrorToast(message: TranslationBase.of(context).selectHospital);
} else {
Navigator.push(
context,
FadePage(
page: EROnlineCheckInPaymentDetails(
projectID: selectedHospital?.iD,
isERBookAppointment: true,
projectName: selectedHospital!.name!,
),
),
);
}
},
color: CustomColors.accentColor,
),
),
);
}
getProjectsList() {
int languageID = projectViewModel.isArabic ? 1 : 2;
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService service = new ClinicListService();
List<HospitalsModel> projectsListLocal = [];
service.getProjectsList(languageID, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) {
setState(() {
res['ListProject'].forEach((v) {
projectsListLocal.add(new HospitalsModel.fromJson(v));
});
projectsList = projectsListLocal;
});
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err);
});
}
bool openDropdown(GlobalKey key) {
GestureDetector? detector;
bool returnValue = false;
void searchForGestureDetector(BuildContext element) {
element.visitChildElements((element) {
if (element.widget != null && element.widget is GestureDetector) {
detector = element.widget as GestureDetector?;
returnValue = false;
} else {
searchForGestureDetector(element);
}
returnValue = true;
});
}
searchForGestureDetector(key.currentContext!);
assert(detector != null);
detector?.onTap!();
return returnValue;
}
}

@ -0,0 +1,453 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/ErService/EROnlineCheckIn/EROnlineCheckInBookAppointment.dart';
import 'package:diplomaticquarterapp/pages/ErService/EROnlineCheckIn/EROnlineCheckInPaymentDetails.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.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/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/nfc/nfc_reader_sheet.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_nfc_kit/flutter_nfc_kit.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
class EROnlineCheckInHomePage extends StatefulWidget {
const EROnlineCheckInHomePage();
@override
State<EROnlineCheckInHomePage> createState() => _EROnlineCheckInHomePageState();
}
class _EROnlineCheckInHomePageState extends State<EROnlineCheckInHomePage> with SingleTickerProviderStateMixin {
late ProjectViewModel projectViewModel;
bool _supportsNFC = false;
bool isPatientArrived = false;
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
// checkIfPatientHasArrived();
checkPatientERClinicBalanceAmount();
});
super.initState();
}
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
FlutterNfcKit.nfcAvailability.then((value) {
_supportsNFC = (value == NFCAvailability.available);
});
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).emergency + " ${TranslationBase.of(context).checkinOptions}",
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Icon(
Icons.check_circle,
size: 50,
color: CustomColors.green,
),
mHeight(6),
Text(
"What is Online Check-In?",
maxLines: 1,
style: TextStyle(
fontSize: 20, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24),
),
Text(
"online check-in lets patients fill out forms, share insurance details, and book appointments online, making their visit smoother and quicker.",
style: TextStyle(fontSize: 14, color: CustomColors.textDarkColor, letterSpacing: -1.44, height: 35 / 24),
),
mHeight(16),
Text(
"How can i use Online Check-In?",
maxLines: 1,
style: TextStyle(
fontSize: 20, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24),
),
Text(
"online check-in lets patients fill out forms, share insurance details, and book appointments online, making their visit smoother and quicker.",
style: TextStyle(fontSize: 14, color: CustomColors.textDarkColor, letterSpacing: -1.44, height: 35 / 24),
),
],
),
),
),
mHeight(24),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
width: 35,
height: 35,
decoration: BoxDecoration(
color: CustomColors.green,
borderRadius: BorderRadius.circular(50),
),
child: Center(
child: Text(
"1",
style: TextStyle(fontSize: 22, fontWeight: FontWeight.w700, color: CustomColors.white, letterSpacing: -1.44, height: 35 / 24),
),
),
),
mWidth(12),
SvgPicture.asset(
"assets/images/new/tap.svg",
width: 35,
height: 35,
),
],
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Tap On",
maxLines: 1,
style: TextStyle(
fontSize: 20,
fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'),
fontWeight: FontWeight.w700,
color: Color(0xff2B353E),
letterSpacing: -1.44,
height: 35 / 24),
),
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Tap on the check-in button within the app",
style: TextStyle(fontSize: 14, color: CustomColors.textDarkColor, letterSpacing: -1.44, height: 35 / 24),
),
),
mHeight(16),
Row(
children: [
Container(
width: 35,
height: 35,
decoration: BoxDecoration(
color: CustomColors.green,
borderRadius: BorderRadius.circular(50),
),
child: Center(
child: Text(
"2",
style: TextStyle(fontSize: 22, fontWeight: FontWeight.w700, color: CustomColors.white, letterSpacing: -1.44, height: 35 / 24),
),
),
),
mWidth(12),
SvgPicture.asset(
"assets/images/new/NFC_Hold.svg",
width: 35,
height: 35,
),
],
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Hold your phone",
maxLines: 1,
style: TextStyle(
fontSize: 20,
fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'),
fontWeight: FontWeight.w700,
color: Color(0xff2B353E),
letterSpacing: -1.44,
height: 35 / 24),
),
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Hold the phone 1 to 2 cm from the NFC sign displayed on the board",
style: TextStyle(fontSize: 14, color: CustomColors.textDarkColor, letterSpacing: -1.44, height: 35 / 24),
),
),
mHeight(16),
Row(
children: [
Container(
width: 35,
height: 35,
decoration: BoxDecoration(
color: CustomColors.green,
borderRadius: BorderRadius.circular(50),
),
child: Center(
child: Text(
"3",
style: TextStyle(fontSize: 22, fontWeight: FontWeight.w700, color: CustomColors.white, letterSpacing: -1.44, height: 35 / 24),
),
),
),
mWidth(12),
SvgPicture.asset(
"assets/images/new/hourglass.svg",
width: 35,
height: 35,
),
],
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Wait your turn",
maxLines: 1,
style: TextStyle(
fontSize: 20,
fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'),
fontWeight: FontWeight.w700,
color: Color(0xff2B353E),
letterSpacing: -1.44,
height: 35 / 24),
),
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Text(
"Please wait in the waiting area until called by the nurse",
style: TextStyle(fontSize: 14, color: CustomColors.textDarkColor, letterSpacing: -1.44, height: 35 / 24),
),
),
],
),
),
),
],
),
),
),
bottomSheet: Container(
height: 80,
color: CustomColors.white,
padding: EdgeInsets.fromLTRB(12.0, 12.0, 12.0, 25.0),
child: isPatientArrived
? Container(
child: DefaultButton(
TranslationBase.of(context).arrived,
() {
if (_supportsNFC) {
Future.delayed(const Duration(milliseconds: 500), () {
showNfcReader(context, onNcfScan: (String nfcId) {
Future.delayed(const Duration(milliseconds: 100), () {
print(nfcId);
getProjectIDFromNFC(nfcId, true);
// Navigator.push(context, FadePage(page: EROnlineCheckInPaymentDetails()));
});
}, onCancel: () {
Navigator.of(context).pop();
});
});
} else {
//NFCNotSupported
AppToast.showErrorToast(message: TranslationBase.of(context).NFCNotSupported);
}
},
color: CustomColors.accentColor,
),
)
: Row(
children: [
Expanded(
flex: 1,
child: DefaultButton(
TranslationBase.of(context).checkinOptions,
() {
if (_supportsNFC) {
Future.delayed(const Duration(milliseconds: 500), () {
showNfcReader(context, onNcfScan: (String nfcId) {
Future.delayed(const Duration(milliseconds: 100), () {
print(nfcId);
getProjectIDFromNFC(nfcId, false);
});
}, onCancel: () {
Navigator.of(context).pop();
});
});
} else {
//NFCNotSupported
AppToast.showErrorToast(message: TranslationBase.of(context).NFCNotSupported);
}
},
color: CustomColors.green,
),
),
mWidth(12),
Expanded(
flex: 1,
child: DefaultButton(
TranslationBase.of(context).bookAppo,
() {
Navigator.push(context, FadePage(page: EROnlineCheckInBookAppointment()));
},
color: CustomColors.accentColor,
),
),
],
),
),
);
}
void getProjectIDFromNFC(String nfcID, bool isArrived) {
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService ancillaryOrdersService = new ClinicListService();
ancillaryOrdersService.getProjectIDFromNFC(nfcID).then((response) {
if (response["GetProjectByNFC"].length != 0) {
print(response["GetProjectByNFC"]);
int projectID = response['GetProjectByNFC'][0]["ProjectID"];
String projectName = response['GetProjectByNFC'][0]["ProjectName"];
if (isArrived) {
autoGenerateInvoiceER(projectID);
} else {
GifLoaderDialogUtils.hideDialog(context);
Navigator.push(
context,
FadePage(
page: EROnlineCheckInPaymentDetails(
projectID: projectID,
isERBookAppointment: false,
projectName: projectName,
),
),
);
}
} else {
AppToast.showErrorToast(message: "Invalid NFC Card Scanned.");
}
}).catchError((err) {
AppToast.showErrorToast(message: err.toString());
GifLoaderDialogUtils.hideDialog(context);
});
}
void checkIfPatientHasArrived() {
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService ancillaryOrdersService = new ClinicListService();
ancillaryOrdersService.checkIfPatientHasArrived(15, 10).then((response) {
print(response["IsPatientArrivedResponse"]);
isPatientArrived = response['IsPatientArrivedResponse']["IsPatientArrived"];
GifLoaderDialogUtils.hideDialog(context);
// erOnlineCheckInPaymentDetailsResponse = EROnlineCheckInPaymentDetailsResponse.fromJson(response["ResponsePatientShare"]);
setState(() {});
}).catchError((err) {
AppToast.showErrorToast(message: err.toString());
GifLoaderDialogUtils.hideDialog(context);
});
}
autoGenerateInvoiceER(int projectID) {
DoctorsListService service = new DoctorsListService();
service.autoGenerateInvoiceERClinicWithNoPaymentDetails(projectID, true).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if(res["MessageStatus"] == 1) {
_showMyDialog("Your online Check-In in the ER clinic has been done successfully.", context);
} else {
AppToast.showErrorToast(message: res["InvoiceResponse"]["Message"]);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err);
});
}
Future<void> _showMyDialog(String message, BuildContext context) async {
return showDialog<void>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Alert'),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text(message),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('OK'),
onPressed: () {
Navigator.of(context).pop();
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => LandingPage()), (Route<dynamic> r) => false);
},
),
],
);
},
);
}
void checkPatientERClinicBalanceAmount() {
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService ancillaryOrdersService = new ClinicListService();
ancillaryOrdersService.checkPatientERClinicBalanceAmount(10).then((response) {
print(response["BalanceAmount"]);
isPatientArrived = response['BalanceAmount'] > 0;
// isPatientArrived = false;
GifLoaderDialogUtils.hideDialog(context);
// erOnlineCheckInPaymentDetailsResponse = EROnlineCheckInPaymentDetailsResponse.fromJson(response["ResponsePatientShare"]);
setState(() {});
}).catchError((err) {
AppToast.showErrorToast(message: err.toString());
GifLoaderDialogUtils.hideDialog(context);
});
}
}

@ -0,0 +1,612 @@
import 'dart:developer';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/PayfortEnums.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Clinics/EROnlineCheckInPaymentDetailsResponse.dart';
import 'package:diplomaticquarterapp/models/LiveCare/ApplePayInsertRequest.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/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/services/payfort_services/payfort_project_details_resp_model.dart';
import 'package:diplomaticquarterapp/services/payfort_services/payfort_view_model.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/dragable_sheet.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class EROnlineCheckInPaymentDetails extends StatefulWidget {
int projectID = 0;
bool isERBookAppointment = false;
String projectName = "";
EROnlineCheckInPaymentDetails({required this.projectID, required this.isERBookAppointment, required this.projectName});
@override
State<EROnlineCheckInPaymentDetails> createState() => _EROnlineCheckInPaymentDetailsState();
}
class _EROnlineCheckInPaymentDetailsState extends State<EROnlineCheckInPaymentDetails> with SingleTickerProviderStateMixin {
late ProjectViewModel projectViewModel;
EROnlineCheckInPaymentDetailsResponse? erOnlineCheckInPaymentDetailsResponse;
String? selectedPaymentMethod;
String? selectedInstallmentPlan;
String transID = "";
MyInAppBrowser? browser;
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
getEROnlineCheckInPaymentDetails();
});
super.initState();
}
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).emergency + " ${TranslationBase.of(context).checkinOptions}",
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).patientInfo,
style: TextStyle(
fontSize: 18, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24),
),
mHeight(12),
Row(
children: [
Text(
TranslationBase.of(context).patientName + ":",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.6,
color: CustomColors.grey,
),
),
mWidth(3),
Text(
projectViewModel.user.firstName! + " " + projectViewModel.user.lastName!,
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 14,
letterSpacing: -0.48,
),
),
],
),
Row(
children: [
Text(
TranslationBase.of(context).mrn + ":",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.6,
color: CustomColors.grey,
),
),
mWidth(3),
Text(
projectViewModel.user.patientID.toString(),
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 14,
letterSpacing: -0.48,
),
),
],
),
],
),
),
),
mHeight(24),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"ER Visit Details",
style: TextStyle(
fontSize: 18, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24),
),
mHeight(12),
Row(
children: [
Text(
TranslationBase.of(context).hospital + ":",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.6,
color: CustomColors.grey,
),
),
mWidth(3),
Text(
widget.projectName,
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 14,
letterSpacing: -0.48,
),
),
],
),
Row(
children: [
Text(
TranslationBase.of(context).clinicName + ":",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.6,
color: CustomColors.grey,
),
),
mWidth(3),
Text(
"ER Clinic",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 14,
letterSpacing: -0.48,
),
),
],
),
Row(
children: [
Text(
"Time Check-In" + ":",
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.6,
color: CustomColors.grey,
),
),
mWidth(3),
Text(
DateUtil.getMonthDayYearDateFormatted(DateTime.now()),
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 14,
letterSpacing: -0.48,
),
),
],
),
],
),
),
)
],
),
),
bottomSheet: erOnlineCheckInPaymentDetailsResponse != null
? Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
padding: EdgeInsets.only(left: 21, right: 21, top: 15, bottom: 15),
width: double.infinity,
// color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: 12),
Text(
TranslationBase.of(context).YouCanPayByTheFollowingOptions,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.64,
),
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.75,
child: getPaymentMethods(),
),
_amountView(TranslationBase.of(context).patientShareTotalToDo, erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax.toString() + " " + TranslationBase.of(context).sar,
isBold: true, isTotal: true),
SizedBox(height: 12),
DefaultButton(
TranslationBase.of(context).payNow.toUpperCase(),
() {
makePayment();
},
color: CustomColors.green,
disabledColor: CustomColors.grey2,
),
],
),
)
: Container(),
);
}
makePayment() {
showDraggableDialog(
context,
PaymentMethod(
onSelectedMethod: (String method, [String? selectedInstallmentPlan]) {
selectedPaymentMethod = method;
this.selectedInstallmentPlan = selectedInstallmentPlan;
AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList();
appo.projectID = widget.projectID;
if (selectedPaymentMethod == "ApplePay") {
if (projectViewModel.havePrivilege(103)) {
startApplePay();
} else {
openPayment(selectedPaymentMethod!, projectViewModel.user, erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax!, appo);
}
} else {
openPayment(selectedPaymentMethod!, projectViewModel.user, erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax!, appo);
}
},
patientShare: erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax,
isFromAdvancePayment: false,
),
);
}
openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, num amount, AppoitmentAllHistoryResultList appo) {
transID = Utils.getAdvancePaymentTransID(widget.projectID, projectViewModel.user.patientID!);
browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart);
browser?.openPaymentBrowser(amount, "ER Online Check-In Payment", transID, widget.projectID.toString(), authenticatedUser.emailAddress!, paymentMethod, authenticatedUser.patientType,
authenticatedUser.firstName!, authenticatedUser.patientID, authenticatedUser, browser!, false, "3", "", context);
}
onBrowserLoadStart(String url) {
print("onBrowserLoadStart");
print(url);
MyInAppBrowser.successURLS.forEach((element) {
if (url.contains(element)) {
if (browser!.isOpened()) browser!.close();
MyInAppBrowser.isPaymentDone = true;
return;
}
});
MyInAppBrowser.errorURLS.forEach((element) {
if (url.contains(element)) {
if (browser!.isOpened()) browser!.close();
MyInAppBrowser.isPaymentDone = false;
return;
}
});
}
onBrowserExit(AppoitmentAllHistoryResultList appo, bool isPaymentMade) {
print("onBrowserExit Called!!!!");
checkPaymentStatus(appo);
}
void startApplePay() async {
transID = Utils.getAdvancePaymentTransID(widget.projectID, projectViewModel.user.patientID!);
print("TransactionID: $transID");
GifLoaderDialogUtils.showMyDialog(context);
LiveCareService service = new LiveCareService();
ApplePayInsertRequest applePayInsertRequest = new ApplePayInsertRequest();
PayfortProjectDetailsRespModel? payfortProjectDetailsRespModel;
await context.read<PayfortViewModel>().getProjectDetailsForPayfort(projectId: widget.projectID, serviceId: ServiceTypeEnum.appointmentPayment.getIdFromServiceEnum()).then((value) {
payfortProjectDetailsRespModel = value;
});
applePayInsertRequest.clientRequestID = transID;
applePayInsertRequest.clinicID = 0;
applePayInsertRequest.currency = projectViewModel.user.outSA == 1 ? "AED" : "SAR";
// applePayInsertRequest.customerEmail = projectViewModel.authenticatedUserObject.user.emailAddress;
applePayInsertRequest.customerEmail = "CustID_${projectViewModel.user.patientID}@HMG.com";
applePayInsertRequest.customerID = projectViewModel.user.patientID;
applePayInsertRequest.customerName = projectViewModel.user.firstName! + " " + projectViewModel.user.lastName!;
applePayInsertRequest.deviceToken = await AppSharedPreferences().getString(PUSH_TOKEN);
applePayInsertRequest.voipToken = await AppSharedPreferences().getString(ONESIGNAL_APNS_TOKEN);
applePayInsertRequest.doctorID = 0;
applePayInsertRequest.projectID = widget.projectID.toString();
applePayInsertRequest.serviceID = ServiceTypeEnum.advancePayment.getIdFromServiceEnum().toString();
applePayInsertRequest.channelID = 3;
applePayInsertRequest.patientID = projectViewModel.user.patientID;
applePayInsertRequest.patientTypeID = projectViewModel.user.patientType;
applePayInsertRequest.patientOutSA = projectViewModel.user.outSA;
applePayInsertRequest.appointmentDate = null;
applePayInsertRequest.appointmentNo = 0;
applePayInsertRequest.orderDescription = "ER Online Check-In Payment";
applePayInsertRequest.liveServiceID = "0";
applePayInsertRequest.latitude = "0.0";
applePayInsertRequest.longitude = "0.0";
applePayInsertRequest.amount = erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax.toString();
applePayInsertRequest.isSchedule = "0";
applePayInsertRequest.language = projectViewModel.isArabic ? 'ar' : 'en';
applePayInsertRequest.languageID = projectViewModel.isArabic ? 1 : 2;
applePayInsertRequest.userName = projectViewModel.user.patientID;
applePayInsertRequest.responseContinueURL = "http://hmg.com/Documents/success.html";
applePayInsertRequest.backClickUrl = "http://hmg.com/Documents/success.html";
applePayInsertRequest.paymentOption = "ApplePay";
applePayInsertRequest.isMobSDK = true;
applePayInsertRequest.merchantReference = transID;
applePayInsertRequest.merchantIdentifier = payfortProjectDetailsRespModel?.merchantIdentifier;
applePayInsertRequest.commandType = "PURCHASE";
applePayInsertRequest.signature = payfortProjectDetailsRespModel?.signature;
applePayInsertRequest.accessCode = payfortProjectDetailsRespModel?.accessCode;
applePayInsertRequest.shaRequestPhrase = payfortProjectDetailsRespModel?.shaRequest;
applePayInsertRequest.shaResponsePhrase = payfortProjectDetailsRespModel?.shaResponse;
applePayInsertRequest.returnURL = "";
service.applePayInsertRequest(applePayInsertRequest, context).then((res) async {
if (res["MessageStatus"] == 1) {
await context.read<PayfortViewModel>().initiateApplePayWithPayfort(
customerName: projectViewModel.user.firstName! + " " + projectViewModel.user.lastName!,
// customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress,
customerEmail: "CustID_${projectViewModel.user.patientID}@HMG.com",
orderDescription: "ER Online Check-In Payment",
orderAmount: erOnlineCheckInPaymentDetailsResponse!.patientShareWithTax,
merchantReference: transID,
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async {
log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString());
},
onSuccess: (successResult) async {
log("Payfort: ${successResult.responseMessage}");
await context.read<PayfortViewModel>().addPayfortApplePayResponse(projectViewModel.user.patientID!, result: successResult);
GifLoaderDialogUtils.hideDialog(context);
checkPaymentStatus(AppoitmentAllHistoryResultList());
},
projectId: widget.projectID,
serviceTypeEnum: ServiceTypeEnum.appointmentPayment,
);
} else {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: "An error occurred while processing your request");
}
}).catchError((err) {
print(err);
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
});
}
checkPaymentStatus(AppoitmentAllHistoryResultList appo) {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
service.checkPaymentStatus(transID, false, context).then((res) {
String paymentInfo = res['Response_Message'];
if (paymentInfo == 'Success') {
GifLoaderDialogUtils.hideDialog(context);
// createAdvancePayment(res, appo);
ER_createAdvancePayment(res, appo);
} else {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: res['Response_Message'], localContext: context);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err, localContext: context);
print(err);
});
}
ER_createAdvancePayment(payment_res, AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService();
// GifLoaderDialogUtils.showMyDialog(context);
String paymentReference = payment_res['Fort_id'].toString();
service.ER_createAdvancePayment(appo, widget.projectID.toString(), payment_res['Amount'], payment_res['Fort_id'], payment_res['PaymentMethod'], context).then((res) {
addAdvancedNumberRequest(
Utils.isVidaPlusProject(projectViewModel, widget.projectID) ? res['ER_AdvancePaymentResponse']['AdvanceNumber_VP'].toString() : res['ER_AdvancePaymentResponse']['AdvanceNumber'].toString(),
paymentReference,
0,
appo,
payment_res);
// GifLoaderDialogUtils.hideDialog(context);
// ER_InsertEROnlinePaymentDetails(payment_res, appo);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err.toString());
print(err);
});
}
createAdvancePayment(paymentRes, AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService();
String paymentReference = paymentRes['Fort_id'].toString();
service.HIS_createAdvancePayment(appo, widget.projectID.toString(), paymentRes['Amount'], paymentRes['Fort_id'], paymentRes['PaymentMethod'], projectViewModel.user.patientType,
projectViewModel.user.firstName! + " " + projectViewModel.user.lastName!, projectViewModel.user.patientID, context)
.then((res) {
addAdvancedNumberRequest(
Utils.isVidaPlusProject(projectViewModel, widget.projectID)
? res['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString()
: res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(),
paymentReference,
0,
appo,
paymentRes);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err);
});
}
addAdvancedNumberRequest(String advanceNumber, String paymentReference, dynamic appointmentID, AppoitmentAllHistoryResultList appo, paymentRes) {
DoctorsListService service = new DoctorsListService();
service.addAdvancedNumberRequest(advanceNumber, paymentReference, appointmentID, context).then((res) {
if (widget.isERBookAppointment) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: "Your appointment has been booked successfully. Please perform Check-In once you arrive at the hospital.");
// Navigator.pop(context);
// Navigator.pop(context);
// Navigator.pop(context);
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => LandingPage()), (Route<dynamic> r) => false);
} else {
autoGenerateInvoiceER(paymentRes);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err.toString());
print(err);
});
}
autoGenerateInvoiceER(res) {
DoctorsListService service = new DoctorsListService();
service.autoGenerateInvoiceERClinic(widget.projectID, 4, res['Fort_id'], res['Amount'], res['PaymentMethod'], res['CardNumber'], res['Merchant_Reference'], res['RRN'], true).then((res) {
GifLoaderDialogUtils.hideDialog(context);
_showMyDialog("Your online Check-In in the ER clinic has been done successfully.", context);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err);
});
}
Future<void> _showMyDialog(String message, BuildContext context) async {
return showDialog<void>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Alert'),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text(message),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('OK'),
onPressed: () {
Navigator.of(context).pop();
Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => LandingPage()), (Route<dynamic> r) => false);
},
),
],
);
},
);
}
getEROnlineCheckInPaymentDetails() {
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService ancillaryOrdersService = new ClinicListService();
ancillaryOrdersService.getEROnlineCheckInPaymentDetails(widget.projectID, 10).then((response) {
erOnlineCheckInPaymentDetailsResponse = EROnlineCheckInPaymentDetailsResponse.fromJson(response["ResponsePatientShare"]);
GifLoaderDialogUtils.hideDialog(context);
setState(() {});
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err.toString());
});
}
_amountView(String title, String value, {bool isBold = false, bool isTotal = false}) {
return Padding(
padding: const EdgeInsets.only(top: 10, bottom: 10),
child: Row(children: [
Expanded(
child: _getNormalText(title),
),
Expanded(
child: _getNormalText(value, isBold: isBold, isTotal: isTotal),
),
]),
);
}
_getNormalText(text, {bool isBold = false, bool isTotal = false}) {
return Text(
text,
style: TextStyle(
fontSize: isBold
? isTotal
? 16
: 12
: 11,
letterSpacing: -0.5,
color: isBold ? Color(0xff2E303A) : Color(0xff575757),
fontWeight: isTotal ? FontWeight.bold : FontWeight.w600,
),
);
}
}

@ -226,7 +226,7 @@ class OrderLogPage extends StatelessWidget {
width: 8, width: 8,
height: 8, height: 8,
decoration: containerRadius( decoration: containerRadius(
CustomColors.primaryColor, CustomColors.accentColor,
100, 100,
), ),
), ),

@ -366,7 +366,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.primaryColor : Colors.grey, color: acceptTerms ? CustomColors.accentColor : Colors.grey,
), ),
), ),
], ],

@ -14,7 +14,6 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/SchedulePage.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.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';
@ -273,7 +272,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
TranslationBase.of(context).reviewAppointment, TranslationBase.of(context).reviewAppointment,
goToBookConfirm, goToBookConfirm,
// DocAvailableAppointments.areSlotsAvailable ? goToBookConfirm : null, // DocAvailableAppointments.areSlotsAvailable ? goToBookConfirm : null,
color: appColor, color: Color(0xFFD02127),
disabledColor: Color(0xff28323A).withOpacity(0.3), disabledColor: Color(0xff28323A).withOpacity(0.3),
), ),
), ),
@ -390,15 +389,15 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
tapOnlyMode: true, tapOnlyMode: true,

@ -9,7 +9,6 @@ import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -508,7 +507,7 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
height: 22, height: 22,
child: Radio( child: Radio(
value: _value, value: _value,
activeColor: _value == _currentPage ? appColor : Color(0xffE8E8E8), activeColor: _value == _currentPage ? Color(0xffD02127) : Color(0xffE8E8E8),
groupValue: _currentPage, groupValue: _currentPage,
onChanged: (index) { onChanged: (index) {
setState(() { setState(() {

@ -21,11 +21,35 @@ class ArrivedButtons {
"icon": 'lab_result.svg', "icon": 'lab_result.svg',
"caller": "labResult", "caller": "labResult",
}, },
{
"title": TranslationBase.of(AppGlobal.context).vitalSigns,
"subtitle": TranslationBase.of(AppGlobal.context).vitalSignsSubtitle,
"icon": 'vital_signs.svg',
"caller": "VitalSigns",
},
{
"title": TranslationBase.of(AppGlobal.context).raise,
"subtitle": TranslationBase.of(AppGlobal.context).complaint,
"icon": "raise_comp.svg",
"caller": "insertComplaint",
},
{
"title": TranslationBase.of(AppGlobal.context).insuranceApproval,
"subtitle": TranslationBase.of(AppGlobal.context).insuranceApprovalSubtitle,
"icon": 'insurance_approval.svg',
"caller": "Insurance",
},
{ {
"title": TranslationBase.of(AppGlobal.context).askDoctor, "title": TranslationBase.of(AppGlobal.context).askDoctor,
"subtitle": TranslationBase.of(AppGlobal.context).service, "subtitle": TranslationBase.of(AppGlobal.context).service,
"icon": 'ask_doctor.svg', "icon": 'ask_doctor.svg',
"caller": "askDoc", "caller": "askDoc",
}, },
{
"title": TranslationBase.of(AppGlobal.context).service,
"subtitle": TranslationBase.of(AppGlobal.context).appoSurvey,
"icon": "survey.svg",
"caller": "Survey",
}
]; ];
} }

@ -1445,7 +1445,6 @@ class _ToDoState extends State<ToDo> with SingleTickerProviderStateMixin {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -87,7 +87,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MADA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MADA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -137,7 +137,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "VISA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "VISA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -187,7 +187,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MASTERCARD" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MASTERCARD" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -237,7 +237,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "TAMARA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "TAMARA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -287,7 +287,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "Installment" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "Installment" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -338,7 +338,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "ApplePay" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "ApplePay" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(

@ -80,7 +80,7 @@ class _PaymentDialogState extends State<PaymentDialog> {
SizedBox(height: 12), SizedBox(height: 12),
Text( Text(
TranslationBase.of(context).appoPaymentConfirm, TranslationBase.of(context).appoPaymentConfirm,
style: TextStyle(fontSize: 14.0, color: CustomColors.primaryColor, fontWeight: FontWeight.w600, letterSpacing: -0.56), style: TextStyle(fontSize: 14.0, color: CustomColors.accentColor, fontWeight: FontWeight.w600, letterSpacing: -0.56),
), ),
SizedBox(height: 12), SizedBox(height: 12),
Container( Container(

@ -55,7 +55,7 @@ class _TodoListCardState extends State<TodoListCard> {
), ),
Padding( Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0), padding: const EdgeInsets.only(left: 8.0, right: 8.0),
child: Text("01:23:22 " + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.primaryColor, letterSpacing: -0.48)), child: Text("01:23:22 " + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.accentColor, letterSpacing: -0.48)),
), ),
], ],
), ),
@ -119,9 +119,9 @@ class _TodoListCardState extends State<TodoListCard> {
itemSize: 20, itemSize: 20,
ignoreGestures: true, ignoreGestures: true,
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon(Icons.star, color: CustomColors.primaryColor,), full: Icon(Icons.star, color: CustomColors.accentColor,),
half: Icon(Icons.star_half, color: CustomColors.primaryColor,), half: Icon(Icons.star_half, color: CustomColors.accentColor,),
empty: Icon(Icons.star, color: CustomColors.primaryColor,), empty: Icon(Icons.star, color: CustomColors.accentColor,),
), ),
tapOnlyMode: true, tapOnlyMode: true,
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],
@ -158,7 +158,7 @@ class _TodoListCardState extends State<TodoListCard> {
padding: const EdgeInsets.only(top: 0.0), padding: const EdgeInsets.only(top: 0.0),
child: Text( child: Text(
"More Details", "More Details",
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: CustomColors.primaryColor, letterSpacing: -0.48, height: 25 / 16, decoration: TextDecoration.underline), style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: CustomColors.accentColor, letterSpacing: -0.48, height: 25 / 16, decoration: TextDecoration.underline),
), ),
), ),
], ],

@ -8,7 +8,6 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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';
@ -346,7 +345,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
}); });
} }
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -209,7 +209,7 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
child: Container( child: Container(
margin: EdgeInsets.only(top: 12), margin: EdgeInsets.only(top: 12),
decoration: BoxDecoration( decoration: BoxDecoration(
color: (cOCItemList[index].statusId==7||cOCItemList[index].statusId==8)?CustomColors.primaryColor:(cOCItemList[index].statusId==10||cOCItemList[index].statusId==6||cOCItemList[index].statusId==9)?CustomColors.green:CustomColors.orange, color: (cOCItemList[index].statusId==7||cOCItemList[index].statusId==8)?CustomColors.accentColor:(cOCItemList[index].statusId==10||cOCItemList[index].statusId==6||cOCItemList[index].statusId==9)?CustomColors.green:CustomColors.orange,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),

@ -311,15 +311,15 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
onRatingUpdate: (double value) {}, onRatingUpdate: (double value) {},
@ -506,15 +506,15 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
onRatingUpdate: (double value) {}, onRatingUpdate: (double value) {},

@ -151,7 +151,7 @@ class _AttachInsuranceCardImageDialogState extends State<AttachInsuranceCardImag
); );
}, },
textColor: Colors.white, textColor: Colors.white,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
Text( Text(

@ -58,7 +58,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate> with SingleTickerProv
controller: _tabController, controller: _tabController,
isScrollable: false, isScrollable: false,
indicatorWeight: 3.0, indicatorWeight: 3.0,
indicatorColor: CustomColors.primaryColor, indicatorColor: CustomColors.accentColor,
labelColor: CustomColors.textDarkColor, labelColor: CustomColors.textDarkColor,
labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0),
unselectedLabelColor: CustomColors.textDarkColor, unselectedLabelColor: CustomColors.textDarkColor,
@ -167,7 +167,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate> with SingleTickerProv
Container( Container(
margin: EdgeInsets.only(top: 6.5, left: 2.0), margin: EdgeInsets.only(top: 6.5, left: 2.0),
child: Text( child: Text(
model.insuranceUpdate[index].statusDescription!, model.insuranceUpdate[index].statusDescription ?? "",
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,

@ -47,57 +47,43 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
super.initState(); super.initState();
} }
// initialiseHmgServices(bool isLogin) { initialiseHmgServices(bool isLogin) {
// hmgServices.clear(); hmgServices.clear();
//
// hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin)); hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin));
// // hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin)); hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// // hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin)); hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).onlineCheckIn, "assets/images/new/emergency.svg", isLogin));
// // hmgServices.add(HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin)); hmgServices.add(HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin));
// // hmgServices.add(HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin)); hmgServices.add(HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin));
// // hmgServices.add(HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin)); hmgServices.add(HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin));
// // hmgServices.add(HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin)); hmgServices.add(HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin));
// // hmgServices.add(HmgServices(7, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin)); hmgServices.add(HmgServices(7, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin));
// hmgServices.add(HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin)); hmgServices.add(HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
// } }
initialiseInPatientHmgServices(bool isLogin) { initialiseInPatientHmgServices(bool isLogin) {
hmgServices.clear(); hmgServices.clear();
// hmgServices.add(new HmgServices(0, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin)); // hmgServices.add(new HmgServices(0, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin)); // hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin));
// hmgServices.add(new HmgServices(2, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin)); // hmgServices.add(new HmgServices(2, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin));
// hmgServices.add(new HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin)); hmgServices.add(new HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin));
// hmgServices.add(new HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin)); hmgServices.add(new HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin));
// hmgServices.add(new HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin)); hmgServices.add(new HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin));
// hmgServices.add(new HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin)); hmgServices.add(new HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin));
// hmgServices.add(new HmgServices(7, "H\u2082O", TranslationBase.of(context).dailyWater, "assets/images/new/h2o.svg", isLogin)); hmgServices.add(new HmgServices(7, "H\u2082O", TranslationBase.of(context).dailyWater, "assets/images/new/h2o.svg", isLogin));
hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin)); hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
} }
initServices(bool isLogin){
hmgServices.clear();
// hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin));
hmgServices.add(HmgServices(31, TranslationBase.of(context).myAppointments, TranslationBase.of(context).medicalFile, "assets/images/new/bottom_nav/my_file.svg", isLogin));
hmgServices.add(HmgServices(24, TranslationBase.of(context).myAppointments, TranslationBase.of(context).myAppointmentsList, "assets/images/new/services/appointment_list.svg", isLogin));
hmgServices.add(HmgServices(25, TranslationBase.of(context).lab, TranslationBase.of(context).labSubtitle, "assets/images/new/services/lab_result.svg", isLogin));
hmgServices.add(HmgServices(26, TranslationBase.of(context).radiology, TranslationBase.of(context).radiologySubtitle, "assets/images/new/services/radiology.svg", isLogin));
hmgServices.add(HmgServices(27, TranslationBase.of(context).medicines, TranslationBase.of(context).medicinesSubtitle, "assets/images/new/services/medicine_prescription.svg", isLogin));
// hmgServices.add(HmgServices(28, TranslationBase.of(context).vitalSigns, TranslationBase.of(context).vitalSignsSubtitle, "assets/images/new/services/vital_signs.svg", isLogin));
hmgServices.add(HmgServices(29, TranslationBase.of(context).myMedical, TranslationBase.of(context).myMedicalSubtitle, "assets/images/new/services/active_medication.svg", isLogin));
hmgServices.add(HmgServices(30, TranslationBase.of(context).myDoctor, TranslationBase.of(context).myDoctorSubtitle, "assets/images/new/services/my_doc.svg", isLogin));
// hmgServices.add(HmgServices(31, TranslationBase.of(context).invoicesList, TranslationBase.of(context).myInvoice, "assets/images/new/services/invoice_list.svg", isLogin));
// hmgServices.add(HmgServices(32, TranslationBase.of(context).anicllaryOrders, TranslationBase.of(context).myInvoice, "assets/images/new/services/ancillary.svg", isLogin));
// hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
initServices(false);
if (projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest) {
initialiseInPatientHmgServices(false);
} else {
initialiseHmgServices(false);
}
var appoCountProvider = Provider.of<ToDoCountProviderModel>(context); var appoCountProvider = Provider.of<ToDoCountProviderModel>(context);
// var userProvider = Provider.of<ToDoCountProviderModel>(context); // var userProvider = Provider.of<ToDoCountProviderModel>(context);
List<Widget> myMedicalList = Utils.myMedicalListHomePage(projectViewModel: projectViewModel, context: context, count: appoCountProvider.count, isLogin: projectViewModel.isLogin); List<Widget> myMedicalList = Utils.myMedicalListHomePage(projectViewModel: projectViewModel, context: context, count: appoCountProvider.count, isLogin: projectViewModel.isLogin);
@ -141,109 +127,109 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
// height: MediaQuery.of(context).size.width / 2.6, // height: MediaQuery.of(context).size.width / 2.6,
), ),
), ),
// projectViewModel.isLogin projectViewModel.isLogin
// ? Column( ? Column(
// children: [ children: [
// Padding( Padding(
// padding: projectViewModel.isArabic padding: projectViewModel.isArabic
// ? EdgeInsets.only( ? EdgeInsets.only(
// right: 20, right: 20,
// left: 8, left: 8,
// ) )
// : EdgeInsets.only( : EdgeInsets.only(
// left: 20, left: 20,
// right: 8, right: 8,
// ), ),
// child: Row( child: Row(
// children: [ children: [
// Expanded( Expanded(
// child: Text( child: Text(
// TranslationBase.of(context).myMedicalFile, TranslationBase.of(context).myMedicalFile,
// style: TextStyle( style: TextStyle(
// color: Colors.black, color: Colors.black,
// fontSize: 16, fontSize: 16,
// fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
// letterSpacing: -0.96, letterSpacing: -0.96,
// height: 19 / 16, height: 19 / 16,
// ), ),
// ), ),
// ), ),
// TextButton( TextButton(
// onPressed: () { onPressed: () {
// widget.onMedicalFileClick!(); widget.onMedicalFileClick!();
// // navigateTo(context, MedicalProfilePageNew()); // navigateTo(context, MedicalProfilePageNew());
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).viewMedicalFile, TranslationBase.of(context).viewMedicalFile,
// style: TextStyle( style: TextStyle(
// color: CustomColors.primaryColor, color: CustomColors.accentColor,
// fontSize: 12, fontSize: 12,
// letterSpacing: -0.72, letterSpacing: -0.72,
// height: 23 / 12, height: 23 / 12,
// ), ),
// ), ),
// ), ),
// ], ],
// ), ),
// ), ),
// mHeight(4), mHeight(4),
// Container( Container(
// width: double.infinity, width: double.infinity,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// child: ListView.separated( child: ListView.separated(
// itemCount: myMedicalList.length, itemCount: myMedicalList.length,
// padding: EdgeInsets.zero, padding: EdgeInsets.zero,
// scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
// physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
// itemBuilder: (context, index) { itemBuilder: (context, index) {
// return projectViewModel.isArabic return projectViewModel.isArabic
// ? Container( ? Container(
// child: myMedicalList[index], child: myMedicalList[index],
// width: MediaQuery.of(context).size.width * 0.26, width: MediaQuery.of(context).size.width * 0.26,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// margin: EdgeInsets.only(left: index == 4 ? 20 : 0, right: index == 0 ? 20 : 0), margin: EdgeInsets.only(left: index == 4 ? 20 : 0, right: index == 0 ? 20 : 0),
// ) )
// : Container( : Container(
// child: myMedicalList[index], child: myMedicalList[index],
// width: MediaQuery.of(context).size.width * 0.26, width: MediaQuery.of(context).size.width * 0.26,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// margin: EdgeInsets.only(left: index == 0 ? 20 : 0, right: index == 4 ? 20 : 0), margin: EdgeInsets.only(left: index == 0 ? 20 : 0, right: index == 4 ? 20 : 0),
// ); );
// }, },
// separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
// return mWidth(12); return mWidth(12);
// }, },
// ), ),
// ), ),
// ], ],
// ) )
// : Container(), : Container(),
mHeight(16), mHeight(16),
// Column( Column(
// children: [ children: [
// Divider( Divider(
// height: 1, height: 1,
// color: Color(0xFFC7C7C7), color: Color(0xFFC7C7C7),
// ), ),
// Container( Container(
// width: double.infinity, width: double.infinity,
// height: MediaQuery.of(context).size.width * 0.3, height: MediaQuery.of(context).size.width * 0.3,
// padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14), padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14),
// color: Colors.white, color: Colors.white,
// child: Row( child: Row(
// children: [ children: [
// offersButton(), offersButton(),
// mWidth(10), mWidth(10),
// hmgButton(), hmgButton(),
// ], ],
// ), ),
// ), ),
// Divider( Divider(
// height: 1, height: 1,
// color: Color(0xFFC7C7C7), color: Color(0xFFC7C7C7),
// ), ),
// ], ],
// ), ),
mHeight(12), mHeight(12),
Column( Column(
children: [ children: [
@ -261,7 +247,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
TranslationBase.of(context).allServices, TranslationBase.of(context).hMGService,
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 16, fontSize: 16,
@ -271,29 +257,28 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
), ),
), ),
), ),
// TextButton( TextButton(
// onPressed: () { onPressed: () {
// // AppSharedPreferences().getAll().then((value){ // AppSharedPreferences().getAll().then((value){
// // debugPrint("ALL SHARED PREFERENCES!!!!!"); // debugPrint("ALL SHARED PREFERENCES!!!!!");
// // debugPrint(jsonEncode(value)); // debugPrint(jsonEncode(value));
// // }); // });
// Navigator.push(context, FadePage(page: AllHabibMedicalSevicePage2())); Navigator.push(context, FadePage(page: AllHabibMedicalSevicePage2()));
// projectViewModel.analytics.hmgServices.viewAll(); projectViewModel.analytics.hmgServices.viewAll();
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).viewAllServices, TranslationBase.of(context).viewAllServices,
// style: TextStyle( style: TextStyle(
// color: CustomColors.accentColor, color: CustomColors.accentColor,
// fontSize: 12, fontSize: 12,
// letterSpacing: -0.72, letterSpacing: -0.72,
// height: 23 / 12, height: 23 / 12,
// ), ),
// ), ),
// ), ),
], ],
), ),
), ),
mHeight(12),
projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest
? Column( ? Column(
children: [ children: [
@ -390,7 +375,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
// color: Color(0xFF2B353E), // color: Color(0xFF2B353E),
decoration: containerRadius(CustomColors.primaryColor, 20), decoration: containerRadius(CustomColors.accentColor, 20),
), ),
Container( Container(
width: double.infinity, width: double.infinity,
@ -637,7 +622,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
return Container( return Container(
width: MediaQuery.of(context).size.width * 0.06, width: MediaQuery.of(context).size.width * 0.06,
height: MediaQuery.of(context).size.width * 0.06, height: MediaQuery.of(context).size.width * 0.06,
decoration: containerRadius(CustomColors.primaryColor, 100), decoration: containerRadius(CustomColors.accentColor, 100),
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
child: SvgPicture.asset(icon), child: SvgPicture.asset(icon),
); );

@ -397,27 +397,25 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
if (data != null) { if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN); Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else { } else {
Navigator.of(context).pushNamed(LOGIN_TYPE);
}
// AppGlobal.context = context; // AppGlobal.context = context;
// GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
// authService.selectDeviceImei(DEVICE_TOKEN).then((value) async { authService.selectDeviceImei(DEVICE_TOKEN).then((value) async {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// var data = await sharedPref.getObject(IMEI_USER_DATA); var data = await sharedPref.getObject(IMEI_USER_DATA);
// if (value != null) { if (value != null) {
// setUserValues(value); setUserValues(value);
// Navigator.of(context).pushNamed(CONFIRM_LOGIN); Navigator.of(context).pushNamed(CONFIRM_LOGIN);
// } else { } else {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
// WELCOME_LOGIN, WELCOME_LOGIN,
// ); );
// } }
// }).catchError((err) { }).catchError((err) {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// Navigator.of(context).pushNamed(WELCOME_LOGIN); Navigator.of(context).pushNamed(WELCOME_LOGIN);
// }); });
// } }
} }
dummyCall() async { dummyCall() async {
@ -561,7 +559,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
child: new Container( child: new Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
decoration: new BoxDecoration( decoration: new BoxDecoration(
color: CustomColors.primaryColor, color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
constraints: BoxConstraints( constraints: BoxConstraints(
@ -652,21 +650,19 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
), ),
RobotIcon() RobotIcon()
])), ])),
// bottomNavigationBar: BottomNavBar( bottomNavigationBar: BottomNavBar(
// changeIndex: changeCurrentTab, changeIndex: changeCurrentTab,
// index: currentTab, index: currentTab,
// ), ),
floatingActionButtonLocation: FloatingActionButtonLocation.endContained, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: floatingActionButton:
(projectViewModel.havePrivilege(34) && currentTab == 0) (projectViewModel.havePrivilege(34) && currentTab == 0)
? Padding( ? FloatingButton(
padding: const EdgeInsets.only(bottom: 50.0, right: 10),
child: FloatingButton(
elevation: true, elevation: true,
onTap: () { onTap: () {
changeCurrentTab(2); changeCurrentTab(2);
projectViewModel.analytics.appointment.book_appointment();
}, },
),
) )
: null); : null);
} }

@ -2,7 +2,6 @@ import 'package:diplomaticquarterapp/core/viewModels/dashboard_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/models/slider_data.dart'; import 'package:diplomaticquarterapp/models/slider_data.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
@ -60,7 +59,7 @@ class LoggedSliderView extends StatelessWidget {
Row( Row(
children: [ children: [
Container( Container(
decoration: projectViewModel.isArabic ? containerColorRadiusLeft(appColor, 100) : containerColorRadiusRight(appColor, 100), decoration: projectViewModel.isArabic ? containerColorRadiusLeft(Color(0xFFFBF2E31), 100) : containerColorRadiusRight(Color(0xFFFBF2E31), 100),
padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6), padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6),
child: Text( child: Text(
TranslationBase.of(context).medicalFile, TranslationBase.of(context).medicalFile,
@ -133,75 +132,75 @@ class LoggedSliderView extends StatelessWidget {
), ),
), ),
mFlex(3), mFlex(3),
// Padding( Padding(
// 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( Expanded(
// flex: 3, 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: 11, width: 11,
// height: 11, 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: 8, fontSize: 8,
// ) )
// ], ],
// ), ),
// ), ),
// SizedBox( SizedBox(
// width: 3, width: 3,
// ), ),
// Expanded( Expanded(
// flex: 3, 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: 11, width: 11,
// height: 11, height: 11,
// ), ),
// mWidth(6), mWidth(6),
// Texts( Texts(
// '${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}', '${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}',
// color: Colors.white, color: Colors.white,
// fontSize: 8, fontSize: 8,
// ) )
// ], ],
// ), ),
// ), ),
// SizedBox( SizedBox(
// width: 3, width: 3,
// ), ),
// Expanded( Expanded(
// flex: 3, flex: 3,
// child: Row( child: Row(
// children: <Widget>[ children: <Widget>[
// SvgPicture.asset( SvgPicture.asset(
// 'assets/images/new/blood.svg', 'assets/images/new/blood.svg',
// width: 11, width: 11,
// height: 11, height: 11,
// ), ),
// mWidth(6), mWidth(6),
// Texts( Texts(
// '${TranslationBase.of(context).bloodType1} ${model.booldType}', '${TranslationBase.of(context).bloodType1} ${model.booldType}',
// color: Colors.white, color: Colors.white,
// fontSize: 7, fontSize: 7,
// ) )
// ], ],
// ), ),
// ), ),
// mFlex(1), mFlex(1),
// ], ],
// ), ),
// ), ),
// mFlex(2), mFlex(2),
], ],
), ),
), ),

@ -1,8 +1,6 @@
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../theme/theme_value.dart';
class OfferView extends StatelessWidget { class OfferView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -23,7 +21,7 @@ class OfferView extends StatelessWidget {
Text( Text(
"Kid's Offer", "Kid's Offer",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -42,14 +40,14 @@ class OfferView extends StatelessWidget {
Text( Text(
"Only ", "Only ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
), ),
), ),
Text( Text(
"500 ", "500 ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -57,7 +55,7 @@ class OfferView extends StatelessWidget {
Text( Text(
"SAR ", "SAR ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
), ),
), ),

@ -5,7 +5,6 @@ import 'package:diplomaticquarterapp/analytics/google-analytics.dart';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.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/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/hmg_services.dart'; import 'package:diplomaticquarterapp/models/hmg_services.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/%E2%80%8B%20health_calculators.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/%E2%80%8B%20health_calculators.dart';
@ -22,6 +21,7 @@ import 'package:diplomaticquarterapp/pages/ChildVaccines/new/child_initial_page.
import 'package:diplomaticquarterapp/pages/ContactUs/contact_us_page.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/contact_us_page.dart';
import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart';
import 'package:diplomaticquarterapp/pages/ErService/EROnlineCheckIn/EROnlineCheckInHome.dart';
import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart'; import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart';
import 'package:diplomaticquarterapp/pages/InPatientServices/inpatient_home.dart'; import 'package:diplomaticquarterapp/pages/InPatientServices/inpatient_home.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
@ -29,7 +29,6 @@ import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart';
import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart'; import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
@ -41,16 +40,9 @@ import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.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:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../../locator.dart'; import '../../../locator.dart';
import '../../MyAppointments/MyAppointments.dart';
import '../../medical/active_medications/ActiveMedicationsPage.dart';
import '../../medical/doctor/doctor_home_page.dart';
import '../../medical/labs/labs_home_page.dart';
import '../../medical/prescriptions/prescriptions_home_page.dart';
import '../../medical/radiology/radiology_home_page.dart';
import '../landing_page_pharmcy.dart'; import '../landing_page_pharmcy.dart';
class ServicesView extends StatelessWidget { class ServicesView extends StatelessWidget {
@ -58,18 +50,14 @@ class ServicesView extends StatelessWidget {
int index; int index;
AuthenticatedUser authUser = new AuthenticatedUser(); AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider(); AuthProvider authProvider = new AuthProvider();
PharmacyModuleViewModel pharmacyModuleViewModel = PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
locator<PharmacyModuleViewModel>();
late LocationUtils locationUtils; late LocationUtils locationUtils;
bool isHomePage; bool isHomePage;
ProjectViewModel? projectViewModel;
ServicesView(this.hmgServices, this.index, this.isHomePage); ServicesView(this.hmgServices, this.index, this.isHomePage);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return InkWell( return InkWell(
onTap: () { onTap: () {
if (isHomePage) { if (isHomePage) {
@ -81,9 +69,7 @@ class ServicesView extends StatelessWidget {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadiusWithGradientServices(20, decoration: containerRadiusWithGradientServices(20, lightColor: CustomColors.lightGreyColor, darkColor: CustomColors.darkGreyColor),
lightColor: CustomColors.lightGreyColor,
darkColor: CustomColors.darkGreyColor),
child: Stack( child: Stack(
children: [ children: [
Container( Container(
@ -128,11 +114,7 @@ class ServicesView extends StatelessWidget {
Container( Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.only( padding: EdgeInsets.only(left: SizeConfig.widthMultiplier! * 3, right: SizeConfig.widthMultiplier! * 3, top: SizeConfig.widthMultiplier! * 3, bottom: SizeConfig.widthMultiplier! * 2),
left: SizeConfig.widthMultiplier! * 3,
right: SizeConfig.widthMultiplier! * 3,
top: SizeConfig.widthMultiplier! * 3,
bottom: SizeConfig.widthMultiplier! * 2),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -140,18 +122,12 @@ class ServicesView extends StatelessWidget {
hmgServices.action == (isHomePage ? 5 : 8) hmgServices.action == (isHomePage ? 5 : 8)
? Image.asset( ? Image.asset(
hmgServices.icon, hmgServices.icon,
height: index == 0 height: index == 0 ? MediaQuery.of(context).size.width / 18 : MediaQuery.of(context).size.width / 18,
? MediaQuery.of(context).size.width / 18
: MediaQuery.of(context).size.width / 18,
) )
: Container( : Container(
// color: Colors.yellow, // color: Colors.yellow,
width: index == 4 width: index == 4 ? MediaQuery.of(context).size.width / 12 : MediaQuery.of(context).size.width / 12,
? MediaQuery.of(context).size.width / 12 height: index == 4 ? MediaQuery.of(context).size.width / 10 : MediaQuery.of(context).size.width / 12,
: MediaQuery.of(context).size.width / 12,
height: index == 4
? MediaQuery.of(context).size.width / 10
: MediaQuery.of(context).size.width / 12,
child: SvgPicture.asset( child: SvgPicture.asset(
hmgServices.icon, hmgServices.icon,
// width: MediaQuery.of(context).size.width / 12, // width: MediaQuery.of(context).size.width / 12,
@ -197,16 +173,14 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) { } else if (hmgServices.action == 1) {
openLiveCare(context); openLiveCare(context);
} else if (hmgServices.action == 2) { } else if (hmgServices.action == 2) {
Navigator.push(context, FadePage(page: ErOptions(isAppbar: true))); Navigator.push(context, FadePage(page: EROnlineCheckInHomePage()));
locator<GAnalytics>().hmgServices.logServiceName('emergency service'); locator<GAnalytics>().hmgServices.logServiceName('ER Online CheckIn');
} else if (hmgServices.action == 3) { } else if (hmgServices.action == 3) {
Navigator.push(context, FadePage(page: HomeHealthCarePage())); Navigator.push(context, FadePage(page: HomeHealthCarePage()));
locator<GAnalytics>().hmgServices.logServiceName('home health care'); locator<GAnalytics>().hmgServices.logServiceName('home health care');
} else if (hmgServices.action == 4) { } else if (hmgServices.action == 4) {
Navigator.push(context, FadePage(page: CMCPage())); Navigator.push(context, FadePage(page: CMCPage()));
locator<GAnalytics>() locator<GAnalytics>().hmgServices.logServiceName('comprehensive medical checkup');
.hmgServices
.logServiceName('comprehensive medical checkup');
} else if (hmgServices.action == 5) { } else if (hmgServices.action == 5) {
Navigator.push(context, FadePage(page: PaymentService())); Navigator.push(context, FadePage(page: PaymentService()));
locator<GAnalytics>().hmgServices.logServiceName('online payments'); locator<GAnalytics>().hmgServices.logServiceName('online payments');
@ -222,44 +196,6 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 23) { } else if (hmgServices.action == 23) {
Navigator.push(context, FadePage(page: InPatientServicesHome())); Navigator.push(context, FadePage(page: InPatientServicesHome()));
locator<GAnalytics>().hmgServices.logServiceName('find us reach us'); locator<GAnalytics>().hmgServices.logServiceName('find us reach us');
} else if (hmgServices.action == 31) {
Navigator.push(context, FadePage(page: MedicalProfilePageNew()));
locator<GAnalytics>().hmgServices.logServiceName('my medical file');
} else if (hmgServices.action == 24 &&
projectViewModel?.havePrivilege(5) == true) {
Navigator.push(context, FadePage(page: MyAppointments()));
locator<GAnalytics>().hmgServices.logServiceName('my appointment');
} else if (hmgServices.action == 25) {
Navigator.push(context, FadePage(page: LabsHomePage()));
locator<GAnalytics>().hmgServices.logServiceName('lab result');
} else if (hmgServices.action == 26 &&
projectViewModel?.havePrivilege(7) == true) {
Navigator.push(context, FadePage(page: RadiologyHomePage()));
locator<GAnalytics>().hmgServices.logServiceName('radiology result');
} else if (hmgServices.action == 27 &&
projectViewModel?.havePrivilege(12) == true) {
Navigator.push(context, FadePage(page: HomePrescriptionsPage()));
locator<GAnalytics>().hmgServices.logServiceName('medicine prescription');
} else if (hmgServices.action == 28 &&
projectViewModel?.havePrivilege(25) == true) {
Navigator.push(
context,
FadePage(page: VitalSignDetailsScreen()),
);
locator<GAnalytics>().hmgServices.logServiceName('vital signs');
} else if (hmgServices.action == 29 &&
projectViewModel?.havePrivilege(48) == true) {
Navigator.push(context, FadePage(page: ActiveMedicationsPage()));
locator<GAnalytics>().hmgServices.logServiceName('active medication');
} else if (hmgServices.action == 30 &&
projectViewModel?.havePrivilege(6) == true) {
Navigator.push(
context,
FadePage(
page: DoctorHomePage(),
),
);
locator<GAnalytics>().hmgServices.logServiceName('active medication');
} }
} }
@ -277,9 +213,7 @@ class ServicesView extends StatelessWidget {
locator<GAnalytics>().hmgServices.logServiceName('home health care'); locator<GAnalytics>().hmgServices.logServiceName('home health care');
} else if (hmgServices.action == 4) { } else if (hmgServices.action == 4) {
Navigator.push(context, FadePage(page: CMCPage())); Navigator.push(context, FadePage(page: CMCPage()));
locator<GAnalytics>() locator<GAnalytics>().hmgServices.logServiceName('comprehensive medical checkup');
.hmgServices
.logServiceName('comprehensive medical checkup');
} else if (hmgServices.action == 5) { } else if (hmgServices.action == 5) {
// getPharmacyToken(context); // getPharmacyToken(context);
Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); Uri uri = Uri.parse(PHARMACY_REDIRECT_URL);
@ -335,8 +269,7 @@ class ServicesView extends StatelessWidget {
MaterialPageRoute( MaterialPageRoute(
builder: (BuildContext context) => MyWebView( builder: (BuildContext context) => MyWebView(
title: "HMG News", title: "HMG News",
selectedUrl: selectedUrl:"https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
"https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
), ),
), ),
); );
@ -344,9 +277,6 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 22) { } else if (hmgServices.action == 22) {
Navigator.push(context, FadePage(page: ContactUsPage())); Navigator.push(context, FadePage(page: ContactUsPage()));
locator<GAnalytics>().hmgServices.logServiceName('find us reach us'); locator<GAnalytics>().hmgServices.logServiceName('find us reach us');
} else if (hmgServices.action == 31) {
Navigator.push(context, FadePage(page: MedicalProfilePageNew()));
locator<GAnalytics>().hmgServices.logServiceName('my medical file');
} }
// if (hmgServices.action == 10) { // if (hmgServices.action == 10) {
@ -480,8 +410,7 @@ class ServicesView extends StatelessWidget {
title: TranslationBase.of(context).covidConsentHeader, title: TranslationBase.of(context).covidConsentHeader,
message: TranslationBase.of(context).covidConsent, message: TranslationBase.of(context).covidConsent,
onTap: () async { onTap: () async {
Navigator.push( Navigator.push(context, FadePage(page: CovidDrivethruLocation()));
context, FadePage(page: CovidDrivethruLocation()));
}, },
)); ));
} else { } else {

@ -8,8 +8,6 @@ import 'package:diplomaticquarterapp/widgets/buttons/custom_text_button.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../theme/theme_value.dart';
class SliderView extends StatefulWidget { class SliderView extends StatefulWidget {
VoidCallback onLoginClick; VoidCallback onLoginClick;
@ -50,7 +48,7 @@ class _SliderViewState extends State<SliderView> {
children: [ children: [
mFlex(3), mFlex(3),
Container( Container(
decoration: projectViewModel.isArabic ? containerColorRadiusLeft(appColor, 100) : containerColorRadiusRight(appColor, 100), decoration: projectViewModel.isArabic ? containerColorRadiusLeft(Color(0xFFFBF2E31), 100) : containerColorRadiusRight(Color(0xFFFBF2E31), 100),
padding: EdgeInsets.only(left: projectViewModel.isArabic ? 16 : 20, right: projectViewModel.isArabic ? 20 : 16, top: 6, bottom: 6), padding: EdgeInsets.only(left: projectViewModel.isArabic ? 16 : 20, right: projectViewModel.isArabic ? 20 : 16, top: 6, bottom: 6),
child: Text( child: Text(
TranslationBase.of(context).medicalFile, TranslationBase.of(context).medicalFile,
@ -100,7 +98,7 @@ class _SliderViewState extends State<SliderView> {
child: CustomTextButton( child: CustomTextButton(
shape: cardRadiusNew(8), shape: cardRadiusNew(8),
//shape: OutlinedBorder(), //shape: OutlinedBorder(),
backgroundColor: appColor, backgroundColor: Color(0xFFFBF2E31),
elevation: 0, elevation: 0,
onPressed: () { onPressed: () {

@ -91,7 +91,7 @@ class _LiveCarePatmentPageState extends State<LiveCarePatmentPage> {
style: TextStyle( style: TextStyle(
fontSize: 16.0, fontSize: 16.0,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
letterSpacing: -0.66, letterSpacing: -0.66,
), ),
), ),
@ -255,7 +255,7 @@ class _LiveCarePatmentPageState extends State<LiveCarePatmentPage> {
fontSize: 12.0, fontSize: 12.0,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
), ),

@ -47,7 +47,7 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
return Container( return Container(
margin: EdgeInsets.only(left: 12, right: 12, top: widget.isFirstOrLast == 0 ? 12 : 6, bottom: widget.isFirstOrLast == 1 ? 12 : 6), margin: EdgeInsets.only(left: 12, right: 12, top: widget.isFirstOrLast == 0 ? 12 : 6, bottom: widget.isFirstOrLast == 1 ? 12 : 6),
decoration: BoxDecoration( decoration: BoxDecoration(
color: CustomColors.primaryColor, color: CustomColors.accentColor,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),

@ -63,7 +63,7 @@ class _State extends State<ClinicCard> {
), ),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(6.0), Radius.circular(6.0),
), ),
@ -110,7 +110,7 @@ class _State extends State<ClinicCard> {
width: 4, width: 4,
height: 4, height: 4,
decoration: containerRadius( decoration: containerRadius(
widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
100, 100,
), ),
), ),
@ -120,7 +120,7 @@ class _State extends State<ClinicCard> {
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
letterSpacing: -0.48, letterSpacing: -0.48,
), ),
), ),

@ -776,7 +776,7 @@ class _clinic_listState extends State<ClinicList> {
minWidth: MediaQuery.of(context).size.width * 0.7, minWidth: MediaQuery.of(context).size.width * 0.7,
height: 45.0, height: 45.0,
child: CustomTextButton( child: CustomTextButton(
backgroundColor: CustomColors.primaryColor, backgroundColor: CustomColors.accentColor,
disabledForegroundColor: Color(0xFFbcc2c4).withOpacity(0.38), disabledForegroundColor: Color(0xFFbcc2c4).withOpacity(0.38),
disabledBackgroundColor: Color(0xFFbcc2c4).withOpacity(0.12), disabledBackgroundColor: Color(0xFFbcc2c4).withOpacity(0.12),
elevation: 0, elevation: 0,

@ -109,7 +109,6 @@ class _ConfirmLogin extends State<ConfirmLogin> {
@override @override
void initState() { void initState() {
AppGlobal.context = context;
_getAvailableBiometrics(); _getAvailableBiometrics();
setDefault(); setDefault();
super.initState(); super.initState();
@ -308,7 +307,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/new/ic_logo.png', 'assets/images/habib-logo.png',
height: 90, height: 90,
width: 90, width: 90,
), ),

@ -4,7 +4,6 @@ import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/login/forgot-password.dart'; import 'package:diplomaticquarterapp/pages/login/forgot-password.dart';
import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/login.dart';
import 'package:diplomaticquarterapp/pages/login/register_new.dart'; import 'package:diplomaticquarterapp/pages/login/register_new.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/habib_logo_widget.dart'; import 'package:diplomaticquarterapp/widgets/habib_logo_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -69,26 +68,26 @@ class LoginType extends StatelessWidget {
], ],
), ),
), ),
// SizedBox( SizedBox(
// height: 43, height: 43,
// width: double.infinity, width: double.infinity,
// child: TextButton( child: TextButton(
// onPressed: () { onPressed: () {
// Navigator.of(context).push(FadePage(page: RegisterNew())); Navigator.of(context).push(FadePage(page: RegisterNew()));
// locator<GAnalytics>().loginRegistration.register_now(); locator<GAnalytics>().loginRegistration.register_now();
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).registerNow, TranslationBase.of(context).registerNow,
// style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
// ), ),
// style: TextButton.styleFrom( style: TextButton.styleFrom(
// backgroundColor: appColor, backgroundColor: Color(0xffD02127),
// shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
// ), ),
// ), ),
// ), ),
// ), ),
]), ]),
), ),
); );

@ -10,7 +10,6 @@ import 'package:diplomaticquarterapp/pages/login/confirm-login.dart';
import 'package:diplomaticquarterapp/pages/login/login-type.dart'; import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/login.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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';
@ -161,8 +160,7 @@ class _Register extends State<Register> {
child: DefaultButton(TranslationBase.of(context).cancel, () { child: DefaultButton(TranslationBase.of(context).cancel, () {
Navigator.of(context).pop(); Navigator.of(context).pop();
locator<GAnalytics>().loginRegistration.registration_cancel(step: 'enter details'); locator<GAnalytics>().loginRegistration.registration_cancel(step: 'enter details');
}, textColor: Colors.white, }, textColor: Colors.white, color: Color(0xffD02127))),
color: appColor)),
), ),
Expanded( Expanded(
child: Padding( child: Padding(

@ -84,7 +84,7 @@ class _WelcomeLogin extends State<WelcomeLogin> {
Navigator.of(context).push(FadePage(page: RegisterNew())), Navigator.of(context).push(FadePage(page: RegisterNew())),
locator<GAnalytics>().loginRegistration.visited_alhabib_group(false), locator<GAnalytics>().loginRegistration.visited_alhabib_group(false),
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
textColor: Colors.white, textColor: Colors.white,
), ),
), ),

@ -119,7 +119,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
() { () {
openResponseRateDialog(context); openResponseRateDialog(context);
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
], ],
@ -216,7 +216,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
rateDoctorResponse(); rateDoctorResponse();
} }
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
], ],
@ -303,7 +303,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
hintText: _hintText, hintText: _hintText,
fillColor: CustomColors.primaryColor, fillColor: CustomColors.accentColor,
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: isEnable ? 14 : 24, fontSize: isEnable ? 14 : 24,
height: 21 / 14, height: 21 / 14,

@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_mod
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; 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/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
@ -118,7 +117,7 @@ class _RequestTypePageState extends State<RequestTypePage> {
} }
}) })
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -10,7 +10,6 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.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/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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';
@ -351,7 +350,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
}); });
projectViewModel.analytics.advancePayments.wallet_payment_details(); projectViewModel.analytics.advancePayments.wallet_payment_details();
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -329,7 +329,6 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.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';
@ -207,7 +206,7 @@ class PrescriptionDetailsPageINP extends StatelessWidget {
return; return;
}, },
iconData: Icons.notifications_active, iconData: Icons.notifications_active,
color: appColor, color: Color(0xffD02127),
fontSize: 13.0, fontSize: 13.0,
//textColor: Color(0xff2B353E), //textColor: Color(0xff2B353E),
), ),

@ -9,7 +9,6 @@ import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.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';
@ -234,7 +233,7 @@ class _PrescriptionDetailsPageState extends State<PrescriptionDetailsPage> {
} }
}, },
iconData: Icons.notifications_active, iconData: Icons.notifications_active,
color: appColor, color: Color(0xffD02127),
fontSize: 13.0, fontSize: 13.0,
//textColor: Color(0xff2B353E), //textColor: Color(0xff2B353E),
), ),

@ -1373,7 +1373,7 @@ class DoctorsListService extends BaseService {
Future<Map> HIS_createAdvancePayment(AppoitmentAllHistoryResultList appo, String projectID, double payedAmount, String paymentReference, String paymentMethodName, dynamic patientType, Future<Map> HIS_createAdvancePayment(AppoitmentAllHistoryResultList appo, String projectID, double payedAmount, String paymentReference, String paymentMethodName, dynamic patientType,
String patientName, dynamic patientID, BuildContext context, String patientName, dynamic patientID, BuildContext context,
{bool isAncillaryOrder = false}) async { {bool isAncillaryOrder = false, int clinicID = 0}) async {
Map<String, dynamic> request; Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE));
@ -1765,6 +1765,57 @@ class DoctorsListService extends BaseService {
return Future.value(localRes); return Future.value(localRes);
} }
Future<Map> autoGenerateInvoiceERClinicWithNoPaymentDetails(int projectID, bool isAdvanceAvailable) async {
Map<String, dynamic> request;
request = {
"ProjectID": projectID,
"ClinicID": "10",
// "PaymentMethod": cardType,
// "PaymentReferenceNo": paymentReferenceNo,
// "PaymentAmount": amount,
// "CardType": cardType,
// "CardNumber": cardNumber,
// "OrderId": orderID,
"MemberID": 102,
// "RRN": rrn,
"IsAdvanceAvailable": isAdvanceAvailable
};
dynamic localRes;
await baseAppClient.post(AUTO_GENERATE_INVOICE_ER, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request, isAllowAny: true);
return Future.value(localRes);
}
Future<Map> autoGenerateInvoiceERClinic(
int projectID, int paymentMethod, String paymentReferenceNo, num amount, String cardType, String cardNumber, String orderID, String rrn, bool isAdvanceAvailable) async {
Map<String, dynamic> request;
request = {
"ProjectID": projectID,
"ClinicID": "10",
"PaymentMethod": cardType,
"PaymentReferenceNo": paymentReferenceNo,
"PaymentAmount": amount,
"CardType": cardType,
"CardNumber": cardNumber,
"OrderId": orderID,
"MemberID": 102,
"RRN": rrn,
"IsAdvanceAvailable": isAdvanceAvailable
};
dynamic localRes;
await baseAppClient.post(AUTO_GENERATE_INVOICE_ER, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request);
return Future.value(localRes);
}
Future<Map> checkPatientNphiesEligibility(int projectID) async { Future<Map> checkPatientNphiesEligibility(int projectID) async {
Map<String, dynamic> request; Map<String, dynamic> request;
request = {"ProjectID": projectID, "LanguageID": 1}; request = {"ProjectID": projectID, "LanguageID": 1};

@ -439,4 +439,47 @@ class ClinicListService extends BaseService {
return Future.value(localRes); return Future.value(localRes);
} }
Future<Map> getEROnlineCheckInPaymentDetails(int projectID, int clinicID) async {
Map<String, dynamic> request = {"ProjectID": projectID, "ClinicID": clinicID};
dynamic localRes;
await baseAppClient.post(GET_ER_ONLINE_PAYMENT_DETAILS, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request);
return Future.value(localRes);
}
Future<Map> checkIfPatientHasArrived(int projectID, int clinicID) async {
Map<String, dynamic> request = {"ProjectID": projectID, "ClinicID": clinicID};
dynamic localRes;
await baseAppClient.post(CHECK_IF_PATIENT_ARRIVED_ER_ONLINE_CHECKIN, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request, isAllowAny: true);
return Future.value(localRes);
}
Future<Map> checkPatientERClinicBalanceAmount(int clinicID) async {
Map<String, dynamic> request = {"ClinicID": clinicID};
dynamic localRes;
await baseAppClient.post(CHECK_PATIENT_ER_CLINIC_BALANCE_AMOUNT, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request, isAllowAny: true);
return Future.value(localRes);
}
Future<Map> getProjectIDFromNFC(String nfcID) async {
Map<String, dynamic> request = {"nFC_Code": nfcID};
dynamic localRes;
await baseAppClient.post(GET_PROJECT_FROM_NFC, onSuccess: (response, statusCode) async {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request, isAllowAny: true);
return Future.value(localRes);
}
} }

@ -54,9 +54,8 @@ class PayfortService extends BaseService {
"Pat_Token": result.tokenName, "Pat_Token": result.tokenName,
"IsRefund": false, "IsRefund": false,
"RemmeberMe": false, "RemmeberMe": false,
// "Reconciliation_Reference": result.reconciliationReference, "Reconciliation_Reference": result.reconciliationReference,
"LanguageID": 1, "LanguageID": 1,
"PatientID": patientID "PatientID": patientID
}; };
@ -144,7 +143,7 @@ class PayfortService extends BaseService {
String? customerName, String? customerName,
String? customerEmail, String? customerEmail,
String? orderDescription, String? orderDescription,
double? orderAmount, num? orderAmount,
String? merchantIdentifier, String? merchantIdentifier,
String? applePayAccessCode, String? applePayAccessCode,
String? applePayShaRequestPhrase, String? applePayShaRequestPhrase,
@ -177,7 +176,6 @@ class PayfortService extends BaseService {
merchantReference: merchantReference!, merchantReference: merchantReference!,
currency: currency, currency: currency,
customerIp: (await _info.getWifiIP() ?? ''), customerIp: (await _info.getWifiIP() ?? ''),
language: 'en'
); );
_payfort.callPayFortForApplePay( _payfort.callPayFortForApplePay(

@ -45,7 +45,7 @@ class PayfortViewModel extends ChangeNotifier {
String? customerEmail, String? customerEmail,
String? orderDescription, String? orderDescription,
String? merchantReference, String? merchantReference,
double? orderAmount, num? orderAmount,
PayfortProjectDetailsRespModel? payfortProjectDetailsRespModel, PayfortProjectDetailsRespModel? payfortProjectDetailsRespModel,
SucceededCallback? onSuccess, SucceededCallback? onSuccess,
FailedCallback? onFailed, FailedCallback? onFailed,

@ -97,7 +97,7 @@ class _SplashScreenState extends State<SplashScreen> {
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 53), padding: EdgeInsets.symmetric(horizontal: 53),
child: Image.asset( child: Image.asset(
'assets/images/new/ic_logo.png', 'assets/images/new/hmg_logo.png',
fit: BoxFit.fitWidth, fit: BoxFit.fitWidth,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
), ),

@ -1,4 +1,3 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class CustomColors { class CustomColors {
@ -12,7 +11,6 @@ class CustomColors {
static const Color black = Color(0xFF141414); static const Color black = Color(0xFF141414);
static const Color white = Color(0xFFFFFFFF); static const Color white = Color(0xFFFFFFFF);
static const Color accentColor = Color(0xFFD02127); static const Color accentColor = Color(0xFFD02127);
static const Color primaryColor = appColor;
static const Color lightGreyColor = Color(0xFFE2E2E2); static const Color lightGreyColor = Color(0xFFE2E2E2);
static const Color devider = Color(0xFFE5E5E5); static const Color devider = Color(0xFFE5E5E5);
static const Color darkGreyColor = Color(0xFFC9C9C9); static const Color darkGreyColor = Color(0xFFC9C9C9);

@ -10,27 +10,13 @@ import 'package:flutter/services.dart';
final bluePrimary = Color(0xFF00000); final bluePrimary = Color(0xFF00000);
final blueAccent = Color(0xFFFF9800); final blueAccent = Color(0xFFFF9800);
final blueBackground = Color(0xFFFFFFFF); final blueBackground = Color(0xFFFFFFFF);
const MaterialColor appColor = MaterialColor(
0xFF045531,
<int, Color>{
50: Color(0xFFFFEBEE),
100: Color(0xFF2E6049),
200: Color(0xFF185339),
300: Color(0xFF125939),
400: Color(0xE6085734),
500: Color(0xFF045531),
600: Color(0xFF024024),
700: Color(0xFF034226),
800: Color(0xFF022C1A),
900: Color(0xFF011C10),
},
);
defaultTheme({fontName}) { defaultTheme({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
useMaterial3: false, useMaterial3: false,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
@ -74,7 +60,7 @@ invertThemes({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
useMaterial3: false, useMaterial3: false,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
@ -112,7 +98,7 @@ bwThemes({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
useMaterial3: false, useMaterial3: false,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
@ -127,14 +113,14 @@ bwThemes({fontName}) {
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
textTheme: TextTheme( textTheme: TextTheme(
bodyText1: TextStyle(color: appColor[900]), bodyText1: TextStyle(color: Colors.red[900]),
headline1: TextStyle(color: appColor[900]), headline1: TextStyle(color: Colors.red[900]),
headline2: TextStyle(color: Colors.white), headline2: TextStyle(color: Colors.white),
bodyText2: TextStyle(color: appColor[900]), bodyText2: TextStyle(color: Colors.red[900]),
subtitle1: TextStyle(color: appColor[900]), subtitle1: TextStyle(color: Colors.red[900]),
), ),
tabBarTheme: TabBarTheme(labelColor: appColor[900]), tabBarTheme: TabBarTheme(labelColor: Colors.red[900]),
disabledColor: Colors.grey[800], disabledColor: Colors.grey[800],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
@ -162,7 +148,7 @@ dimTheme({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
useMaterial3: false, useMaterial3: false,

@ -157,7 +157,7 @@ class TranslationBase {
String get welcomeTo => localizedValues['welcome-to'][locale.languageCode]; String get welcomeTo => localizedValues['welcome-to'][locale.languageCode];
String get kingKhalidUniversity => localizedValues['king-khalid-university'][locale.languageCode]; String get drSulaimanText => localizedValues['dr-sulaiman-text'][locale.languageCode];
String get patientApp => localizedValues['patient-app'][locale.languageCode]; String get patientApp => localizedValues['patient-app'][locale.languageCode];
@ -567,8 +567,6 @@ class TranslationBase {
String get myMedicalFile => localizedValues['MyMedicalFile'][locale.languageCode]; String get myMedicalFile => localizedValues['MyMedicalFile'][locale.languageCode];
String get myMedicalFiles => localizedValues['MyMedicalFiles'][locale.languageCode];
String get myMedicalFileSubTitle => localizedValues['myMedicalFileSubTitle'][locale.languageCode]; String get myMedicalFileSubTitle => localizedValues['myMedicalFileSubTitle'][locale.languageCode];
String get viewMore => localizedValues['viewMore'][locale.languageCode]; String get viewMore => localizedValues['viewMore'][locale.languageCode];
@ -2965,7 +2963,6 @@ class TranslationBase {
String get selectHospitalBloodDonation => localizedValues["selectHospitalBloodDonation"][locale.languageCode]; String get selectHospitalBloodDonation => localizedValues["selectHospitalBloodDonation"][locale.languageCode];
String get wecare => localizedValues["wecare"][locale.languageCode]; String get wecare => localizedValues["wecare"][locale.languageCode];
String get myinstructions => localizedValues["myinstructions"][locale.languageCode]; String get myinstructions => localizedValues["myinstructions"][locale.languageCode];
String get allServices => localizedValues["allServices"][locale.languageCode];
} }

File diff suppressed because it is too large Load Diff

@ -1,6 +1,4 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:gif_view/gif_view.dart'; import 'package:gif_view/gif_view.dart';
class GifLoaderContainer extends StatefulWidget { class GifLoaderContainer extends StatefulWidget {
@ -44,8 +42,9 @@ class _GifLoaderContainerState extends State<GifLoaderContainer> with TickerProv
//progress-loading.gif //progress-loading.gif
child: Container( child: Container(
// margin: EdgeInsets.only(bottom: 40), // margin: EdgeInsets.only(bottom: 40),
child: CircularProgressIndicator( child: GifView(
color: appColor, controller: controller,
image: AssetImage("assets/images/progress-loading-red.gif"), //NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"),
), ),
), ),
), ),

@ -57,15 +57,15 @@ class _BottomNavBarState extends State<BottomNavBar> {
currentIndex: 1, currentIndex: 1,
name: TranslationBase.of(context).medicalFile, name: TranslationBase.of(context).medicalFile,
), ),
// BottomNavigationItem( BottomNavigationItem(
// icon: "assets/images/new/bottom_nav/family_files.svg", icon: "assets/images/new/bottom_nav/family_files.svg",
// activeIcon: "assets/images/new/bottom_nav/family_files.svg", activeIcon: "assets/images/new/bottom_nav/family_files.svg",
// changeIndex: _changeIndex, changeIndex: _changeIndex,
// index: widget.index, index: widget.index,
// currentIndex: 3, currentIndex: 3,
// name: TranslationBase.of(context).myFamily, name: TranslationBase.of(context).myFamily,
// isDisabled: projectViewModel.isLoginChild, isDisabled: projectViewModel.isLoginChild,
// ), ),
if (widget.index == 0) if (widget.index == 0)
(widget.showHomeIcon) (widget.showHomeIcon)
? BottomNavigationItem( ? BottomNavigationItem(
@ -94,15 +94,15 @@ class _BottomNavBarState extends State<BottomNavBar> {
// currentIndex: 2, // currentIndex: 2,
// name: TranslationBase.of(context).bookAppo, // name: TranslationBase.of(context).bookAppo,
// ), // ),
// if (/*widget.index == 0 && */ projectViewModel.havePrivilege(34)) if (/*widget.index == 0 && */ projectViewModel.havePrivilege(34))
// BottomNavigationItem( BottomNavigationItem(
// icon: "assets/images/new/bottom_nav/todo.svg", icon: "assets/images/new/bottom_nav/todo.svg",
// activeIcon: "assets/images/new/bottom_nav/todo.svg", activeIcon: "assets/images/new/bottom_nav/todo.svg",
// changeIndex: _changeIndex, changeIndex: _changeIndex,
// index: widget.index, index: widget.index,
// currentIndex: 4, currentIndex: 4,
// name: TranslationBase.of(context).todoList, name: TranslationBase.of(context).todoList,
// ), ),
if (projectViewModel.havePrivilege(77)) if (projectViewModel.havePrivilege(77))
BottomNavigationItem( BottomNavigationItem(
icon: "assets/images/new/bottom_nav/help.svg", icon: "assets/images/new/bottom_nav/help.svg",

@ -1,8 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import '../../theme/theme_value.dart';
extension WithContainer on Widget { extension WithContainer on Widget {
Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this); Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this);
@ -23,7 +21,7 @@ class DefaultButton extends StatelessWidget {
final bool isTextExpanded; final bool isTextExpanded;
final int count; final int count;
DefaultButton(this.text, this.onPress, {this.color = appColor, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize}); DefaultButton(this.text, this.onPress, {this.color, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -73,7 +71,7 @@ class DefaultButton extends StatelessWidget {
], ],
), ),
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: color ?? appColor, backgroundColor: color ?? const Color(0xffD02127),
disabledForegroundColor: disabledColor, disabledForegroundColor: disabledColor,
disabledBackgroundColor: disabledColor, disabledBackgroundColor: disabledColor,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(

@ -1,12 +1,8 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../uitl/translations_delegate_base.dart';
/// FloatingButton widget /// FloatingButton widget
/// [onTap] button function /// [onTap] button function
/// [elevation] color elevation value /// [elevation] color elevation value
@ -74,42 +70,27 @@ class _FloatingButtonState extends State<FloatingButton>
child: AnimatedContainer( child: AnimatedContainer(
duration: Duration(milliseconds: 150), duration: Duration(milliseconds: 150),
margin: EdgeInsets.only(bottom: 4), margin: EdgeInsets.only(bottom: 4),
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.all(Radius.circular(70.0)), borderRadius: BorderRadius.all(Radius.circular(70.0)),
color: appColor, color: Theme.of(context).primaryColor,
shape: BoxShape.circle, boxShadow: [
BoxShadow(
), color: Color.fromRGBO(
child: Padding( 120, 71, 80, widget.elevation ? 0.28 : 0.0),
padding: const EdgeInsets.all(18), spreadRadius:
child: Column( _buttonSize < 1.0 ? -(1 - _buttonSize) * 50 : 0.0,
mainAxisSize: MainAxisSize.min, offset: Offset(0, 7.0),
mainAxisAlignment: MainAxisAlignment.center, blurRadius: 70.0)
children: [ ]),
SvgPicture.asset( child: Image.asset(
"assets/images/new/book appointment.svg", projectViewModel.isArabic
width: 50, ? 'assets/images/book_appointment_ar.png'
height: 30, : 'assets/images/appointment_booking_en.png',
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn) // fit: BoxFit.cover,
), width: 90,
Text( height: 90,
TranslationBase.of(context).book,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, color: Colors.white,),
), Text(
TranslationBase.of(context).appointmentLabel,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 8, fontWeight: FontWeight.w400, color: Colors.white,),
),
],
),
),
)
), ),
))); )),
));
} }
} }

@ -1,7 +1,6 @@
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/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.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';
@ -97,7 +96,7 @@ class DoctorCard extends StatelessWidget {
: isLiveCareAppointment != null && isLiveCareAppointment == true : isLiveCareAppointment != null && isLiveCareAppointment == true
? Color(0xff2E303A) ? Color(0xff2E303A)
: isInOutPatient != null && isInOutPatient == false : isInOutPatient != null && isInOutPatient == false
? appColor ? Color(0xffD02127)
: Color(0xffa9a089), : Color(0xffa9a089),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: projectViewModel!.isArabic ? Radius.circular(0) : Radius.circular(10), topLeft: projectViewModel!.isArabic ? Radius.circular(0) : Radius.circular(10),
@ -211,15 +210,15 @@ class DoctorCard extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],

@ -23,8 +23,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../theme/theme_value.dart';
class TimeLineView extends StatefulWidget { class TimeLineView extends StatefulWidget {
bool isLogged, isArabic; bool isLogged, isArabic;
List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList; List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList;
@ -306,7 +304,7 @@ class _TimeLineViewState extends State<TimeLineView> {
child: CustomTextButton( child: CustomTextButton(
shape: cardRadiusNew(8), shape: cardRadiusNew(8),
elevation: 0, elevation: 0,
backgroundColor: appColor, backgroundColor: Color(0xFFFBF2E31),
onPressed: () { onPressed: () {
// onLoginClick(); // onLoginClick();
login(); login();

@ -105,7 +105,9 @@ class _AppDrawerState extends State<AppDrawer> {
child: ListView( child: ListView(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
children: <Widget>[ children: <Widget>[
InkWell( Container(
height: SizeConfig.screenHeight! * .30,
child: InkWell(
child: Padding( child: Padding(
padding: const EdgeInsets.all(14.0), padding: const EdgeInsets.all(14.0),
child: Column( child: Column(
@ -116,9 +118,8 @@ class _AppDrawerState extends State<AppDrawer> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Image.asset( SvgPicture.asset(
'assets/images/new/ic_logo.png', "assets/images/new/logo.svg",
fit: BoxFit.fitWidth,
height: 60, height: 60,
width: 60, width: 60,
), ),
@ -131,9 +132,10 @@ class _AppDrawerState extends State<AppDrawer> {
], ],
), ),
), ),
SizedBox( mHeight(12),
Container(
width: double.infinity, width: double.infinity,
// margin: EdgeInsets.only(top: 12), margin: EdgeInsets.only(top: 12),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -153,6 +155,10 @@ class _AppDrawerState extends State<AppDrawer> {
height: 1, height: 1,
), ),
), ),
mHeight(20.0),
(user != null && projectProvider!.isLogin)
? Image.network("https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${user!.patientID.toString()}", fit: BoxFit.fill, height: 73.5, width: 73.5)
: Container(),
], ],
), ),
), ),
@ -160,16 +166,17 @@ class _AppDrawerState extends State<AppDrawer> {
), ),
), ),
), ),
),
Container( Container(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
(user != null && projectProvider!.isLogin) (user != null && projectProvider!.isLogin)
? SizedBox.shrink() ? Container()
: InkWell( : InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).arabicChange, TranslationBase.of(context).arabicChange,
Image.asset('assets/images/lang.png'), Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.all(3)),
isImageIcon: true, isImageIcon: true,
bottomLine: false, bottomLine: false,
projectProvider: projectProvider, projectProvider: projectProvider,
@ -192,6 +199,139 @@ class _AppDrawerState extends State<AppDrawer> {
? Column( ? Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
(user!.isFamily == null || user!.isFamily == false)
? InkWell(
child: DrawerItem(TranslationBase.of(context).family, SvgPicture.asset("assets/images/new/family_files.svg"),
isImageIcon: true,
bottomLine: false,
textColor: Theme.of(context).textTheme.bodyText1!.color,
iconColor: Theme.of(context).textTheme.bodyText1!.color,
sideArrow: true,
letterSpacing: -0.84,
projectProvider: projectProvider),
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).pushNamed(
MY_FAMILIY,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('my family');
},
)
: SizedBox(),
FutureBuilder(
future: getFamilyFiles(), // async work
builder: (BuildContext context, AsyncSnapshot<GetAllSharedRecordsByStatusResponse?> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator());
default:
if (snapshot.hasError)
return Padding(padding: EdgeInsets.all(10), child: Text(snapshot.error.toString()));
else
return Container(
child: Column(
children: [
user!.isFamily == true
? Container(
padding: EdgeInsets.only(bottom: 5, left: 4),
child: InkWell(
onTap: () {
switchUser(mainUser, context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: SvgPicture.asset("assets/images/new/family_files.svg"),
),
Expanded(
flex: 7,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
mainUser!.firstName! + ' ' + mainUser!.lastName!,
color: Color(0xff2E303A), //Theme.of(context).textTheme.bodyText1.color,
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.33,
),
AppText(
TranslationBase.of(context).fileno + ": " + mainUser!.patientID.toString(),
color: Color(0xff989898),
fontSize: 12,
letterSpacing: -0.33,
),
Container(
height: 1,
margin: EdgeInsets.only(top: 7.5),
color: Color(0xffEDEDED),
),
],
),
),
],
),
),
)
: SizedBox(),
Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: snapshot.data!.getAllSharedRecordsByStatusList!.map<Widget>((result) {
return result.status == 3
? Container(
padding: EdgeInsets.only(bottom: 5),
child: InkWell(
onTap: () {
switchUser(result, context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Icon(Icons.person, color: result.responseID == user!.patientID ? Colors.transparent : Colors.transparent),
),
Expanded(
flex: 7,
child: Padding(
padding: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
result.patientName!,
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff2B353E),
fontWeight: FontWeight.w600,
fontSize: 11,
letterSpacing: -0.33,
),
AppText(
TranslationBase.of(context).fileno + ": " + result.responseID.toString(),
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff989898),
fontSize: 11,
letterSpacing: -0.33,
),
Divider(
color: Colors.grey[400],
),
],
),
),
),
],
),
),
)
: SizedBox();
}).toList())
],
));
}
},
),
mHeight(20),
InkWell( InkWell(
child: DrawerItem(TranslationBase.of(context).arabicChange, child: DrawerItem(TranslationBase.of(context).arabicChange,
Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.only(left: 3, right: 3, top: 3, bottom: projectProvider!.isArabic ? 3 : 0)), Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.only(left: 3, right: 3, top: 3, bottom: projectProvider!.isArabic ? 3 : 0)),
@ -228,7 +368,73 @@ class _AppDrawerState extends State<AppDrawer> {
// readQRCode(); // readQRCode();
// }, // },
// ), // ),
InkWell(
child: Stack(
children: [
DrawerItem(
TranslationBase.of(context).notification,
SvgPicture.asset("assets/images/new/notifications.svg"),
isImageIcon: true,
bottomLine: false,
letterSpacing: -0.84,
fontSize: 14,
projectProvider: projectProvider,
count: toDoProvider!.notificationsCount != "0" && !projectProvider!.isLoginChild
? new Container(
padding: EdgeInsets.all(4),
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20),
),
constraints: BoxConstraints(
minWidth: 20,
minHeight: 20,
),
child: new Text(
toDoProvider!.notificationsCount.toString(),
style: new TextStyle(
color: Colors.white,
fontSize: projectProvider!.isArabic ? 8 : 9,
),
textAlign: TextAlign.center,
),
// ),
)
: SizedBox(),
),
],
),
onTap: () {
//NotificationsPage
// Navigator.of(context).pop();
if (!projectProvider!.isLoginChild) Navigator.push(context, FadePage(page: NotificationsPage()));
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('notifications');
},
),
if (projectProvider!.havePrivilege(3))
InkWell(
child: DrawerItem(TranslationBase.of(context).appsetting, SvgPicture.asset("assets/images/new/app_setting.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
onTap: () {
Navigator.of(context).pushNamed(
SETTINGS,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('app settings');
},
),
InkWell(
child: DrawerItem(TranslationBase.of(context).rateApp, Icons.star, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
onTap: () {
openAppReviewDialog();
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('rate our app');
// if (Platform.isIOS) {
// launchUrl(Uri.parse("https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978"));
// } else {
// launchUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en"));
// }
},
),
InkWell( InkWell(
child: DrawerItem(TranslationBase.of(context).logout, SvgPicture.asset("assets/images/new/logout.svg"), child: DrawerItem(TranslationBase.of(context).logout, SvgPicture.asset("assets/images/new/logout.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider), isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
@ -245,21 +451,21 @@ class _AppDrawerState extends State<AppDrawer> {
login(); login();
}, },
), ),
// InkWell( InkWell(
// child: DrawerItem(TranslationBase.of(context).privacyPolicy, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false), child: DrawerItem(TranslationBase.of(context).privacyPolicy, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
// onTap: () { onTap: () {
// if (projectProvider!.isArabic) if (projectProvider!.isArabic)
// launch("https://hmg.com/ar/Pages/Privacy.aspx"); launch("https://hmg.com/ar/Pages/Privacy.aspx");
// else else
// launch("https://hmg.com/en/Pages/Privacy.aspx"); launch("https://hmg.com/en/Pages/Privacy.aspx");
// }, },
// ), ),
// InkWell( InkWell(
// child: DrawerItem(TranslationBase.of(context).termsConditions, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false), child: DrawerItem(TranslationBase.of(context).termsConditions, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
// onTap: () { onTap: () {
// Navigator.of(context).push(FadePage(page: UserAgreementPage())); Navigator.of(context).push(FadePage(page: UserAgreementPage()));
// }, },
// ) )
], ],
)) ))
], ],

@ -1,4 +1,3 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
@ -9,8 +8,8 @@ class HabibLogoWidget extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Row( return Row(
children: [ children: [
Image.asset( SvgPicture.asset(
'assets/images/new/ic_logo.png', "assets/images/new/hmg_icon.svg",
height: 62, height: 62,
width: 62, width: 62,
), ),
@ -26,12 +25,12 @@ class HabibLogoWidget extends StatelessWidget {
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12),
), ),
Text( Text(
TranslationBase.of(context).kingKhalidUniversity, TranslationBase.of(context).drSulaimanText,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
TranslationBase.of(context).patientApp, TranslationBase.of(context).patientApp,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: appColor, letterSpacing: -0.72), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.72),
), ),
SizedBox(height: 2), SizedBox(height: 2),
], ],

@ -343,7 +343,7 @@ class MyInAppBrowser extends InAppBrowser {
form = form.replaceFirst('PROJECT_ID_VALUE', projId); form = form.replaceFirst('PROJECT_ID_VALUE', projId);
form = form.replaceFirst('PAYMENT_OPTION_VALUE', paymentMethod); form = form.replaceFirst('PAYMENT_OPTION_VALUE', paymentMethod);
form = form.replaceFirst('LANG_VALUE', currentLanguageID); form = form.replaceFirst('LANG_VALUE', currentLanguageID);
form = form.replaceFirst('SERVICE_URL_VALUE', "https://mdlaboratories.com/tamaralive/Home/Checkout"); form = form.replaceFirst('SERVICE_URL_VALUE', "https://mdlaboratories.com/tamara/Home/Checkout");
form = form.replaceFirst('INSTALLMENTS_VALUE', installments); form = form.replaceFirst('INSTALLMENTS_VALUE', installments);
form = form.replaceFirst('CUSTNATIONALID_VALUE', authUser.patientIdentificationNo!); form = form.replaceFirst('CUSTNATIONALID_VALUE', authUser.patientIdentificationNo!);

@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart'
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.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/theme/theme_value.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';
@ -140,15 +139,15 @@ class DoctorHeader extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],
@ -179,7 +178,7 @@ class DoctorHeader extends StatelessWidget {
child: Container( child: Container(
padding: EdgeInsets.only(top: 10, bottom: 10, right: 15, left: 15), padding: EdgeInsets.only(top: 10, bottom: 10, right: 15, left: 15),
decoration: BoxDecoration( decoration: BoxDecoration(
color: appColor, borderRadius: projectViewModel.isArabic ? BorderRadius.only(topRight: Radius.circular(10)) : BorderRadius.only(topLeft: Radius.circular(10))), color: Color(0XFFD02127), borderRadius: projectViewModel.isArabic ? BorderRadius.only(topRight: Radius.circular(10)) : BorderRadius.only(topLeft: Radius.circular(10))),
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -305,15 +304,15 @@ class DoctorHeader extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],

@ -1,8 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/filter_type.dart'; import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../theme/theme_value.dart';
class MyTabView extends StatelessWidget { class MyTabView extends StatelessWidget {
final String title; final String title;
final FilterType value; final FilterType value;
@ -38,7 +36,7 @@ class MyTabView extends StatelessWidget {
Container( Container(
margin: EdgeInsets.only(top: 13), margin: EdgeInsets.only(top: 13),
height: 3, height: 3,
color: value == groupValue ? appColor : Colors.transparent, color: value == groupValue ? Color(0xffD02127) : Colors.transparent,
) )
], ],
), ),

@ -41,6 +41,7 @@ class AppExpandableNotifier extends StatefulWidget {
} }
class _AppExpandableNotifier extends State<AppExpandableNotifier> { class _AppExpandableNotifier extends State<AppExpandableNotifier> {
late ProjectViewModel projectViewModel;
@override @override
void initState() { void initState() {
@ -55,9 +56,10 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
String _mainTitle = (widget.title ?? TranslationBase.of(context).details).trim(); String _mainTitle = (widget.title ?? TranslationBase.of(context).details).trim();
String _title = _mainTitle.contains(" ") ? (context.read<ProjectViewModel>().isArabic ? (_mainTitle.split(" ").length < 1 ? _mainTitle : _mainTitle.split(" ")[1]) : _mainTitle.split(" ")[0]) : _mainTitle; String _title = _mainTitle.contains(" ") ? (projectViewModel.isArabic ? (_mainTitle.split(" ").length < 1 ? _mainTitle : _mainTitle.split(" ")[1]) : _mainTitle.split(" ")[0]) : _mainTitle;
// String _title = _mainTitle.split(" ")[0]; // String _title = _mainTitle.split(" ")[0];
String _subTitle = _mainTitle.replaceAll(_title, "").trim(); String _subTitle = _mainTitle.replaceAll(_title, "").trim();

@ -17,7 +17,6 @@ import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../splashPage.dart'; import '../../splashPage.dart';
import '../../theme/theme_value.dart';
class NotAutPage extends StatefulWidget { class NotAutPage extends StatefulWidget {
final String title; final String title;
@ -115,7 +114,7 @@ class _NotAutPageState extends State<NotAutPage> {
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
), ),
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: appColor, backgroundColor: Color(0xffD02127),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
), ),
@ -335,8 +334,23 @@ class _NotAutPageState extends State<NotAutPage> {
if (data != null) { if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN); Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else { } else {
Navigator.of(context).pushNamed(LOGIN_TYPE); GifLoaderDialogUtils.showMyDialog(context);
authService.selectDeviceImei(DEVICE_TOKEN).then((SelectDeviceIMEIRES? value) {
GifLoaderDialogUtils.hideDialog(context);
if (value != null) {
sharedPref.setObject(IMEI_USER_DATA, value);
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
});
} }
} }
} }

Loading…
Cancel
Save