diff --git a/SmsOtpAutoVerifyPlugin.kt b/SmsOtpAutoVerifyPlugin.kt
new file mode 100644
index 00000000..a6fafd90
--- /dev/null
+++ b/SmsOtpAutoVerifyPlugin.kt
@@ -0,0 +1,216 @@
+package com.oohyugi.sms_otp_auto_verify
+
+import android.app.Activity
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+
+import android.content.IntentFilter
+import android.content.IntentSender
+import android.os.Build
+import android.telephony.TelephonyManager
+import android.util.Log
+import androidx.annotation.RequiresApi
+import com.google.android.gms.auth.api.credentials.Credential
+import io.flutter.plugin.common.MethodCall
+import io.flutter.plugin.common.MethodChannel
+import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
+import com.google.android.gms.auth.api.phone.SmsRetriever;
+import com.google.android.gms.auth.api.phone.SmsRetrieverClient
+import io.flutter.embedding.engine.plugins.FlutterPlugin
+import io.flutter.embedding.engine.plugins.activity.ActivityAware
+import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
+import io.flutter.plugin.common.BinaryMessenger
+import io.flutter.plugin.common.PluginRegistry
+import com.google.android.gms.auth.api.credentials.Credentials
+import com.google.android.gms.auth.api.credentials.HintRequest
+import io.flutter.plugin.common.PluginRegistry.Registrar
+import androidx.core.content.ContextCompat
+import androidx.core.content.ContextCompat.RECEIVER_EXPORTED
+
+
+/** SmsOtpAutoVerifyPlugin */
+class SmsOtpAutoVerifyPlugin : FlutterPlugin, MethodCallHandler,
+ MySmsListener, ActivityAware {
+ private var channel: MethodChannel? = null
+ private var pendingResult: MethodChannel.Result? = null
+ private var receiver: SmsBroadcastReceiver? = null
+ private var alreadyCalledSmsRetrieve = false
+ private var client: SmsRetrieverClient? = null
+ private var activity: Activity? = null
+ private var binding: ActivityPluginBinding? = null
+
+ private val activityResultListener: PluginRegistry.ActivityResultListener =
+ object : PluginRegistry.ActivityResultListener {
+ override fun onActivityResult(
+ requestCode: Int,
+ resultCode: Int,
+ data: Intent?
+ ): Boolean {
+ if (requestCode == REQUEST_RESOLVE_HINT) {
+ if (resultCode == Activity.RESULT_OK && data != null) {
+ val credential: Credential? = data.getParcelableExtra(Credential.EXTRA_KEY)
+ val phoneNumber: String? = credential?.id
+ pendingResult?.success(phoneNumber)
+ } else {
+ pendingResult?.success(null)
+ }
+ return true
+ }
+ return false
+ }
+ }
+
+ companion object {
+ private const val channelName = "sms_otp_auto_verify"
+ private const val REQUEST_RESOLVE_HINT = 1256
+
+ @JvmStatic
+ fun setup(plugin: SmsOtpAutoVerifyPlugin, binaryMessenger: BinaryMessenger) {
+ plugin.channel = MethodChannel(binaryMessenger, channelName)
+ plugin.channel?.setMethodCallHandler(plugin)
+ plugin.binding?.addActivityResultListener(plugin.activityResultListener)
+
+ }
+ }
+
+
+ override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
+ setup(plugin = this, binding.binaryMessenger)
+ }
+
+ override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
+ unregister()
+ }
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
+ when (call.method) {
+ "getAppSignature" -> {
+ activity?.let {
+ val signature = AppSignatureHelper(it).getAppSignatures()[0]
+ result.success(signature)
+ }
+
+ }
+
+ "startListening" -> {
+ this.pendingResult = result
+ receiver = SmsBroadcastReceiver()
+ startListening()
+
+ }
+
+ "stopListening" -> {
+ pendingResult = null
+ unregister()
+ }
+
+ "requestPhoneHint" -> {
+ this.pendingResult = result
+ requestHint()
+
+ }
+
+ else -> result.notImplemented()
+ }
+ }
+
+ private fun requestHint() {
+ if (!isSimSupport()) {
+ pendingResult?.success(null)
+ return
+ }
+
+ val hintRequest = HintRequest.Builder()
+ .setPhoneNumberIdentifierSupported(true)
+ .build()
+
+ activity?.apply {
+ val intent = Credentials.getClient(this).getHintPickerIntent(hintRequest)
+ try {
+ startIntentSenderForResult(
+ intent.intentSender,
+ REQUEST_RESOLVE_HINT, null, 0, 0, 0
+ )
+ } catch (e: IntentSender.SendIntentException) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ private fun isSimSupport(): Boolean {
+ val telephonyManager: TelephonyManager =
+ activity!!.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
+ return (telephonyManager.simState == TelephonyManager.SIM_STATE_ABSENT)
+ }
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ private fun startListening() {
+ activity?.let {
+ client = SmsRetriever.getClient(it)
+ }
+ val task = client?.startSmsRetriever()
+ task?.addOnSuccessListener {
+ // Successfully started retriever, expect broadcast intent
+ unregister()
+ Log.e(javaClass::getSimpleName.name, "task started")
+ receiver?.setSmsListener(this)
+
+ activity?.applicationContext?.let { it1 ->
+ ContextCompat.registerReceiver(
+ it1, receiver,
+ IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION), RECEIVER_EXPORTED)
+ }
+ }
+ }
+
+ private fun unregister() {
+ alreadyCalledSmsRetrieve = false
+ if (receiver != null) {
+ try {
+ activity?.unregisterReceiver(receiver)
+ Log.d(javaClass::getSimpleName.name, "task stoped")
+ receiver = null
+ } catch (e: Exception) {
+ }
+ }
+ }
+
+ override fun onOtpReceived(message: String?) {
+ message?.let {
+ if (!alreadyCalledSmsRetrieve) {
+ pendingResult?.success(it)
+ alreadyCalledSmsRetrieve = true
+ } else {
+ Log.d("onOtpReceived: ", "already called")
+ }
+ }
+
+ }
+
+ override fun onOtpTimeout() {
+ }
+
+
+ override fun onAttachedToActivity(binding: ActivityPluginBinding) {
+ activity = binding.activity
+ this.binding = binding
+ binding.addActivityResultListener(activityResultListener); }
+
+ override fun onDetachedFromActivityForConfigChanges() {
+ unregister()
+ }
+
+ override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
+ activity = binding.activity
+ this.binding = binding
+ binding.addActivityResultListener(activityResultListener);
+ }
+
+ override fun onDetachedFromActivity() {
+ unregister()
+ }
+
+
+}
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 965934fd..75a9b598 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -41,7 +41,7 @@ configurations.all {
}
android {
- compileSdkVersion 33
+ compileSdkVersion 34
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -57,7 +57,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.ejada.hmg"
minSdkVersion 21
- targetSdkVersion 33
+ targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
diff --git a/android/build.gradle b/android/build.gradle
index e723adba..78038517 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.7.20'
+ ext.kotlin_version = '1.8.0'
repositories {
google()
jcenter()
diff --git a/apple-app-site-association.json b/apple-app-site-association.json
new file mode 100644
index 00000000..3c3a8b7e
--- /dev/null
+++ b/apple-app-site-association.json
@@ -0,0 +1,11 @@
+{
+ "applinks": {
+ "apps": [],
+ "details": [
+ {
+ "appID": "3A359E86ZF.com.HMG.HMG-Smartphone",
+ "paths": ["*"]
+ }
+ ]
+ }
+ }
\ No newline at end of file
diff --git a/assetlinks.json b/assetlinks.json
new file mode 100644
index 00000000..d68ca550
--- /dev/null
+++ b/assetlinks.json
@@ -0,0 +1,26 @@
+[
+ {
+ "relation": [
+ "delegate_permission/common.handle_all_urls"
+ ],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "com.ejada.hmg",
+ "sha256_cert_fingerprints": [
+ "57:EA:97:F9:C2:03:52:83:C1:13:E7:D9:9E:AD:55:B3:77:07:C5:14:6C:AA:1E:C8:70:24:73:DD:7F:25:A8:7B"
+ ]
+ }
+ },
+ {
+ "relation": [
+ "delegate_permission/common.handle_all_urls"
+ ],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "com.ejada.hmg",
+ "sha256_cert_fingerprints": [
+ "10:AC:36:05:DD:D5:63:3F:FF:0D:88:C3:9C:92:F1:12:1D:EE:1A:A8:4D:0C:85:AE:6C:B9:A9:C0:0C:7F:03:B5"
+ ]
+ }
+ }
+]
\ No newline at end of file
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 02d0d9b7..1514bc24 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -540,7 +540,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.63;
+ MARKETING_VERSION = 4.5.84;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -684,7 +684,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.63;
+ MARKETING_VERSION = 4.5.84;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -722,7 +722,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 4.5.63;
+ MARKETING_VERSION = 4.5.84;
PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index ea96fe5f..00000000
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements
index 0821ccf0..fbd726da 100644
--- a/ios/Runner/Runner.entitlements
+++ b/ios/Runner/Runner.entitlements
@@ -4,10 +4,20 @@
aps-environment
development
+ com.apple.developer.associated-domains
+
+ applinks:hmg.com
+
com.apple.developer.healthkit
com.apple.developer.healthkit.access
+ com.apple.developer.in-app-payments
+
+ merchant.com.hmgwebsersives
+ merchant.com.hmgwebservices.uat
+ merchant.com.hmgwebservices
+
com.apple.developer.networking.HotspotConfiguration
com.apple.developer.networking.wifi-info
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 1f1bc4c1..c28f26d6 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -1,5 +1,6 @@
import 'dart:io';
+import 'package:amazon_payfort/amazon_payfort.dart';
import 'package:diplomaticquarterapp/models/Request.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
@@ -19,8 +20,11 @@ var PACKAGES_SHOPPING_CART = '/api/shopping_cart_items';
var PACKAGES_ORDERS = '/api/orders';
var PACKAGES_ORDER_HISTORY = '/api/orders/items';
var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
- // var BASE_URL = 'http://10.50.100.198:2018/';
- var BASE_URL = 'https://uat.hmgwebservices.com/';
+// var BASE_URL = 'http://10.50.100.198:4422/';
+// var BASE_URL = 'https://uat.hmgwebservices.com/';
+var BASE_URL = 'https://hmgwebservices.com/';
+// var BASE_URL = 'http://10.20.200.111:1010/';
+ // var BASE_URL = 'https://uat.hmgwebservices.com/';
// var BASE_URL = 'https://hmgwebservices.com/';
// var BASE_URL = 'https://orash.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/';
@@ -38,6 +42,8 @@ var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
var BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapi/api/';
var PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapi/api/';
+var PHARMACY_REDIRECT_URL = 'https://bit.ly/AlhabibPharmacy';
+
// Pharmacy VidaPlus URLs
// var BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapitest/api/';
// var PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapitest/api/';
@@ -339,7 +345,7 @@ var UPDATE_COVID_QUESTIONNAIRE = 'Services/Doctors.svc/REST/COVID19_Questionnari
var CHANNEL = 3;
var GENERAL_ID = 'Cs2020@2016\$2958';
var IP_ADDRESS = '10.20.10.20';
-var VERSION_ID = 11.3;
+var VERSION_ID = 12.3;
var SETUP_ID = '91877';
var LANGUAGE = 2;
// var PATIENT_OUT_SA = 0;
@@ -620,6 +626,17 @@ var PAYFORT_PROD_URL = 'https://paymentservices.payfort.com/FortAPI/paymentApi';
var CHECK_PATIENT_NPHIES_ELIGIBILITY = 'Services/Doctors.svc/REST/checkPatientInsuranceCompanyValidity';
var CONVERT_PATIENT_TO_CASH = 'Services/Doctors.svc/REST/deActivateInsuranceCompany';
+
+
+//PAYFORT
+var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails";
+var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse";
+var payFortEnvironment = FortEnvironment.production;
+var applePayMerchantId = "merchant.com.hmgwebservices";
+// var payFortEnvironment = FortEnvironment.test;
+// var applePayMerchantId = "merchant.com.hmgwebservices.uat";
+
+
class AppGlobal {
static var context;
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 6278d2b7..6bd06889 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -791,7 +791,7 @@ const Map localizedValues = {
"Upon activation of this service, the system will send a monthly report automatically to the registered email which lists the vital signs and the results for the last visits made in AlHabib Medical Group.",
"ar": "خدمة التقارير الشهرية: عند تفعيل هذه الخدمة سيقوم النظام بارسال تقرير شهري بشكل آلي على الايميل المسجل والذي يسرد المؤشرات الحيوية ونتائج التحاليل لآخر زيارات تمت بمجموعة الحبيب الطبية."
},
- "language-setting": {"en": "SMS and Confirmation Calls Language", "ar": "لغة الرسائل القصيرة و الاتصال الآلي"},
+ "language-setting": {"en": "SMS, WhatsApp and Confirmation Calls Language", "ar": "لغة الرسائل القصيرة والواتس اب وتأكيد المكالمات"},
"alert": {"en": "Alerts", "ar": "التنبيهات"},
"email-alert": {"en": "Alert by Email", "ar": "استلام التنبيهات بالبريد الالكتروني"},
"sms-alert": {"en": "Alert by SMS", "ar": "استلام التنبيهات بالرسائل القصيرة"},
@@ -1902,4 +1902,9 @@ const Map localizedValues = {
"cashAmountUpdateInsurance": {"en": "Please note that this is the cash amount, If you want to update your insurance, Please tap below:", "ar": "يرجى ملاحظة أن هذا هو المبلغ النقدي، إذا كنت ترغب في تحديث التأمين الخاص بك، يرجى النقر أدناه:"},
"validInsurance": {"en": "Do you have a valid insurance?", "ar": "هل لديك تأمين صالح؟"},
"contactRRT": {"en": "Contact RRT", "ar": "تواصل مع فريق الاستجابة السريعة"},
+ "checkInViaLocation": {"en": "Check-In Via Location", "ar": "تسجيل الوصول عبر الموقع"},
+ "locationCheckInError": {"en": "Please make sure that you're within the hospital location to perform online check-in.", "ar": "يرجى التأكد من تواجدك داخل موقع المستشفى لإجراء تسجيل الوصول عبر الإنترنت."},
+ "upcoming": {"en": "Upcoming", "ar": "المواعيد القادمة"},
+ "noUpcomingAppointment": {"en": "No upcoming appointments", "ar": "لا توجد مواعيد القادمة"},
+ "locationTimeoutError": {"en": "Unable to fetch your location, Please try again.", "ar": "غير قادر على جلب موقعك، يرجى المحاولة مرة أخرى."},
};
\ No newline at end of file
diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart
index ec82db11..f92841e3 100644
--- a/lib/config/shared_pref_kay.dart
+++ b/lib/config/shared_pref_kay.dart
@@ -43,3 +43,4 @@ const CLINICS_LIST = 'CLINICS_LIST';
const COVID_QA_LIST = 'COVID_QA_LIST';
const IS_COVID_CONSENT_SHOWN = 'IS_COVID_CONSENT_SHOWN';
const REGISTER_INFO_DUBAI ='register-info-dubai';
+const IS_LAST_APPOINTMENT_RATE_SHOWN ='is-last-appointment-rate-shown';
diff --git a/lib/core/enum/PayfortEnums.dart b/lib/core/enum/PayfortEnums.dart
new file mode 100644
index 00000000..2951eed8
--- /dev/null
+++ b/lib/core/enum/PayfortEnums.dart
@@ -0,0 +1,44 @@
+enum ServiceTypeEnum {
+ advancePayment, //3
+ ancillaryOrder, //3
+ appointmentPayment, //2
+ covidPayment, //2
+ erOnlineCheckIn, //3
+ liveCareAppointment //4
+}
+
+extension ServiceTypeEnumExt on ServiceTypeEnum {
+ String value() {
+ switch (this) {
+ case ServiceTypeEnum.advancePayment:
+ return "Advance Payment";
+ case ServiceTypeEnum.ancillaryOrder:
+ return "Ancillary Order";
+ case ServiceTypeEnum.appointmentPayment:
+ return "Appointment Payment";
+ case ServiceTypeEnum.covidPayment:
+ return "Covid Payment";
+ case ServiceTypeEnum.erOnlineCheckIn:
+ return "ER Online Check In";
+ case ServiceTypeEnum.liveCareAppointment:
+ return "LiveCare Appointment";
+ }
+ }
+
+ int getIdFromServiceEnum() {
+ switch (this) {
+ case ServiceTypeEnum.advancePayment:
+ return 3;
+ case ServiceTypeEnum.ancillaryOrder:
+ return 3;
+ case ServiceTypeEnum.appointmentPayment:
+ return 2;
+ case ServiceTypeEnum.covidPayment:
+ return 2;
+ case ServiceTypeEnum.erOnlineCheckIn:
+ return 3;
+ case ServiceTypeEnum.liveCareAppointment:
+ return 4;
+ }
+ }
+}
diff --git a/lib/core/model/labs/patient_lab_orders.dart b/lib/core/model/labs/patient_lab_orders.dart
index c2908023..c58222e3 100644
--- a/lib/core/model/labs/patient_lab_orders.dart
+++ b/lib/core/model/labs/patient_lab_orders.dart
@@ -17,6 +17,7 @@ class PatientLabOrders {
String genderDescription;
String invoiceNo;
String invoiceNo_VP;
+ String invoiceType;
bool isActiveDoctorProfile;
bool isDoctorAllowVedioCall;
bool isExecludeDoctor;
@@ -36,6 +37,7 @@ class PatientLabOrders {
String setupID;
List speciality;
bool isLiveCareAppointment;
+
PatientLabOrders(
{this.actualDoctorRate,
this.clinicDescription,
@@ -69,8 +71,10 @@ class PatientLabOrders {
this.projectNameN,
this.qR,
this.setupID,
- this.invoiceNo_VP,
- this.speciality,this.isLiveCareAppointment});
+ this.invoiceNo_VP,
+ this.invoiceType,
+ this.speciality,
+ this.isLiveCareAppointment});
PatientLabOrders.fromJson(Map json) {
actualDoctorRate = json['ActualDoctorRate'];
@@ -106,8 +110,9 @@ class PatientLabOrders {
qR = json['QR'];
setupID = json['SetupID'];
invoiceNo_VP = json['invoiceNo_VP'];
+ invoiceType = json['InvoiceType'];
isLiveCareAppointment = json['IsLiveCareAppointment'];
- // speciality = json['Speciality'].cast();
+ // speciality = json['Speciality'].cast();
}
Map toJson() {
@@ -146,7 +151,7 @@ class PatientLabOrders {
data['SetupID'] = this.setupID;
data['Speciality'] = this.speciality;
data['IsLiveCareAppointment'] = this.isLiveCareAppointment;
- data['invoiceNo_VP'] =this.invoiceNo_VP;
+ data['invoiceNo_VP'] = this.invoiceNo_VP;
return data;
}
}
@@ -155,8 +160,7 @@ class PatientLabOrdersList {
String filterName = "";
List patientLabOrdersList = List();
- PatientLabOrdersList(
- {this.filterName, PatientLabOrders patientDoctorAppointment}) {
+ PatientLabOrdersList({this.filterName, PatientLabOrders patientDoctorAppointment}) {
patientLabOrdersList.add(patientDoctorAppointment);
}
}
diff --git a/lib/core/model/labs/request_patient_lab_special_result.dart b/lib/core/model/labs/request_patient_lab_special_result.dart
index b3794e3c..795fa025 100644
--- a/lib/core/model/labs/request_patient_lab_special_result.dart
+++ b/lib/core/model/labs/request_patient_lab_special_result.dart
@@ -1,6 +1,7 @@
class RequestPatientLabSpecialResult {
String invoiceNo;
String invoiceNoVP;
+ String invoiceType;
String orderNo;
String setupID;
String projectID;
@@ -22,27 +23,29 @@ class RequestPatientLabSpecialResult {
RequestPatientLabSpecialResult(
{this.invoiceNo,
this.invoiceNoVP,
- this.orderNo,
- this.setupID,
- this.projectID,
- this.clinicID,
- this.versionID,
- this.channel,
- this.languageID,
- this.iPAdress,
- this.generalid,
- this.patientOutSA,
- this.sessionID,
- this.isDentalAllowedBackend,
- this.deviceTypeID,
- this.patientID,
- this.tokenID,
- this.patientTypeID,
- this.patientType});
+ this.invoiceType,
+ this.orderNo,
+ this.setupID,
+ this.projectID,
+ this.clinicID,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID,
+ this.patientID,
+ this.tokenID,
+ this.patientTypeID,
+ this.patientType});
RequestPatientLabSpecialResult.fromJson(Map json) {
invoiceNo = json['InvoiceNo'];
invoiceNo = json['InvoiceNo_VP'];
+ invoiceType = json['InvoiceType'];
orderNo = json['OrderNo'];
setupID = json['SetupID'];
projectID = json['ProjectID'];
@@ -66,6 +69,7 @@ class RequestPatientLabSpecialResult {
final Map data = new Map();
data['InvoiceNo'] = this.invoiceNo;
data['InvoiceNo_VP'] = this.invoiceNoVP;
+ data['InvoiceType'] = this.invoiceType;
data['OrderNo'] = this.orderNo;
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
diff --git a/lib/core/model/labs/request_send_lab_report_email.dart b/lib/core/model/labs/request_send_lab_report_email.dart
index 2188c500..41fa30f9 100644
--- a/lib/core/model/labs/request_send_lab_report_email.dart
+++ b/lib/core/model/labs/request_send_lab_report_email.dart
@@ -24,6 +24,7 @@ class RequestSendLabReportEmail {
String projectID;
String invoiceNo;
String invoiceNoVP;
+ String invoiceType;
String orderDate;
String orderNo;
bool isDownload;
@@ -55,6 +56,7 @@ class RequestSendLabReportEmail {
this.projectID,
this.invoiceNo,
this.invoiceNoVP,
+ this.invoiceType,
this.orderDate,
this.orderNo,
this.isDownload,
@@ -86,6 +88,7 @@ class RequestSendLabReportEmail {
projectID = json['ProjectID'];
invoiceNo = json['InvoiceNo'];
invoiceNoVP = json['InvoiceNo_VP'];
+ invoiceType = json['InvoiceType'];
orderDate = json['OrderDate'];
orderNo = json['OrderNo'];
isDownload = json['IsDownload'];
@@ -119,6 +122,7 @@ class RequestSendLabReportEmail {
data['ProjectID'] = this.projectID;
data['InvoiceNo'] = this.invoiceNo;
data['InvoiceNo_VP'] = this.invoiceNoVP;
+ data['InvoiceType'] = this.invoiceType;
data['OrderDate'] = this.orderDate;
data['OrderNo'] = this.orderNo;
data['IsDownload'] = this.isDownload;
diff --git a/lib/core/model/prescriptions/prescription_report_inp.dart b/lib/core/model/prescriptions/prescription_report_inp.dart
index b802337b..079b1bda 100644
--- a/lib/core/model/prescriptions/prescription_report_inp.dart
+++ b/lib/core/model/prescriptions/prescription_report_inp.dart
@@ -18,7 +18,7 @@ class PrescriptionReportINP {
int days;
String startDate;
String orderDate;
- int doseDailyQuantity;
+ num doseDailyQuantity;
int itemID;
Null productImage;
String sKU;
diff --git a/lib/core/model/privilege/ProjectDetailListModel.dart b/lib/core/model/privilege/ProjectDetailListModel.dart
new file mode 100644
index 00000000..b8241797
--- /dev/null
+++ b/lib/core/model/privilege/ProjectDetailListModel.dart
@@ -0,0 +1,32 @@
+class ProjectDetailListModel {
+ int projectID;
+ String latitude;
+ String longitude;
+ int geofenceRadius;
+ String checkInQrCode;
+
+ ProjectDetailListModel(
+ {this.projectID,
+ this.latitude,
+ this.longitude,
+ this.geofenceRadius,
+ this.checkInQrCode});
+
+ ProjectDetailListModel.fromJson(Map json) {
+ projectID = json['ProjectID'];
+ latitude = json['Latitude'];
+ longitude = json['Longitude'];
+ geofenceRadius = json['GeofenceRadius'];
+ checkInQrCode = json['CheckInQrCode'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ProjectID'] = this.projectID;
+ data['Latitude'] = this.latitude;
+ data['Longitude'] = this.longitude;
+ data['GeofenceRadius'] = this.geofenceRadius;
+ data['CheckInQrCode'] = this.checkInQrCode;
+ return data;
+ }
+}
diff --git a/lib/core/model/radiology/final_radiology.dart b/lib/core/model/radiology/final_radiology.dart
index d92ffead..a600d0be 100644
--- a/lib/core/model/radiology/final_radiology.dart
+++ b/lib/core/model/radiology/final_radiology.dart
@@ -7,6 +7,7 @@ class FinalRadiology {
int invoiceLineItemNo;
int invoiceNo;
dynamic invoiceNo_VP;
+ String invoiceType;
int doctorID;
int clinicID;
DateTime orderDate;
@@ -50,7 +51,8 @@ class FinalRadiology {
this.patientID,
this.invoiceLineItemNo,
this.invoiceNo,
- this.invoiceNo_VP,
+ this.invoiceNo_VP,
+ this.invoiceType,
this.doctorID,
this.clinicID,
this.orderDate,
@@ -85,7 +87,8 @@ class FinalRadiology {
this.reportDataTextString,
this.speciality,
this.isCVI,
- this.isRadMedicalReport,this.isLiveCareAppointment});
+ this.isRadMedicalReport,
+ this.isLiveCareAppointment});
FinalRadiology.fromJson(Map json) {
try {
@@ -95,6 +98,7 @@ class FinalRadiology {
invoiceLineItemNo = json['InvoiceLineItemNo'];
invoiceNo = json['InvoiceNo'];
invoiceNo_VP = json['InvoiceNo_VP'];
+ invoiceType = json['InvoiceType'];
doctorID = json['DoctorID'];
clinicID = json['ClinicID'];
orderDate = DateUtil.convertStringToDate(json['OrderDate']);
@@ -128,10 +132,9 @@ class FinalRadiology {
isLiveCareAppointment = json['IsLiveCareAppointment'];
reportDataHTML = json['ReportDataHTML'];
reportDataTextString = json['ReportDataTextString'];
- // speciality = json['Speciality'].cast();
+ // speciality = json['Speciality'].cast();
isCVI = json['isCVI'];
isRadMedicalReport = json['isRadMedicalReport'];
-
} catch (e) {
print(e);
}
@@ -145,6 +148,7 @@ class FinalRadiology {
data['InvoiceLineItemNo'] = this.invoiceLineItemNo;
data['InvoiceNo'] = this.invoiceNo;
data['InvoiceNo_VP'] = this.invoiceNo_VP;
+ data['InvoiceType'] = this.invoiceType;
data['DoctorID'] = this.doctorID;
data['ClinicID'] = this.clinicID;
data['OrderDate'] = this.orderDate;
@@ -189,7 +193,7 @@ class FinalRadiologyList {
List finalRadiologyList = List();
FinalRadiologyList({this.filterName, this.finalRadiologyList});
- // {
- // finalRadiologyList.add(finalRadiology);
- // }
+// {
+// finalRadiologyList.add(finalRadiology);
+// }
}
diff --git a/lib/core/model/radiology/request_send_rad_report_email.dart b/lib/core/model/radiology/request_send_rad_report_email.dart
index 6819de0d..1f3b7117 100644
--- a/lib/core/model/radiology/request_send_rad_report_email.dart
+++ b/lib/core/model/radiology/request_send_rad_report_email.dart
@@ -7,6 +7,7 @@ class RequestSendRadReportEmail {
String generalid;
int invoiceNo;
int invoiceNo_VP;
+ String invoiceType;
String iPAdress;
bool isDentalAllowedBackend;
int languageID;
@@ -37,6 +38,7 @@ class RequestSendRadReportEmail {
this.generalid,
this.invoiceNo,
this.invoiceNo_VP,
+ this.invoiceType,
this.iPAdress,
this.isDentalAllowedBackend,
this.languageID,
@@ -66,6 +68,7 @@ class RequestSendRadReportEmail {
generalid = json['generalid'];
invoiceNo = json['InvoiceNo'];
invoiceNo_VP = json['InvoiceNo_VP'];
+ invoiceType = json['InvoiceType'];
iPAdress = json['IPAdress'];
isDentalAllowedBackend = json['isDentalAllowedBackend'];
languageID = json['LanguageID'];
@@ -98,6 +101,7 @@ class RequestSendRadReportEmail {
data['generalid'] = this.generalid;
data['InvoiceNo'] = this.invoiceNo;
data['InvoiceNo_VP'] = this.invoiceNo_VP;
+ data['InvoiceType'] = this.invoiceType;
data['IPAdress'] = this.iPAdress;
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
data['LanguageID'] = this.languageID;
diff --git a/lib/core/model/rate/appoitment_rated.dart b/lib/core/model/rate/appoitment_rated.dart
index 95358b23..820e36a5 100644
--- a/lib/core/model/rate/appoitment_rated.dart
+++ b/lib/core/model/rate/appoitment_rated.dart
@@ -26,12 +26,12 @@ class AppoitmentRated {
String arrivedOn;
int editedBy;
String editedOn;
- Null doctorName;
+ dynamic doctorName;
String doctorNameN;
String statusDesc;
String statusDescN;
bool vitalStatus;
- Null vitalSignAppointmentNo;
+ dynamic vitalSignAppointmentNo;
int episodeID;
String doctorTitle;
bool isAppoitmentLiveCare;
diff --git a/lib/core/model/reports/Reports.dart b/lib/core/model/reports/Reports.dart
index 6791a3d4..0d409f04 100644
--- a/lib/core/model/reports/Reports.dart
+++ b/lib/core/model/reports/Reports.dart
@@ -5,6 +5,7 @@ class Reports {
DateTime encounterDate;
int projectID;
int invoiceNo;
+ int invoiceNo_VP;
int encounterNo;
String procedureId;
int requestType;
@@ -35,6 +36,7 @@ class Reports {
this.encounterDate,
this.projectID,
this.invoiceNo,
+ this.invoiceNo_VP,
this.encounterNo,
this.procedureId,
this.requestType,
@@ -67,6 +69,7 @@ class Reports {
json['EncounterDate']); //json['EncounterDate'];
projectID = json['ProjectID'];
invoiceNo = json['InvoiceNo'];
+ invoiceNo_VP = json['InvoiceNo_VP'];
encounterNo = json['EncounterNo'];
procedureId = json['ProcedureId'];
requestType = json['RequestType'];
@@ -104,6 +107,7 @@ class Reports {
data['EncounterDate'] = this.encounterDate;
data['ProjectID'] = this.projectID;
data['InvoiceNo'] = this.invoiceNo;
+ data['InvoiceNo_VP'] = this.invoiceNo_VP;
data['EncounterNo'] = this.encounterNo;
data['ProcedureId'] = this.procedureId;
data['RequestType'] = this.requestType;
diff --git a/lib/core/service/ancillary_orders_service.dart b/lib/core/service/ancillary_orders_service.dart
index 631f17ff..dcb34aad 100644
--- a/lib/core/service/ancillary_orders_service.dart
+++ b/lib/core/service/ancillary_orders_service.dart
@@ -54,15 +54,18 @@ class AncillaryOrdersService extends BaseService {
return Future.value(localRes);
}
- Future getOrdersDetails(appointmentNo, orderNo, projectID) async {
+ Future