diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 540276ba..46442106 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,51 +5,59 @@
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
+
+
+
+
+
+
+
+
+
+ android:icon="@mipmap/ic_launcher"
+ android:label="diplomaticquarterapp">
+ android:name="io.flutter.embedding.android.NormalTheme"
+ android:resource="@style/NormalTheme" />
-
+ android:name="io.flutter.embedding.android.SplashScreenDrawable"
+ android:resource="@drawable/launch_background" />
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
-
-
+
+
+
diff --git a/assets/images/login/more_icon.png b/assets/images/login/more_icon.png
new file mode 100644
index 00000000..b696d345
Binary files /dev/null and b/assets/images/login/more_icon.png differ
diff --git a/ios/.gitignore b/ios/.gitignore
index e96ef602..ce2e85b9 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -30,3 +30,5 @@ Runner/GeneratedPluginRegistrant.*
!default.mode2v3
!default.pbxuser
!default.perspectivev3
+/Runner.xcworkspace/contents.xcworkspacedata
+/Runner.xcodeproj/project.pbxproj
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 96f891d2..e0e7ee12 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -4,7 +4,7 @@ import 'dart:io';
const MAX_SMALL_SCREEN = 660;
-const BASE_URL = 'https://hmgwebservices.com/Services';
+const BASE_URL = 'https://uat.hmgwebservices.com/Services';
const GET_PROJECT = '/Lists.svc/REST/GetProject';
@@ -13,12 +13,29 @@ const GET_MY_DOCTOR = '/Doctors.svc/REST/GetPatientDoctorAppointmentResult';
const GET_DOCTOR_PROFILE = '/Doctors.svc/REST/GetDocProfiles';
const GET_DOCTOR_RATING = '/Doctors.svc/REST/dr_GetAvgDoctorRating';
+
///Prescriptions
const PRESCRIPTIONS = '/Patients.svc/REST/GetPrescriptionApptList';
const GET_PRESCRIPTIONS_ALL_ORDERS =
'/Patients.svc/REST/PatientER_GetPatientAllPresOrders';
const GET_PRESCRIPTION_REPORT = '/Patients.svc/REST/INP_GetPrescriptionReport';
const SEND_PRESCRIPTION_EMAIL = '/Notifications.svc/REST/SendPrescriptionEmail';
+const GET_PRESCRIPTION_REPORT_ENH = '/Patients.svc/REST/GetPrescriptionReport_enh';
+
+///Lab Order
+const GET_Patient_LAB_ORDERS = '/Patients.svc/REST/GetPatientLabOrders';
+const GET_Patient_LAB_SPECIAL_RESULT = '/Patients.svc/REST/GetPatientLabSpecialResults';
+
+///
+const GET_PATIENT_ORDERS = '/Patients.svc/REST/GetPatientRadOrders';
+const GET_PATIENT_ORDERS_DETAILS = '/Patients.svc/REST/Rad_UpdatePatientRadOrdersToRead';
+const GET_RAD_IMAGE_URL = '/Patients.svc/Rest/GetRadImageURL';
+const SEND_RAD_REPORT_EMAIL = '/Notifications.svc/REST/SendRadReportEmail';
+
+
+///Feedback
+const SEND_FEEDBACK = '/COCWS.svc/REST/InsertCOCItemInSPList';
+const GET_STATUS_FOR_COCO = '/COCWS.svc/REST/GetStatusforCOC';
//const BASE_URL = 'https://hmgwebservices.com/'; // Production Environment
//const BASE_URL = 'https://uat.hmgwebservices.com/Services'; // UAT Environment
@@ -33,8 +50,16 @@ const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
const IP_ADDRESS = '10.20.10.20';
const VERSION_ID = 5.5;
-var DeviceTypeID = Platform.isIOS ? 1 : 2;
+const SETUP_ID = '91877';
+const LANGUAGE = 1;
+const PATIENT_OUT_SA = 0;
+const SESSION_ID = 'TMRhVmkGhOsvamErw';
+const IS_DENTAL_ALLOWED_BACKEND = false;
+const PATIENT_TYPE = 1;
+const PATIENT_TYPE_ID = 1;
+var DeviceTypeID = Platform.isIOS ? 1 : 2;
+const LANGUAGE_ID = 2;
const GET_PHARMCY_ITEMS = "/Lists.svc/REST/GetPharmcyItems_Region";
const GET_PHARMACY_LIST = "/Patients.svc/REST/GetPharmcyList";
const GET_PAtIENTS_INSURANCE = "/Patients.svc/REST/Get_PatientInsuranceDetails";
@@ -63,3 +88,5 @@ class AppGlobal {
return request;
}
}
+
+
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 32f214c1..69356729 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -127,5 +127,38 @@ const Map> localizedValues = {
"arabic-change": {"en": "عربي", "ar": "English"},
"notification": {"en": "Notifications", "ar": "إشعارات"},
"app-settings": {"en": "App Settings", "ar": "إعدادات التطبيق"},
- "rate-app": {"en": "Rate Our App", "ar": "قيم التطبيق"}
+ "rate-app": {"en": "Rate Our App", "ar": "قيم التطبيق"},
+ "more-verify": {
+ "en": "More Verification Options",
+ "ar": "المزيد من خيارات التحقق"
+ },
+ "welcome-back": {"en": "Welcome back!", "ar": "مرحبا بعودتك!"},
+ "account-info": {
+ "en": "Would you like to login with current username?",
+ "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"
+ },
+ "another-acc": {"en": "Use Another Account", "ar": "استخدم حسابا آخر"},
+ "next": {"en": "Next", "ar": 'التالى'},
+ "first-name": {"en": "First Name", "ar": "الاسم الأول"},
+ "middle-name": {"en": "Middle Name", "ar": "الاسم الثاني"},
+ "last-name": {"en": "Last Name", "ar": "إسم العائلة"},
+ "female": {"en": "Female", "ar": "أنثى"},
+ "male": {"en": "Male", "ar": "ذكر"},
+ "preferred-language": {"en": "Preferred Language", "ar": "اللغة المفضلة"},
+ "english": {"en": "English", "ar": "الإنجليزية"},
+ "arabic": {"en": "Arabic", "ar": "العربية"},
+ "locations-register": {
+ "en": "Where do you want to create this file?",
+ "ar": "أين تريد فتح هذا الملف؟"
+ },
+ "ksa": {"en": "KSA", "ar": "السعودية"},
+ "dubai": {"en": "Dubai", "ar": "دبي"},
+ "enter-email": {"en": "Enter Email", "ar": "ادخل البريد الالكتروني"},
+ "family": {"en": "My Family", "ar": "عائلتي"},
+ "family-title": {"en": "My Family Files", "ar": "ملفات العائلة"},
+ "add-new-member": {"en": "Add Family Member", "ar": "إضافة عضو جديد"},
+ "sent-requests": {"en": "Sent Requests", "ar": "الطلبات المرسلة"},
+ "recieved-requests": {"en": "Recieved Requests", "ar": "الطلبات المستلمة"},
+ "manage-files": {"en": "Manage Family Files", "ar": "إدارة ملفات العائلة"},
+ // "my-family": {"en": "MY FAMILY", "ar": "عائلتي"},
};
diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart
index a4f11077..53fa08dd 100644
--- a/lib/config/shared_pref_kay.dart
+++ b/lib/config/shared_pref_kay.dart
@@ -8,3 +8,5 @@ const REGISTER_DATA_FOR_LOGIIN = 'register-data-for-login';
const LAST_LOGIN = 'last-login';
const ONLY_SMS = 'only-sms';
const AUTH_DATA = 'auth-data';
+const IMEI_USER_DATA = 'imei-user-data';
+const NHIC_DATA = 'nhic-data';
diff --git a/lib/core/model/feedback/COC_items.dart b/lib/core/model/feedback/COC_items.dart
new file mode 100644
index 00000000..068c8bee
--- /dev/null
+++ b/lib/core/model/feedback/COC_items.dart
@@ -0,0 +1,120 @@
+class COCItem {
+ Null appointment;
+ String appointmentClinicName;
+ String appointmentDate;
+ String appointmentProjectName;
+ String cOCID;
+ String cOCTitle;
+ String channel;
+ dynamic clinic;
+ String clinicID;
+ String date;
+ dynamic detail;
+ dynamic doctor;
+ String doctorID;
+ String formType;
+ int formTypeID;
+ dynamic identificationNo;
+ int itemID;
+ dynamic mobileNo;
+ dynamic naturename;
+ dynamic patientID;
+ dynamic patientName;
+ dynamic project;
+ dynamic projectID;
+ String solution;
+ String status;
+ String statusAr;
+ dynamic statusEn;
+
+ COCItem(
+ {this.appointment,
+ this.appointmentClinicName,
+ this.appointmentDate,
+ this.appointmentProjectName,
+ this.cOCID,
+ this.cOCTitle,
+ this.channel,
+ this.clinic,
+ this.clinicID,
+ this.date,
+ this.detail,
+ this.doctor,
+ this.doctorID,
+ this.formType,
+ this.formTypeID,
+ this.identificationNo,
+ this.itemID,
+ this.mobileNo,
+ this.naturename,
+ this.patientID,
+ this.patientName,
+ this.project,
+ this.projectID,
+ this.solution,
+ this.status,
+ this.statusAr,
+ this.statusEn});
+
+ COCItem.fromJson(Map json) {
+ appointment = json['Appointment'];
+ appointmentClinicName = json['AppointmentClinicName'];
+ appointmentDate = json['AppointmentDate'];
+ appointmentProjectName = json['AppointmentProjectName'];
+ cOCID = json['COCID'];
+ cOCTitle = json['COCTitle'];
+ channel = json['Channel'];
+ clinic = json['Clinic'];
+ clinicID = json['ClinicID'];
+ date = json['Date'];
+ detail = json['Detail'];
+ doctor = json['Doctor'];
+ doctorID = json['DoctorID'];
+ formType = json['FormType'];
+ formTypeID = json['FormTypeID'];
+ identificationNo = json['IdentificationNo'];
+ itemID = json['ItemID'];
+ mobileNo = json['MobileNo'];
+ naturename = json['Naturename'];
+ patientID = json['PatientID'];
+ patientName = json['PatientName'];
+ project = json['Project'];
+ projectID = json['ProjectID'];
+ solution = json['Solution'];
+ status = json['Status'];
+ statusAr = json['StatusAr'];
+ statusEn = json['StatusEn'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Appointment'] = this.appointment;
+ data['AppointmentClinicName'] = this.appointmentClinicName;
+ data['AppointmentDate'] = this.appointmentDate;
+ data['AppointmentProjectName'] = this.appointmentProjectName;
+ data['COCID'] = this.cOCID;
+ data['COCTitle'] = this.cOCTitle;
+ data['Channel'] = this.channel;
+ data['Clinic'] = this.clinic;
+ data['ClinicID'] = this.clinicID;
+ data['Date'] = this.date;
+ data['Detail'] = this.detail;
+ data['Doctor'] = this.doctor;
+ data['DoctorID'] = this.doctorID;
+ data['FormType'] = this.formType;
+ data['FormTypeID'] = this.formTypeID;
+ data['IdentificationNo'] = this.identificationNo;
+ data['ItemID'] = this.itemID;
+ data['MobileNo'] = this.mobileNo;
+ data['Naturename'] = this.naturename;
+ data['PatientID'] = this.patientID;
+ data['PatientName'] = this.patientName;
+ data['Project'] = this.project;
+ data['ProjectID'] = this.projectID;
+ data['Solution'] = this.solution;
+ data['Status'] = this.status;
+ data['StatusAr'] = this.statusAr;
+ data['StatusEn'] = this.statusEn;
+ return data;
+ }
+}
diff --git a/lib/core/model/feedback/request_insert_coc_item.dart b/lib/core/model/feedback/request_insert_coc_item.dart
new file mode 100644
index 00000000..e8b6fce5
--- /dev/null
+++ b/lib/core/model/feedback/request_insert_coc_item.dart
@@ -0,0 +1,132 @@
+class RequestInsertCOCItem {
+ bool isUserLoggedIn;
+ String mobileNo;
+ int identificationNo;
+ int patientID;
+ int patientOutSA;
+ int patientTypeID;
+ String tokenID;
+ String patientName;
+ int projectID;
+ String fileName;
+ String attachment;
+ String uILanguage;
+ String browserInfo;
+ String cOCTypeName;
+ String formTypeID;
+ String details;
+ String deviceInfo;
+ String deviceType;
+ String title;
+ String resolution;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientType;
+ double appVersion;
+
+ RequestInsertCOCItem(
+ {this.isUserLoggedIn,
+ this.mobileNo,
+ this.identificationNo,
+ this.patientID,
+ this.patientOutSA,
+ this.patientTypeID,
+ this.tokenID,
+ this.patientName,
+ this.projectID,
+ this.fileName,
+ this.attachment,
+ this.uILanguage,
+ this.browserInfo,
+ this.cOCTypeName,
+ this.formTypeID,
+ this.details,
+ this.deviceInfo,
+ this.deviceType,
+ this.title,
+ this.resolution,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID,
+ this.patientType,
+ this.appVersion});
+
+ RequestInsertCOCItem.fromJson(Map json) {
+ isUserLoggedIn = json['IsUserLoggedIn'];
+ mobileNo = json['MobileNo'];
+ identificationNo = json['IdentificationNo'];
+ patientID = json['PatientID'];
+ patientOutSA = json['PatientOutSA'];
+ patientTypeID = json['PatientTypeID'];
+ tokenID = json['TokenID'];
+ patientName = json['PatientName'];
+ projectID = json['ProjectID'];
+ fileName = json['FileName'];
+ attachment = json['Attachment'];
+ uILanguage = json['UILanguage'];
+ browserInfo = json['BrowserInfo'];
+ cOCTypeName = json['COCTypeName'];
+ formTypeID = json['FormTypeID'];
+ details = json['Details'];
+ deviceInfo = json['DeviceInfo'];
+ deviceType = json['DeviceType'];
+ title = json['Title'];
+ resolution = json['Resolution'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientType = json['PatientType'];
+ appVersion = json['AppVersion'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['IsUserLoggedIn'] = this.isUserLoggedIn;
+ data['MobileNo'] = this.mobileNo;
+ data['IdentificationNo'] = this.identificationNo;
+ data['PatientID'] = this.patientID;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['TokenID'] = this.tokenID;
+ data['PatientName'] = this.patientName;
+ data['ProjectID'] = this.projectID;
+ data['FileName'] = this.fileName;
+ data['Attachment'] = this.attachment;
+ data['UILanguage'] = this.uILanguage;
+ data['BrowserInfo'] = this.browserInfo;
+ data['COCTypeName'] = this.cOCTypeName;
+ data['FormTypeID'] = this.formTypeID;
+ data['Details'] = this.details;
+ data['DeviceInfo'] = this.deviceInfo;
+ data['DeviceType'] = this.deviceType;
+ data['Title'] = this.title;
+ data['Resolution'] = this.resolution;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientType'] = this.patientType;
+ data['AppVersion'] = this.appVersion;
+ return data;
+ }
+}
diff --git a/lib/core/model/labs/patient_lab_orders.dart b/lib/core/model/labs/patient_lab_orders.dart
new file mode 100644
index 00000000..26daaff0
--- /dev/null
+++ b/lib/core/model/labs/patient_lab_orders.dart
@@ -0,0 +1,156 @@
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+
+class PatientLabOrders {
+ int actualDoctorRate;
+ String clinicDescription;
+ String clinicDescriptionEnglish;
+ Null clinicDescriptionN;
+ int clinicID;
+ int doctorID;
+ String doctorImageURL;
+ String doctorName;
+ String doctorNameEnglish;
+ Null doctorNameN;
+ int doctorRate;
+ String doctorTitle;
+ int gender;
+ String genderDescription;
+ String invoiceNo;
+ bool isActiveDoctorProfile;
+ bool isDoctorAllowVedioCall;
+ bool isExecludeDoctor;
+ bool isInOutPatient;
+ String isInOutPatientDescription;
+ String isInOutPatientDescriptionN;
+ bool isRead;
+ String nationalityFlagURL;
+ int noOfPatientsRate;
+ DateTime orderDate;
+ String orderNo;
+ String patientID;
+ String projectID;
+ String projectName;
+ Null projectNameN;
+ String qR;
+ String setupID;
+ List speciality;
+
+ PatientLabOrders(
+ {this.actualDoctorRate,
+ this.clinicDescription,
+ this.clinicDescriptionEnglish,
+ this.clinicDescriptionN,
+ this.clinicID,
+ this.doctorID,
+ this.doctorImageURL,
+ this.doctorName,
+ this.doctorNameEnglish,
+ this.doctorNameN,
+ this.doctorRate,
+ this.doctorTitle,
+ this.gender,
+ this.genderDescription,
+ this.invoiceNo,
+ this.isActiveDoctorProfile,
+ this.isDoctorAllowVedioCall,
+ this.isExecludeDoctor,
+ this.isInOutPatient,
+ this.isInOutPatientDescription,
+ this.isInOutPatientDescriptionN,
+ this.isRead,
+ this.nationalityFlagURL,
+ this.noOfPatientsRate,
+ this.orderDate,
+ this.orderNo,
+ this.patientID,
+ this.projectID,
+ this.projectName,
+ this.projectNameN,
+ this.qR,
+ this.setupID,
+ this.speciality});
+
+ PatientLabOrders.fromJson(Map json) {
+ actualDoctorRate = json['ActualDoctorRate'];
+ clinicDescription = json['ClinicDescription'];
+ clinicDescriptionEnglish = json['ClinicDescriptionEnglish'];
+ clinicDescriptionN = json['ClinicDescriptionN'];
+ clinicID = json['ClinicID'];
+ doctorID = json['DoctorID'];
+ doctorImageURL = json['DoctorImageURL'];
+ doctorName = json['DoctorName'];
+ doctorNameEnglish = json['DoctorNameEnglish'];
+ doctorNameN = json['DoctorNameN'];
+ doctorRate = json['DoctorRate'];
+ doctorTitle = json['DoctorTitle'];
+ gender = json['Gender'];
+ genderDescription = json['GenderDescription'];
+ invoiceNo = json['InvoiceNo'];
+ isActiveDoctorProfile = json['IsActiveDoctorProfile'];
+ isDoctorAllowVedioCall = json['IsDoctorAllowVedioCall'];
+ isExecludeDoctor = json['IsExecludeDoctor'];
+ isInOutPatient = json['IsInOutPatient'];
+ isInOutPatientDescription = json['IsInOutPatientDescription'];
+ isInOutPatientDescriptionN = json['IsInOutPatientDescriptionN'];
+ isRead = json['IsRead'];
+ nationalityFlagURL = json['NationalityFlagURL'];
+ noOfPatientsRate = json['NoOfPatientsRate'];
+ orderDate = DateUtil.convertStringToDate(json['OrderDate']);
+ orderNo = json['OrderNo'];
+ patientID = json['PatientID'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ projectNameN = json['ProjectNameN'];
+ qR = json['QR'];
+ setupID = json['SetupID'];
+ // speciality = json['Speciality'].cast();
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ActualDoctorRate'] = this.actualDoctorRate;
+ data['ClinicDescription'] = this.clinicDescription;
+ data['ClinicDescriptionEnglish'] = this.clinicDescriptionEnglish;
+ data['ClinicDescriptionN'] = this.clinicDescriptionN;
+ data['ClinicID'] = this.clinicID;
+ data['DoctorID'] = this.doctorID;
+ data['DoctorImageURL'] = this.doctorImageURL;
+ data['DoctorName'] = this.doctorName;
+ data['DoctorNameEnglish'] = this.doctorNameEnglish;
+ data['DoctorNameN'] = this.doctorNameN;
+ data['DoctorRate'] = this.doctorRate;
+ data['DoctorTitle'] = this.doctorTitle;
+ data['Gender'] = this.gender;
+ data['GenderDescription'] = this.genderDescription;
+ data['InvoiceNo'] = this.invoiceNo;
+ data['IsActiveDoctorProfile'] = this.isActiveDoctorProfile;
+ data['IsDoctorAllowVedioCall'] = this.isDoctorAllowVedioCall;
+ data['IsExecludeDoctor'] = this.isExecludeDoctor;
+ data['IsInOutPatient'] = this.isInOutPatient;
+ data['IsInOutPatientDescription'] = this.isInOutPatientDescription;
+ data['IsInOutPatientDescriptionN'] = this.isInOutPatientDescriptionN;
+ data['IsRead'] = this.isRead;
+ data['NationalityFlagURL'] = this.nationalityFlagURL;
+ data['NoOfPatientsRate'] = this.noOfPatientsRate;
+ data['OrderDate'] = this.orderDate;
+ data['OrderNo'] = this.orderNo;
+ data['PatientID'] = this.patientID;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['ProjectNameN'] = this.projectNameN;
+ data['QR'] = this.qR;
+ data['SetupID'] = this.setupID;
+ data['Speciality'] = this.speciality;
+ return data;
+ }
+}
+
+class PatientLabOrdersList {
+ String filterName = "";
+ List patientLabOrdersList = List();
+
+ PatientLabOrdersList(
+ {this.filterName, PatientLabOrders patientDoctorAppointment}) {
+ patientLabOrdersList.add(patientDoctorAppointment);
+ }
+}
diff --git a/lib/core/model/labs/patient_lab_special_result.dart b/lib/core/model/labs/patient_lab_special_result.dart
new file mode 100644
index 00000000..2fbcb832
--- /dev/null
+++ b/lib/core/model/labs/patient_lab_special_result.dart
@@ -0,0 +1,32 @@
+class PatientLabSpecialResult {
+ String invoiceNo;
+ String moduleID;
+ String resultData;
+ String resultDataHTML;
+ Null resultDataTxt;
+
+ PatientLabSpecialResult(
+ {this.invoiceNo,
+ this.moduleID,
+ this.resultData,
+ this.resultDataHTML,
+ this.resultDataTxt});
+
+ PatientLabSpecialResult.fromJson(Map json) {
+ invoiceNo = json['InvoiceNo'];
+ moduleID = json['ModuleID'];
+ resultData = json['ResultData'];
+ resultDataHTML = json['ResultDataHTML'];
+ resultDataTxt = json['ResultDataTxt'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['InvoiceNo'] = this.invoiceNo;
+ data['ModuleID'] = this.moduleID;
+ data['ResultData'] = this.resultData;
+ data['ResultDataHTML'] = this.resultDataHTML;
+ data['ResultDataTxt'] = this.resultDataTxt;
+ return data;
+ }
+}
diff --git a/lib/core/model/labs/request_patient_lab_orders.dart b/lib/core/model/labs/request_patient_lab_orders.dart
new file mode 100644
index 00000000..ce9263ef
--- /dev/null
+++ b/lib/core/model/labs/request_patient_lab_orders.dart
@@ -0,0 +1,64 @@
+class RequestPatientLabOrders {
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ int patientTypeID;
+ int patientType;
+
+ RequestPatientLabOrders(
+ {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});
+
+ RequestPatientLabOrders.fromJson(Map json) {
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ return data;
+ }
+}
diff --git a/lib/core/model/labs/request_patient_lab_special_result.dart b/lib/core/model/labs/request_patient_lab_special_result.dart
new file mode 100644
index 00000000..bdeb3930
--- /dev/null
+++ b/lib/core/model/labs/request_patient_lab_special_result.dart
@@ -0,0 +1,84 @@
+class RequestPatientLabSpecialResult {
+ String invoiceNo;
+ String orderNo;
+ String setupID;
+ String projectID;
+ int clinicID;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ int patientTypeID;
+ int patientType;
+
+ RequestPatientLabSpecialResult(
+ {this.invoiceNo,
+ 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'];
+ orderNo = json['OrderNo'];
+ setupID = json['SetupID'];
+ projectID = json['ProjectID'];
+ clinicID = json['ClinicID'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['InvoiceNo'] = this.invoiceNo;
+ data['OrderNo'] = this.orderNo;
+ data['SetupID'] = this.setupID;
+ data['ProjectID'] = this.projectID;
+ data['ClinicID'] = this.clinicID;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ return data;
+ }
+}
diff --git a/lib/core/model/labs/request_send_lab_report_email.dart b/lib/core/model/labs/request_send_lab_report_email.dart
new file mode 100644
index 00000000..118da906
--- /dev/null
+++ b/lib/core/model/labs/request_send_lab_report_email.dart
@@ -0,0 +1,112 @@
+class RequestSendLabReportEmail {
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ int patientTypeID;
+ int patientType;
+ String to;
+ String dateofBirth;
+ String patientIditificationNum;
+ String patientMobileNumber;
+ String patientName;
+ String setupID;
+ String projectName;
+ String clinicName;
+ String doctorName;
+ String projectID;
+ String invoiceNo;
+ String orderDate;
+
+ RequestSendLabReportEmail(
+ {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.to,
+ this.dateofBirth,
+ this.patientIditificationNum,
+ this.patientMobileNumber,
+ this.patientName,
+ this.setupID,
+ this.projectName,
+ this.clinicName,
+ this.doctorName,
+ this.projectID,
+ this.invoiceNo,
+ this.orderDate});
+
+ RequestSendLabReportEmail.fromJson(Map json) {
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ to = json['To'];
+ dateofBirth = json['DateofBirth'];
+ patientIditificationNum = json['PatientIditificationNum'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ patientName = json['PatientName'];
+ setupID = json['SetupID'];
+ projectName = json['ProjectName'];
+ clinicName = json['ClinicName'];
+ doctorName = json['DoctorName'];
+ projectID = json['ProjectID'];
+ invoiceNo = json['InvoiceNo'];
+ orderDate = json['OrderDate'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ data['To'] = this.to;
+ data['DateofBirth'] = this.dateofBirth;
+ data['PatientIditificationNum'] = this.patientIditificationNum;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['PatientName'] = this.patientName;
+ data['SetupID'] = this.setupID;
+ data['ProjectName'] = this.projectName;
+ data['ClinicName'] = this.clinicName;
+ data['DoctorName'] = this.doctorName;
+ data['ProjectID'] = this.projectID;
+ data['InvoiceNo'] = this.invoiceNo;
+ data['OrderDate'] = this.orderDate;
+ return data;
+ }
+}
diff --git a/lib/core/model/prescriptions/perscription_pharmacy.dart b/lib/core/model/prescriptions/perscription_pharmacy.dart
new file mode 100644
index 00000000..5180689f
--- /dev/null
+++ b/lib/core/model/prescriptions/perscription_pharmacy.dart
@@ -0,0 +1,108 @@
+class PharmacyPrescriptions {
+ String expiryDate;
+ double sellingPrice;
+ int quantity;
+ int itemID;
+ int locationID;
+ int projectID;
+ String setupID;
+ String locationDescription;
+ Null locationDescriptionN;
+ String itemDescription;
+ Null itemDescriptionN;
+ String alias;
+ int locationTypeID;
+ int barcode;
+ Null companybarcode;
+ int cityID;
+ String cityName;
+ int distanceInKilometers;
+ String latitude;
+ int locationType;
+ String longitude;
+ String phoneNumber;
+ String projectImageURL;
+ Null sortOrder;
+
+ PharmacyPrescriptions(
+ {this.expiryDate,
+ this.sellingPrice,
+ this.quantity,
+ this.itemID,
+ this.locationID,
+ this.projectID,
+ this.setupID,
+ this.locationDescription,
+ this.locationDescriptionN,
+ this.itemDescription,
+ this.itemDescriptionN,
+ this.alias,
+ this.locationTypeID,
+ this.barcode,
+ this.companybarcode,
+ this.cityID,
+ this.cityName,
+ this.distanceInKilometers,
+ this.latitude,
+ this.locationType,
+ this.longitude,
+ this.phoneNumber,
+ this.projectImageURL,
+ this.sortOrder});
+
+ PharmacyPrescriptions.fromJson(Map json) {
+ expiryDate = json['ExpiryDate'];
+ sellingPrice = json['SellingPrice'];
+ quantity = json['Quantity'];
+ itemID = json['ItemID'];
+ locationID = json['LocationID'];
+ projectID = json['ProjectID'];
+ setupID = json['SetupID'];
+ locationDescription = json['LocationDescription'];
+ locationDescriptionN = json['LocationDescriptionN'];
+ itemDescription = json['ItemDescription'];
+ itemDescriptionN = json['ItemDescriptionN'];
+ alias = json['Alias'];
+ locationTypeID = json['LocationTypeID'];
+ barcode = json['Barcode'];
+ companybarcode = json['Companybarcode'];
+ cityID = json['CityID'];
+ cityName = json['CityName'];
+ distanceInKilometers = json['DistanceInKilometers'];
+ latitude = json['Latitude'];
+ locationType = json['LocationType'];
+ longitude = json['Longitude'];
+ phoneNumber = json['PhoneNumber'];
+ projectImageURL = json['ProjectImageURL'];
+ sortOrder = json['SortOrder'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ExpiryDate'] = this.expiryDate;
+ data['SellingPrice'] = this.sellingPrice;
+ data['Quantity'] = this.quantity;
+ data['ItemID'] = this.itemID;
+ data['LocationID'] = this.locationID;
+ data['ProjectID'] = this.projectID;
+ data['SetupID'] = this.setupID;
+ data['LocationDescription'] = this.locationDescription;
+ data['LocationDescriptionN'] = this.locationDescriptionN;
+ data['ItemDescription'] = this.itemDescription;
+ data['ItemDescriptionN'] = this.itemDescriptionN;
+ data['Alias'] = this.alias;
+ data['LocationTypeID'] = this.locationTypeID;
+ data['Barcode'] = this.barcode;
+ data['Companybarcode'] = this.companybarcode;
+ data['CityID'] = this.cityID;
+ data['CityName'] = this.cityName;
+ data['DistanceInKilometers'] = this.distanceInKilometers;
+ data['Latitude'] = this.latitude;
+ data['LocationType'] = this.locationType;
+ data['Longitude'] = this.longitude;
+ data['PhoneNumber'] = this.phoneNumber;
+ data['ProjectImageURL'] = this.projectImageURL;
+ data['SortOrder'] = this.sortOrder;
+ return data;
+ }
+}
diff --git a/lib/core/model/prescriptions/prescription_report_enh.dart b/lib/core/model/prescriptions/prescription_report_enh.dart
new file mode 100644
index 00000000..203eaaff
--- /dev/null
+++ b/lib/core/model/prescriptions/prescription_report_enh.dart
@@ -0,0 +1,144 @@
+class PrescriptionReportEnh {
+ String address;
+ int appointmentNo;
+ String clinic;
+ Null companyName;
+ int days;
+ String doctorName;
+ int doseDailyQuantity;
+ String frequency;
+ int frequencyNumber;
+ Null image;
+ Null imageExtension;
+ String imageSRCUrl;
+ Null imageString;
+ String imageThumbUrl;
+ String isCovered;
+ String itemDescription;
+ int itemID;
+ String orderDate;
+ int patientID;
+ String patientName;
+ String phoneOffice1;
+ Null prescriptionQR;
+ int prescriptionTimes;
+ Null productImage;
+ Null productImageBase64;
+ String productImageString;
+ int projectID;
+ String projectName;
+ String remarks;
+ String route;
+ String sKU;
+ int scaleOffset;
+ String startDate;
+
+ PrescriptionReportEnh(
+ {this.address,
+ this.appointmentNo,
+ this.clinic,
+ this.companyName,
+ this.days,
+ this.doctorName,
+ this.doseDailyQuantity,
+ this.frequency,
+ this.frequencyNumber,
+ this.image,
+ this.imageExtension,
+ this.imageSRCUrl,
+ this.imageString,
+ this.imageThumbUrl,
+ this.isCovered,
+ this.itemDescription,
+ this.itemID,
+ this.orderDate,
+ this.patientID,
+ this.patientName,
+ this.phoneOffice1,
+ this.prescriptionQR,
+ this.prescriptionTimes,
+ this.productImage,
+ this.productImageBase64,
+ this.productImageString,
+ this.projectID,
+ this.projectName,
+ this.remarks,
+ this.route,
+ this.sKU,
+ this.scaleOffset,
+ this.startDate});
+
+ PrescriptionReportEnh.fromJson(Map json) {
+ address = json['Address'];
+ appointmentNo = json['AppointmentNo'];
+ clinic = json['Clinic'];
+ companyName = json['CompanyName'];
+ days = json['Days'];
+ doctorName = json['DoctorName'];
+ doseDailyQuantity = json['DoseDailyQuantity'];
+ frequency = json['Frequency'];
+ frequencyNumber = json['FrequencyNumber'];
+ image = json['Image'];
+ imageExtension = json['ImageExtension'];
+ imageSRCUrl = json['ImageSRCUrl'];
+ imageString = json['ImageString'];
+ imageThumbUrl = json['ImageThumbUrl'];
+ isCovered = json['IsCovered'];
+ itemDescription = json['ItemDescription'];
+ itemID = json['ItemID'];
+ orderDate = json['OrderDate'];
+ patientID = json['PatientID'];
+ patientName = json['PatientName'];
+ phoneOffice1 = json['PhoneOffice1'];
+ prescriptionQR = json['PrescriptionQR'];
+ prescriptionTimes = json['PrescriptionTimes'];
+ productImage = json['ProductImage'];
+ productImageBase64 = json['ProductImageBase64'];
+ productImageString = json['ProductImageString'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ remarks = json['Remarks'];
+ route = json['Route'];
+ sKU = json['SKU'];
+ scaleOffset = json['ScaleOffset'];
+ startDate = json['StartDate'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Address'] = this.address;
+ data['AppointmentNo'] = this.appointmentNo;
+ data['Clinic'] = this.clinic;
+ data['CompanyName'] = this.companyName;
+ data['Days'] = this.days;
+ data['DoctorName'] = this.doctorName;
+ data['DoseDailyQuantity'] = this.doseDailyQuantity;
+ data['Frequency'] = this.frequency;
+ data['FrequencyNumber'] = this.frequencyNumber;
+ data['Image'] = this.image;
+ data['ImageExtension'] = this.imageExtension;
+ data['ImageSRCUrl'] = this.imageSRCUrl;
+ data['ImageString'] = this.imageString;
+ data['ImageThumbUrl'] = this.imageThumbUrl;
+ data['IsCovered'] = this.isCovered;
+ data['ItemDescription'] = this.itemDescription;
+ data['ItemID'] = this.itemID;
+ data['OrderDate'] = this.orderDate;
+ data['PatientID'] = this.patientID;
+ data['PatientName'] = this.patientName;
+ data['PhoneOffice1'] = this.phoneOffice1;
+ data['PrescriptionQR'] = this.prescriptionQR;
+ data['PrescriptionTimes'] = this.prescriptionTimes;
+ data['ProductImage'] = this.productImage;
+ data['ProductImageBase64'] = this.productImageBase64;
+ data['ProductImageString'] = this.productImageString;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['Remarks'] = this.remarks;
+ data['Route'] = this.route;
+ data['SKU'] = this.sKU;
+ data['ScaleOffset'] = this.scaleOffset;
+ data['StartDate'] = this.startDate;
+ return data;
+ }
+}
diff --git a/lib/core/model/prescriptions/request_get_list_pharmacy_for_prescriptions.dart b/lib/core/model/prescriptions/request_get_list_pharmacy_for_prescriptions.dart
new file mode 100644
index 00000000..739bb838
--- /dev/null
+++ b/lib/core/model/prescriptions/request_get_list_pharmacy_for_prescriptions.dart
@@ -0,0 +1,60 @@
+class RequestGetListPharmacyForPrescriptions {
+ int latitude;
+ int longitude;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int itemID;
+
+ RequestGetListPharmacyForPrescriptions(
+ {this.latitude,
+ this.longitude,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID,
+ this.itemID});
+
+ RequestGetListPharmacyForPrescriptions.fromJson(Map json) {
+ latitude = json['Latitude'];
+ longitude = json['Longitude'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ itemID = json['ItemID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Latitude'] = this.latitude;
+ data['Longitude'] = this.longitude;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['ItemID'] = this.itemID;
+ return data;
+ }
+}
diff --git a/lib/core/model/prescriptions/request_prescription_report_enh.dart b/lib/core/model/prescriptions/request_prescription_report_enh.dart
new file mode 100644
index 00000000..42b89c15
--- /dev/null
+++ b/lib/core/model/prescriptions/request_prescription_report_enh.dart
@@ -0,0 +1,84 @@
+class RequestPrescriptionReportEnh {
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ int patientTypeID;
+ int patientType;
+ int appointmentNo;
+ String setupID;
+ int episodeID;
+ int clinicID;
+ int projectID;
+
+ RequestPrescriptionReportEnh(
+ {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.appointmentNo,
+ this.setupID,
+ this.episodeID,
+ this.clinicID,
+ this.projectID});
+
+ RequestPrescriptionReportEnh.fromJson(Map json) {
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ appointmentNo = json['AppointmentNo'];
+ setupID = json['SetupID'];
+ episodeID = json['EpisodeID'];
+ clinicID = json['ClinicID'];
+ projectID = json['ProjectID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ data['AppointmentNo'] = this.appointmentNo;
+ data['SetupID'] = this.setupID;
+ data['EpisodeID'] = this.episodeID;
+ data['ClinicID'] = this.clinicID;
+ data['ProjectID'] = this.projectID;
+ return data;
+ }
+}
diff --git a/lib/core/model/radiology/final_radiology.dart b/lib/core/model/radiology/final_radiology.dart
new file mode 100644
index 00000000..2efe4481
--- /dev/null
+++ b/lib/core/model/radiology/final_radiology.dart
@@ -0,0 +1,187 @@
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+
+class FinalRadiology {
+ String setupID;
+ int projectID;
+ Null patientID;
+ int invoiceLineItemNo;
+ int invoiceNo;
+ int doctorID;
+ int clinicID;
+ DateTime orderDate;
+ String reportData;
+ String imageURL;
+ String procedureID;
+ int appointmentNo;
+ Null dIAPacsURL;
+ bool isRead;
+ String readOn;
+ var admissionNo;
+ bool isInOutPatient;
+ int actualDoctorRate;
+ String clinicDescription;
+ String dIAPACSURL;
+ String doctorImageURL;
+ String doctorName;
+ int doctorRate;
+ String doctorTitle;
+ int gender;
+ String genderDescription;
+ bool isActiveDoctorProfile;
+ bool isExecludeDoctor;
+ String isInOutPatientDescription;
+ String isInOutPatientDescriptionN;
+ String nationalityFlagURL;
+ int noOfPatientsRate;
+ int orderNo;
+ String projectName;
+ String qR;
+ String reportDataHTML;
+ String reportDataTextString;
+ List speciality;
+ bool isCVI;
+ bool isRadMedicalReport;
+
+ FinalRadiology(
+ {this.setupID,
+ this.projectID,
+ this.patientID,
+ this.invoiceLineItemNo,
+ this.invoiceNo,
+ this.doctorID,
+ this.clinicID,
+ this.orderDate,
+ this.reportData,
+ this.imageURL,
+ this.procedureID,
+ this.appointmentNo,
+ this.dIAPacsURL,
+ this.isRead,
+ this.readOn,
+ this.admissionNo,
+ this.isInOutPatient,
+ this.actualDoctorRate,
+ this.clinicDescription,
+ this.dIAPACSURL,
+ this.doctorImageURL,
+ this.doctorName,
+ this.doctorRate,
+ this.doctorTitle,
+ this.gender,
+ this.genderDescription,
+ this.isActiveDoctorProfile,
+ this.isExecludeDoctor,
+ this.isInOutPatientDescription,
+ this.isInOutPatientDescriptionN,
+ this.nationalityFlagURL,
+ this.noOfPatientsRate,
+ this.orderNo,
+ this.projectName,
+ this.qR,
+ this.reportDataHTML,
+ this.reportDataTextString,
+ this.speciality,
+ this.isCVI,
+ this.isRadMedicalReport});
+
+ FinalRadiology.fromJson(Map json) {
+ try {
+ setupID = json['SetupID'];
+ projectID = json['ProjectID'];
+ patientID = json['PatientID'];
+ invoiceLineItemNo = json['InvoiceLineItemNo'];
+ invoiceNo = json['InvoiceNo'];
+ doctorID = json['DoctorID'];
+ clinicID = json['ClinicID'];
+ orderDate = DateUtil.convertStringToDate(json['OrderDate']);
+ reportData = json['ReportData'];
+ imageURL = json['ImageURL'];
+ procedureID = json['ProcedureID'];
+ appointmentNo = json['AppointmentNo'];
+ dIAPacsURL = json['DIAPacsURL'];
+ isRead = json['IsRead'];
+ readOn = json['ReadOn'];
+ admissionNo = json['AdmissionNo'];
+ isInOutPatient = json['IsInOutPatient'];
+ actualDoctorRate = json['ActualDoctorRate'];
+ clinicDescription = json['ClinicDescription'];
+ dIAPACSURL = json['DIA_PACS_URL'];
+ doctorImageURL = json['DoctorImageURL'];
+ doctorName = json['DoctorName'];
+ doctorRate = json['DoctorRate'];
+ doctorTitle = json['DoctorTitle'];
+ gender = json['Gender'];
+ genderDescription = json['GenderDescription'];
+ isActiveDoctorProfile = json['IsActiveDoctorProfile'];
+ isExecludeDoctor = json['IsExecludeDoctor'];
+ isInOutPatientDescription = json['IsInOutPatientDescription'];
+ isInOutPatientDescriptionN = json['IsInOutPatientDescriptionN'];
+ nationalityFlagURL = json['NationalityFlagURL'];
+ noOfPatientsRate = json['NoOfPatientsRate'];
+ orderNo = json['OrderNo'];
+ projectName = json['ProjectName'];
+ qR = json['QR'];
+ reportDataHTML = json['ReportDataHTML'];
+ reportDataTextString = json['ReportDataTextString'];
+ // speciality = json['Speciality'].cast();
+ isCVI = json['isCVI'];
+ isRadMedicalReport = json['isRadMedicalReport'];
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['SetupID'] = this.setupID;
+ data['ProjectID'] = this.projectID;
+ data['PatientID'] = this.patientID;
+ data['InvoiceLineItemNo'] = this.invoiceLineItemNo;
+ data['InvoiceNo'] = this.invoiceNo;
+ data['DoctorID'] = this.doctorID;
+ data['ClinicID'] = this.clinicID;
+ data['OrderDate'] = this.orderDate;
+ data['ReportData'] = this.reportData;
+ data['ImageURL'] = this.imageURL;
+ data['ProcedureID'] = this.procedureID;
+ data['AppointmentNo'] = this.appointmentNo;
+ data['DIAPacsURL'] = this.dIAPacsURL;
+ data['IsRead'] = this.isRead;
+ data['ReadOn'] = this.readOn;
+ data['AdmissionNo'] = this.admissionNo;
+ data['IsInOutPatient'] = this.isInOutPatient;
+ data['ActualDoctorRate'] = this.actualDoctorRate;
+ data['ClinicDescription'] = this.clinicDescription;
+ data['DIA_PACS_URL'] = this.dIAPACSURL;
+ data['DoctorImageURL'] = this.doctorImageURL;
+ data['DoctorName'] = this.doctorName;
+ data['DoctorRate'] = this.doctorRate;
+ data['DoctorTitle'] = this.doctorTitle;
+ data['Gender'] = this.gender;
+ data['GenderDescription'] = this.genderDescription;
+ data['IsActiveDoctorProfile'] = this.isActiveDoctorProfile;
+ data['IsExecludeDoctor'] = this.isExecludeDoctor;
+ data['IsInOutPatientDescription'] = this.isInOutPatientDescription;
+ data['IsInOutPatientDescriptionN'] = this.isInOutPatientDescriptionN;
+ data['NationalityFlagURL'] = this.nationalityFlagURL;
+ data['NoOfPatientsRate'] = this.noOfPatientsRate;
+ data['OrderNo'] = this.orderNo;
+ data['ProjectName'] = this.projectName;
+ data['QR'] = this.qR;
+ data['ReportDataHTML'] = this.reportDataHTML;
+ data['ReportDataTextString'] = this.reportDataTextString;
+ data['Speciality'] = this.speciality;
+ data['isCVI'] = this.isCVI;
+ data['isRadMedicalReport'] = this.isRadMedicalReport;
+ return data;
+ }
+}
+
+class FinalRadiologyList {
+ String filterName = "";
+ List finalRadiologyList = List();
+
+ FinalRadiologyList({this.filterName, FinalRadiology finalRadiology}) {
+ finalRadiologyList.add(finalRadiology);
+ }
+}
diff --git a/lib/core/model/radiology/request_patient_rad_orders_details.dart b/lib/core/model/radiology/request_patient_rad_orders_details.dart
new file mode 100644
index 00000000..9e3458d5
--- /dev/null
+++ b/lib/core/model/radiology/request_patient_rad_orders_details.dart
@@ -0,0 +1,92 @@
+class RequestPatientRadOrdersDetails {
+ int projectID;
+ int orderNo;
+ int invoiceNo;
+ String setupID;
+ String procedureID;
+ bool isMedicalReport;
+ bool isCVI;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ int patientTypeID;
+ int patientType;
+
+ RequestPatientRadOrdersDetails(
+ {this.projectID,
+ this.orderNo,
+ this.invoiceNo,
+ this.setupID,
+ this.procedureID,
+ this.isMedicalReport,
+ this.isCVI,
+ 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});
+
+ RequestPatientRadOrdersDetails.fromJson(Map json) {
+ projectID = json['ProjectID'];
+ orderNo = json['OrderNo'];
+ invoiceNo = json['InvoiceNo'];
+ setupID = json['SetupID'];
+ procedureID = json['ProcedureID'];
+ isMedicalReport = json['IsMedicalReport'];
+ isCVI = json['isCVI'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ProjectID'] = this.projectID;
+ data['OrderNo'] = this.orderNo;
+ data['InvoiceNo'] = this.invoiceNo;
+ data['SetupID'] = this.setupID;
+ data['ProcedureID'] = this.procedureID;
+ data['IsMedicalReport'] = this.isMedicalReport;
+ data['isCVI'] = this.isCVI;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ return data;
+ }
+}
diff --git a/lib/core/model/radiology/request_send_rad_report_email.dart b/lib/core/model/radiology/request_send_rad_report_email.dart
new file mode 100644
index 00000000..6d68653d
--- /dev/null
+++ b/lib/core/model/radiology/request_send_rad_report_email.dart
@@ -0,0 +1,116 @@
+class RequestSendRadReportEmail {
+ int channel;
+ String clinicName;
+ String dateofBirth;
+ int deviceTypeID;
+ String doctorName;
+ String generalid;
+ int invoiceNo;
+ String iPAdress;
+ bool isDentalAllowedBackend;
+ int languageID;
+ String orderDate;
+ int patientID;
+ String patientIditificationNum;
+ String patientMobileNumber;
+ String patientName;
+ int patientOutSA;
+ int patientType;
+ int patientTypeID;
+ int projectID;
+ String projectName;
+ String radResult;
+ String sessionID;
+ String setupID;
+ String to;
+ String tokenID;
+ double versionID;
+
+ RequestSendRadReportEmail(
+ {this.channel,
+ this.clinicName,
+ this.dateofBirth,
+ this.deviceTypeID,
+ this.doctorName,
+ this.generalid,
+ this.invoiceNo,
+ this.iPAdress,
+ this.isDentalAllowedBackend,
+ this.languageID,
+ this.orderDate,
+ this.patientID,
+ this.patientIditificationNum,
+ this.patientMobileNumber,
+ this.patientName,
+ this.patientOutSA,
+ this.patientType,
+ this.patientTypeID,
+ this.projectID,
+ this.projectName,
+ this.radResult,
+ this.sessionID,
+ this.setupID,
+ this.to,
+ this.tokenID,
+ this.versionID});
+
+ RequestSendRadReportEmail.fromJson(Map json) {
+ channel = json['Channel'];
+ clinicName = json['ClinicName'];
+ dateofBirth = json['DateofBirth'];
+ deviceTypeID = json['DeviceTypeID'];
+ doctorName = json['DoctorName'];
+ generalid = json['generalid'];
+ invoiceNo = json['InvoiceNo'];
+ iPAdress = json['IPAdress'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ languageID = json['LanguageID'];
+ orderDate = json['OrderDate'];
+ patientID = json['PatientID'];
+ patientIditificationNum = json['PatientIditificationNum'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ patientName = json['PatientName'];
+ patientOutSA = json['PatientOutSA'];
+ patientType = json['PatientType'];
+ patientTypeID = json['PatientTypeID'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ radResult = json['RadResult'];
+ sessionID = json['SessionID'];
+ setupID = json['SetupID'];
+ to = json['To'];
+ tokenID = json['TokenID'];
+ versionID = json['VersionID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Channel'] = this.channel;
+ data['ClinicName'] = this.clinicName;
+ data['DateofBirth'] = this.dateofBirth;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['DoctorName'] = this.doctorName;
+ data['generalid'] = this.generalid;
+ data['InvoiceNo'] = this.invoiceNo;
+ data['IPAdress'] = this.iPAdress;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['LanguageID'] = this.languageID;
+ data['OrderDate'] = this.orderDate;
+ data['PatientID'] = this.patientID;
+ data['PatientIditificationNum'] = this.patientIditificationNum;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['PatientName'] = this.patientName;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['PatientType'] = this.patientType;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['RadResult'] = this.radResult;
+ data['SessionID'] = this.sessionID;
+ data['SetupID'] = this.setupID;
+ data['To'] = this.to;
+ data['TokenID'] = this.tokenID;
+ data['VersionID'] = this.versionID;
+ return data;
+ }
+}
diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart
index c48c3e3f..456cb02b 100644
--- a/lib/core/service/client/base_app_client.dart
+++ b/lib/core/service/client/base_app_client.dart
@@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:http/http.dart' as http;
@@ -14,17 +15,31 @@ AppSharedPreferences sharedPref = new AppSharedPreferences();
/// body: null);
class BaseAppClient {
- post(
- String endPoint, {
- Map body,
- Function(dynamic response, int statusCode) onSuccess,
- Function(String error, int statusCode) onFailure,
- }) async {
+ post(String endPoint,
+ {Map body,
+ Function(dynamic response, int statusCode) onSuccess,
+ Function(String error, int statusCode) onFailure,
+ bool isAllowAny = false}) async {
String url = BASE_URL + endPoint;
try {
//Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// String token = await sharedPref.getString(TOKEN);
+ body['SetupID'] = SETUP_ID;
+ body['VersionID'] = VERSION_ID;
+ body['Channel'] = CHANNEL;
+ body['LanguageID'] = LANGUAGE;
+ body['IPAdress'] = IP_ADDRESS;
+ body['generalid'] = GENERAL_ID;
+ body['PatientOutSA'] = PATIENT_OUT_SA;
+ body['SessionID'] = SESSION_ID;
+ body['isDentalAllowedBackend'] = IS_DENTAL_ALLOWED_BACKEND;
+ body['DeviceTypeID'] = DeviceTypeID;
+ body['PatientType'] = PATIENT_TYPE;
+ body['PatientTypeID'] = PATIENT_TYPE_ID;
+ body['TokenID'] = '@dm!n';
+ body['PatientID'] = 1231755;
+
print("URL : $url");
print("Body : ${json.encode(body)}");
@@ -40,14 +55,19 @@ class BaseAppClient {
onFailure('Error While Fetching data', statusCode);
} else {
var parsed = json.decode(response.body.toString());
- if (!parsed['IsAuthenticated']) {
+ if (isAllowAny) {
+ onSuccess(parsed, statusCode);
+ } else if (!parsed['IsAuthenticated']) {
if (parsed['isSMSSent'] == true) {
onSuccess(parsed, statusCode);
+ } else if (parsed['MessageStatus'] == 1) {
+ onSuccess(parsed, statusCode);
+ } else {
+ onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'],
+ statusCode);
+ logout();
}
- // await helpers.logout();
- //helpers.showErrorToast('Your session expired Please login agian');
- var asd ="";
- // TODO create logout fun
+
} else if (parsed['MessageStatus'] == 1 ||
parsed['SMSLoginRequired'] == true) {
onSuccess(parsed, statusCode);
@@ -64,4 +84,8 @@ class BaseAppClient {
onFailure(e.toString(), -1);
}
}
+
+ logout() async {
+ await sharedPref.remove(LOGIN_TOKEN_ID);
+ }
}
diff --git a/lib/core/service/feedback/feedback_service.dart b/lib/core/service/feedback/feedback_service.dart
new file mode 100644
index 00000000..eaf2f94a
--- /dev/null
+++ b/lib/core/service/feedback/feedback_service.dart
@@ -0,0 +1,65 @@
+import 'dart:io';
+
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/core/model/feedback/COC_items.dart';
+import 'package:diplomaticquarterapp/core/model/feedback/request_insert_coc_item.dart';
+import 'package:diplomaticquarterapp/core/service/base_service.dart';
+
+class FeedbackService extends BaseService {
+ List cOCItemList = List();
+ RequestInsertCOCItem _requestInsertCOCItem = RequestInsertCOCItem();
+
+ Future sendCOCItem(
+ {String title,
+ String details,
+ String cOCTypeName,
+ String attachment}) async {
+ hasError = false;
+
+ _requestInsertCOCItem.attachment = attachment;
+ _requestInsertCOCItem.title = title;
+ _requestInsertCOCItem.details = details;
+ _requestInsertCOCItem.cOCTypeName = cOCTypeName;
+ _requestInsertCOCItem.formTypeID = cOCTypeName;
+ _requestInsertCOCItem.mobileNo =
+ "966537503378"; //TODO Change it to be dynamic
+ _requestInsertCOCItem.isUserLoggedIn = true;
+ _requestInsertCOCItem.projectID = 1231755;
+ _requestInsertCOCItem.patientName = "TAMER FANASHEH";
+ _requestInsertCOCItem.fileName = "";
+ _requestInsertCOCItem.uILanguage = "ar"; //TODO Change it to be dynamic
+ _requestInsertCOCItem.browserInfo = Platform.localHostname;
+ _requestInsertCOCItem.deviceInfo = Platform.localHostname;
+ _requestInsertCOCItem.resolution = "400x847";
+ _requestInsertCOCItem.projectID = 0;
+ _requestInsertCOCItem.identificationNo = 2344670985;
+
+ await baseAppClient
+ .post(SEND_FEEDBACK, onSuccess: (dynamic response, int statusCode) {
+ var asd = "";
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestInsertCOCItem.toJson());
+ }
+
+ Future getStatusCOC() async {
+ hasError = false;
+ Map body = new Map();
+ body['IdentificationNo'] = '2344670985';
+ body['MobileNo'] = '966537503378';
+ body['Searching_type'] = '1';
+
+ await baseAppClient.post(GET_STATUS_FOR_COCO,
+ onSuccess: (dynamic response, int statusCode) {
+ cOCItemList = [];
+ response['ListCOCItems'].forEach((cOC) {
+ cOCItemList.add(COCItem.fromJson(cOC));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+}
diff --git a/lib/core/service/medical/labs_service.dart b/lib/core/service/medical/labs_service.dart
new file mode 100644
index 00000000..cad5696a
--- /dev/null
+++ b/lib/core/service/medical/labs_service.dart
@@ -0,0 +1,91 @@
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/doctor_profile.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/doctor_rating.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/patient_doctor_appointment.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/reques_patient_doctor_appointmentt.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/request_doctor_profile.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/request_doctor_rating.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_special_result.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_patient_lab_special_result.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_send_lab_report_email.dart';
+import 'package:diplomaticquarterapp/core/service/base_service.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+
+class LabsService extends BaseService {
+
+
+ RequestPatientLabOrders _requestPatientLabOrders = RequestPatientLabOrders();
+ List patientLabOrdersList = List();
+
+
+ Future getPatientLabOrdersList() async {
+ await baseAppClient.post(GET_Patient_LAB_ORDERS,
+ onSuccess: (dynamic response, int statusCode) {
+ patientLabOrdersList.clear();
+ response['ListPLO'].forEach((hospital) {
+ patientLabOrdersList
+ .add(PatientLabOrders.fromJson(hospital));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestPatientLabOrders.toJson());
+ }
+
+
+ RequestPatientLabSpecialResult _requestPatientLabSpecialResult = RequestPatientLabSpecialResult();
+
+
+ List patientLabSpecialResult = List();
+
+ Future getLaboratoryResult(
+ {String projectID, int clinicID, String invoiceNo, String orderNo}) async {
+ hasError = false;
+ _requestPatientLabSpecialResult.projectID = projectID;
+ _requestPatientLabSpecialResult.clinicID = clinicID;
+ _requestPatientLabSpecialResult.invoiceNo = invoiceNo;//'1800296522';//;
+ _requestPatientLabSpecialResult.orderNo = orderNo;
+
+ await baseAppClient.post(GET_Patient_LAB_SPECIAL_RESULT,
+ onSuccess: (dynamic response, int statusCode) {
+ patientLabSpecialResult.clear();
+ response['ListPLSR'].forEach((hospital) {
+ patientLabSpecialResult
+ .add(PatientLabSpecialResult.fromJson(hospital));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestPatientLabSpecialResult.toJson());
+ }
+
+ RequestSendLabReportEmail _requestSendLabReportEmail = RequestSendLabReportEmail();
+
+ Future sendLabReportEmail(
+ {PatientLabOrders patientLabOrder}) async {
+
+ _requestSendLabReportEmail.projectID = patientLabOrder.projectID;
+ _requestSendLabReportEmail.invoiceNo = patientLabOrder.invoiceNo;
+ _requestSendLabReportEmail.doctorName = patientLabOrder.doctorName;
+ _requestSendLabReportEmail.clinicName = patientLabOrder.clinicDescription;
+ _requestSendLabReportEmail.patientName = 'Tamer';//TODO Change it
+ _requestSendLabReportEmail.patientIditificationNum = '2344670985';//TODO change it
+ _requestSendLabReportEmail.dateofBirth = '/Date(536743800000+0300)/';//TODO change it
+ _requestSendLabReportEmail.to = 'Tamer.fanasheh@gmail.com';//TODO change it
+ _requestSendLabReportEmail.orderDate = '${patientLabOrder.orderDate.year}-${patientLabOrder.orderDate.month}-${patientLabOrder.orderDate.day}';
+ _requestSendLabReportEmail.patientMobileNumber = '537503378';//TODO change it
+ _requestSendLabReportEmail.projectName = patientLabOrder.projectName;
+
+ await baseAppClient.post(GET_Patient_LAB_SPECIAL_RESULT,
+ onSuccess: (dynamic response, int statusCode) {
+ AppToast.showSuccessToast(message: 'A copy has been sent to the email');
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestSendLabReportEmail.toJson());
+ }
+
+
+}
diff --git a/lib/core/service/medical/prescriptions_service.dart b/lib/core/service/medical/prescriptions_service.dart
index 3e7259f7..294ef897 100644
--- a/lib/core/service/medical/prescriptions_service.dart
+++ b/lib/core/service/medical/prescriptions_service.dart
@@ -1,8 +1,12 @@
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/request_get_list_pharmacy_for_prescriptions.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescription_report.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescription_report_enh.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescriptions.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescriptions_orders.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/request_send_prescription_email.dart';
@@ -137,13 +141,83 @@ class PrescriptionsService extends BaseService {
_requestSendPrescriptionEmail.projectID = projectID;
hasError = false;
await baseAppClient.post(SEND_PRESCRIPTION_EMAIL,
- onSuccess: (dynamic response, int statusCode){
- var asd = "";
-
- },
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestSendPrescriptionEmail.toJson());
}
+
+ RequestGetListPharmacyForPrescriptions
+ requestGetListPharmacyForPrescriptions =
+ RequestGetListPharmacyForPrescriptions(
+ latitude: 0,
+ longitude: 0,
+ versionID: 5.5,
+ channel: 3,
+ languageID: 2,
+ iPAdress: '10.20.10.20',
+ generalid: 'Cs2020@2016\$2958',
+ patientOutSA: 0,
+ sessionID: 'HGNerTUSXhpaHXBg',
+ isDentalAllowedBackend: false,
+ deviceTypeID: 2,
+ );
+ List pharmacyPrescriptionsList = List();
+
+ Future getListPharmacyForPrescriptions({int itemId}) async {
+ hasError = false;
+ requestGetListPharmacyForPrescriptions.itemID = itemId;
+ await baseAppClient.post(GET_PHARMACY_LIST,
+ onSuccess: (dynamic response, int statusCode) {
+ pharmacyPrescriptionsList.clear();
+ response['PharmList'].forEach((prescriptions) {
+ pharmacyPrescriptionsList
+ .add(PharmacyPrescriptions.fromJson(prescriptions));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: requestGetListPharmacyForPrescriptions.toJson());
+ }
+
+
+ RequestPrescriptionReportEnh _requestPrescriptionReportEnh = RequestPrescriptionReportEnh(
+ versionID: 5.5,
+ channel: 3,
+ languageID: 2,
+ iPAdress: '10.20.10.20',
+ generalid: 'Cs2020@2016\$2958',
+ patientOutSA: 0,
+ sessionID: 'bQQdesEKpyYKTFMVNeg',
+ isDentalAllowedBackend: false,
+ deviceTypeID: 2,
+ patientID: 1231755,
+ tokenID: '@dm!n',
+ patientTypeID: 1,
+ patientType: 1,
+ setupID: '91877',
+ appointmentNo: 5926390,
+ episodeID: 140251928,
+ clinicID: 25,
+ projectID: 12
+
+ );
+
+ List prescriptionReportEnhList = List();
+ Future getPrescriptionReportEnh({PrescriptionsOrder prescriptionsOrder})async{
+ hasError = false;
+ // _requestPrescriptionReportEnh.appointmentNo = int.parse(prescriptionsOrder.appointmentNo);
+ // _requestPrescriptionReportEnh.patientID = prescriptionsOrder.projectID;
+
+ await baseAppClient.post(GET_PRESCRIPTION_REPORT_ENH,
+ onSuccess: (dynamic response, int statusCode) {
+ prescriptionReportEnhList.clear();
+ response['ListPRM'].forEach((prescriptions) {
+ prescriptionReportEnhList.add(PrescriptionReportEnh.fromJson(prescriptions));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestPrescriptionReportEnh.toJson());
+ }
}
diff --git a/lib/core/service/medical/radiology_service.dart b/lib/core/service/medical/radiology_service.dart
new file mode 100644
index 00000000..e14206d5
--- /dev/null
+++ b/lib/core/service/medical/radiology_service.dart
@@ -0,0 +1,98 @@
+import 'package:diplomaticquarterapp/config/config.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/doctor_profile.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/doctor_rating.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/patient_doctor_appointment.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/reques_patient_doctor_appointmentt.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/request_doctor_profile.dart';
+import 'package:diplomaticquarterapp/core/model/doctor/request_doctor_rating.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_special_result.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_patient_lab_special_result.dart';
+import 'package:diplomaticquarterapp/core/model/labs/request_send_lab_report_email.dart';
+import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
+import 'package:diplomaticquarterapp/core/model/radiology/request_send_rad_report_email.dart';
+import 'package:diplomaticquarterapp/core/service/base_service.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+
+class RadiologyService extends BaseService {
+ List finalRadiologyList = List();
+ String url = '';
+
+ Future getRadImageURL({int invoiceNo, int lineItem,int projectId}) async {
+ hasError = false;
+ final Map body = new Map();
+ body['InvoiceNo'] = invoiceNo;
+ body['LineItemNo'] = lineItem;
+ body['ProjectID'] = projectId;
+
+ await baseAppClient.post(GET_RAD_IMAGE_URL,
+ isAllowAny: true,
+ onSuccess: (dynamic response, int statusCode) {
+ url = response['Data'];
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+
+ Future getPatientRadOrders () async {
+ hasError = false;
+ await baseAppClient.post(GET_PATIENT_ORDERS,
+ onSuccess: (dynamic response, int statusCode) {
+ finalRadiologyList.clear();
+ response['FinalRadiologyList'].forEach((radiology) {
+ finalRadiologyList.add(FinalRadiology.fromJson(radiology));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: Map());
+ }
+
+ Future getPatientRadOrdersDetails() async {
+ hasError = false;
+ await baseAppClient.post(GET_PATIENT_ORDERS,
+ onSuccess: (dynamic response, int statusCode) {
+ finalRadiologyList.clear();
+ response['FinalRadiologyList'].forEach((radiology) {
+ finalRadiologyList.add(FinalRadiology.fromJson(radiology));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: Map());
+ }
+
+ RequestSendRadReportEmail _requestSendRadReportEmail =
+ RequestSendRadReportEmail();
+
+ Future sendRadReportEmail(
+ {FinalRadiology finalRadiology}) async {
+ _requestSendRadReportEmail.projectID = finalRadiology.projectID;
+ _requestSendRadReportEmail.clinicName = finalRadiology.clinicDescription;
+ _requestSendRadReportEmail.invoiceNo = finalRadiology.invoiceNo;
+ _requestSendRadReportEmail.setupID = finalRadiology.setupID;
+ _requestSendRadReportEmail.doctorName = finalRadiology.doctorName;
+ _requestSendRadReportEmail.orderDate = '${finalRadiology.orderDate.year}-${finalRadiology.orderDate.month}-${finalRadiology.orderDate.day}';
+ _requestSendRadReportEmail.patientIditificationNum = '2344670985';//TODO change it
+ _requestSendRadReportEmail.patientMobileNumber = '537503378';//TODO change it
+ _requestSendRadReportEmail.patientName = 'TAMER FANASHE';//TODO change it
+ _requestSendRadReportEmail.patientIditificationNum = '2344670985';//TODO change it
+ _requestSendRadReportEmail.projectName = finalRadiology.projectName;
+ _requestSendRadReportEmail.radResult = 'asd';//finalRadiology.reportData;
+ _requestSendRadReportEmail.to = 'Tamer.fanasheh@gmail.com';
+ _requestSendRadReportEmail.dateofBirth = '/Date(536743800000+0300)/';
+
+ hasError = false;
+ await baseAppClient.post(SEND_RAD_REPORT_EMAIL,
+ isAllowAny: true,
+ onSuccess: (dynamic response, int statusCode) {
+
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: _requestSendRadReportEmail.toJson());
+ }
+}
diff --git a/lib/core/viewModels/feedback/feedback_view_model.dart b/lib/core/viewModels/feedback/feedback_view_model.dart
new file mode 100644
index 00000000..1176caf7
--- /dev/null
+++ b/lib/core/viewModels/feedback/feedback_view_model.dart
@@ -0,0 +1,44 @@
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+import 'package:diplomaticquarterapp/core/model/feedback/COC_items.dart';
+import 'package:diplomaticquarterapp/core/service/feedback/feedback_service.dart';
+import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
+
+import '../../../locator.dart';
+
+class FeedbackViewModel extends BaseViewModel {
+ FeedbackService _feedbackService = locator();
+
+ List get cOCItemList => _feedbackService.cOCItemList;
+
+ Future sendCOCItem(
+ {String title,
+ String details,
+ String cOCTypeName,
+ String attachment}) async {
+ setState(ViewState.BusyLocal);
+ await _feedbackService.sendCOCItem(
+ title: title,
+ details: details,
+ cOCTypeName: cOCTypeName,
+ attachment: attachment);
+ if (_feedbackService.hasError) {
+ error = _feedbackService.error;
+ setState(ViewState.ErrorLocal);
+ return false;
+ } else {
+ setState(ViewState.Idle);
+ return true;
+ }
+ }
+
+ getCOC() async {
+ setState(ViewState.Busy);
+ await _feedbackService.getStatusCOC();
+ if (_feedbackService.hasError) {
+ error = _feedbackService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
+}
diff --git a/lib/core/viewModels/medical/labs_view_model.dart b/lib/core/viewModels/medical/labs_view_model.dart
new file mode 100644
index 00000000..1efdfb7c
--- /dev/null
+++ b/lib/core/viewModels/medical/labs_view_model.dart
@@ -0,0 +1,106 @@
+
+import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_special_result.dart';
+import 'package:diplomaticquarterapp/core/service/medical/labs_service.dart';
+
+import '../../../locator.dart';
+import '../base_view_model.dart';
+
+class LabsViewModel extends BaseViewModel {
+ FilterType filterType = FilterType.Clinic;
+ LabsService _labsService = locator();
+
+ List _patientLabOrdersListClinic = List();
+ List _patientLabOrdersListHospital = List();
+
+ List get patientLabOrdersList =>
+ filterType == FilterType.Clinic
+ ? _patientLabOrdersListClinic
+ : _patientLabOrdersListHospital;
+
+ void getLabs() async {
+ setState(ViewState.Busy);
+ await _labsService.getPatientLabOrdersList();
+ if (_labsService.hasError) {
+ error = _labsService.error;
+ setState(ViewState.Error);
+ } else {
+ _labsService.patientLabOrdersList.forEach((element) {
+ List patientLabOrdersClinic =
+ _patientLabOrdersListClinic
+ .where((elementClinic) =>
+ elementClinic.filterName == element.clinicDescription)
+ .toList();
+
+ if (patientLabOrdersClinic.length != 0) {
+ _patientLabOrdersListClinic[_patientLabOrdersListClinic
+ .indexOf(patientLabOrdersClinic[0])]
+ .patientLabOrdersList
+ .add(element);
+ } else {
+ _patientLabOrdersListClinic.add(PatientLabOrdersList(
+ filterName: element.clinicDescription,
+ patientDoctorAppointment: element));
+ }
+
+ // doctor list sort via project
+ List patientLabOrdersHospital =
+ _patientLabOrdersListHospital
+ .where(
+ (elementClinic) =>
+ elementClinic.filterName == element.projectName,
+ )
+ .toList();
+
+ if (patientLabOrdersHospital.length != 0) {
+ _patientLabOrdersListHospital[_patientLabOrdersListHospital
+ .indexOf(patientLabOrdersHospital[0])]
+ .patientLabOrdersList
+ .add(element);
+ } else {
+ _patientLabOrdersListHospital.add(PatientLabOrdersList(
+ filterName: element.projectName,
+ patientDoctorAppointment: element));
+ }
+ });
+
+ setState(ViewState.Idle);
+ }
+ }
+
+ setFilterType(FilterType filterType) {
+ this.filterType = filterType;
+ notifyListeners();
+ }
+
+ List get patientLabSpecialResult =>
+ _labsService.patientLabSpecialResult;
+
+ getLaboratoryResult(
+ {String projectID,
+ int clinicID,
+ String invoiceNo,
+ String orderNo}) async {
+ setState(ViewState.Busy);
+ await _labsService.getLaboratoryResult(invoiceNo: invoiceNo,orderNo: orderNo,projectID: projectID,clinicID: clinicID);
+ if (_labsService.hasError) {
+ error = _labsService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
+
+ sendLabReportEmail({PatientLabOrders patientLabOrder}) async {
+ setState(ViewState.Busy);
+ await _labsService.sendLabReportEmail(patientLabOrder: patientLabOrder);
+ if (_labsService.hasError) {
+ error = _labsService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
+}
diff --git a/lib/core/viewModels/medical/prescriptions_view_model.dart b/lib/core/viewModels/medical/prescriptions_view_model.dart
index 6ad25380..f67df015 100644
--- a/lib/core/viewModels/medical/prescriptions_view_model.dart
+++ b/lib/core/viewModels/medical/prescriptions_view_model.dart
@@ -1,11 +1,13 @@
+import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import '../../../core/enum/filter_type.dart';
import '../../../core/enum/viewstate.dart';
import '../../../core/model/prescriptions/Prescriptions.dart';
import '../../../core/service/medical/prescriptions_service.dart';
-
import '../../../locator.dart';
import '../base_view_model.dart';
@@ -16,12 +18,18 @@ class PrescriptionsViewModel extends BaseViewModel {
List _prescriptionsOrderListClinic = List();
List _prescriptionsOrderListHospital = List();
+
List get prescriptionReportList =>
_prescriptionsService.prescriptionReportList;
List get prescriptionsList =>
_prescriptionsService.prescriptionsList;
+ List get prescriptionsHistory => _prescriptionsService.prescriptionsOrderList;
+
+ List get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList ;
+
+
List get prescriptionsOrderList =>
filterType == FilterType.Clinic
? _prescriptionsOrderListClinic
@@ -105,7 +113,7 @@ class PrescriptionsViewModel extends BaseViewModel {
}
}
- sendPrescriptionEmail(
+ sendPrescriptionEmail(
{String appointmentDate,
int patientID,
String clinicName,
@@ -124,5 +132,29 @@ class PrescriptionsViewModel extends BaseViewModel {
}
}
+ getListPharmacyForPrescriptions({int itemId}) async {
+ setState(ViewState.Busy);
+ await _prescriptionsService.getListPharmacyForPrescriptions(itemId: itemId);
+ if (_prescriptionsService.hasError) {
+ error = _prescriptionsService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
+
+
+ List get prescriptionReportEnhList => _prescriptionsService.prescriptionReportEnhList;
+
+ getPrescriptionReportEnh({PrescriptionsOrder prescriptionsOrder}) async {
+ setState(ViewState.Busy);
+ await _prescriptionsService.getPrescriptionReportEnh(prescriptionsOrder: prescriptionsOrder);
+ if (_prescriptionsService.hasError) {
+ error = _prescriptionsService.error;
+ setState(ViewState.Error);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
}
diff --git a/lib/core/viewModels/medical/radiology_view_model.dart b/lib/core/viewModels/medical/radiology_view_model.dart
new file mode 100644
index 00000000..26d40361
--- /dev/null
+++ b/lib/core/viewModels/medical/radiology_view_model.dart
@@ -0,0 +1,101 @@
+import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
+import 'package:diplomaticquarterapp/core/service/medical/radiology_service.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+
+import '../../../locator.dart';
+import '../base_view_model.dart';
+
+class RadiologyViewModel extends BaseViewModel {
+ FilterType filterType = FilterType.Clinic;
+ RadiologyService _radiologyService = locator();
+
+ List _finalRadiologyListClinic = List();
+ List _finalRadiologyListHospital = List();
+
+ List get finalRadiologyList =>
+ filterType == FilterType.Clinic
+ ? _finalRadiologyListClinic
+ : _finalRadiologyListHospital;
+
+ void getPatientRadOrders() async {
+ setState(ViewState.Busy);
+ await _radiologyService.getPatientRadOrders();
+ if (_radiologyService.hasError) {
+ error = _radiologyService.error;
+ setState(ViewState.Error);
+ } else {
+ _radiologyService.finalRadiologyList.forEach((element) {
+ List finalRadiologyListClinic =
+ _finalRadiologyListClinic
+ .where((elementClinic) =>
+ elementClinic.filterName == element.clinicDescription)
+ .toList();
+
+ if (finalRadiologyListClinic.length != 0) {
+ _finalRadiologyListClinic[
+ finalRadiologyListClinic.indexOf(finalRadiologyListClinic[0])]
+ .finalRadiologyList
+ .add(element);
+ } else {
+ _finalRadiologyListClinic.add(FinalRadiologyList(
+ filterName: element.clinicDescription, finalRadiology: element));
+ }
+
+ // FinalRadiologyList list sort via project
+ List finalRadiologyListHospital =
+ _finalRadiologyListHospital
+ .where(
+ (elementClinic) =>
+ elementClinic.filterName == element.projectName,
+ )
+ .toList();
+
+ if (finalRadiologyListHospital.length != 0) {
+ _finalRadiologyListHospital[finalRadiologyListHospital
+ .indexOf(finalRadiologyListHospital[0])]
+ .finalRadiologyList
+ .add(element);
+ } else {
+ _finalRadiologyListHospital.add(FinalRadiologyList(
+ filterName: element.projectName, finalRadiology: element));
+ }
+ });
+
+ setState(ViewState.Idle);
+ }
+ }
+
+ String get radImageURL => _radiologyService.url;
+
+ getRadImageURL({int invoiceNo, int lineItem,int projectId}) async {
+ setState(ViewState.Busy);
+ await _radiologyService.getRadImageURL(invoiceNo: invoiceNo,lineItem: lineItem,projectId: projectId);
+ if (_radiologyService.hasError) {
+ error = _radiologyService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ sendRadReportEmail(
+ {FinalRadiology finalRadiology}) async {
+ setState(ViewState.BusyLocal);
+ await _radiologyService.sendRadReportEmail(
+ finalRadiology: finalRadiology
+ );
+ if (_radiologyService.hasError) {
+ error = _radiologyService.error;
+ AppToast.showErrorToast(message: error);
+ } else {
+ AppToast.showSuccessToast(message: 'A copy has been sent to the email');
+ }
+ setState(ViewState.Idle);
+ }
+
+ setFilterType(FilterType filterType) {
+ this.filterType = filterType;
+ notifyListeners();
+ }
+}
diff --git a/lib/locator.dart b/lib/locator.dart
index f63b14b2..5806ca70 100644
--- a/lib/locator.dart
+++ b/lib/locator.dart
@@ -1,11 +1,18 @@
+import 'package:diplomaticquarterapp/routes.dart';
import 'package:get_it/get_it.dart';
+import 'core/service/feedback/feedback_service.dart';
import 'core/service/hospital_service.dart';
+import 'core/service/medical/labs_service.dart';
import 'core/service/medical/my_doctor_service.dart';
import 'core/service/medical/prescriptions_service.dart';
+import 'core/service/medical/radiology_service.dart';
+import 'core/viewModels/feedback/feedback_view_model.dart';
import 'core/viewModels/hospital_view_model.dart';
+import 'core/viewModels/medical/labs_view_model.dart';
import 'core/viewModels/medical/my_doctor_view_model.dart';
import 'core/viewModels/medical/prescriptions_view_model.dart';
+import 'core/viewModels/medical/radiology_view_model.dart';
import 'core/viewModels/pharmacies_view_model.dart';
import 'core/service/pharmacies_service.dart';
import 'core/service/insurance_service.dart';
@@ -20,6 +27,9 @@ void setupLocator() {
locator.registerLazySingleton(() => PharmacyService());
locator.registerLazySingleton(() => MyDoctorService());
locator.registerLazySingleton(() => PrescriptionsService());
+ locator.registerLazySingleton(() => LabsService());
+ locator.registerLazySingleton(() => RadiologyService());
+ locator.registerLazySingleton(() => FeedbackService());
locator.registerLazySingleton(() => InsuranceCardService());
/// View Model
@@ -27,5 +37,9 @@ void setupLocator() {
locator.registerFactory(() => PharmacyViewModel());
locator.registerFactory(() => MyDoctorViewModel());
locator.registerFactory(() => PrescriptionsViewModel());
+ locator.registerFactory(() => LabsViewModel());
+ locator.registerFactory(() => RadiologyViewModel());
+ locator.registerFactory(() => FeedbackViewModel());
+
locator.registerFactory(() => InsuranceViewModel());
}
diff --git a/lib/models/Authentication/authenticated_user.dart b/lib/models/Authentication/authenticated_user.dart
index 40145b87..7ca3a3e2 100644
--- a/lib/models/Authentication/authenticated_user.dart
+++ b/lib/models/Authentication/authenticated_user.dart
@@ -11,55 +11,55 @@ class AuthenticatedUser {
int relationshipID;
int gender;
String dateofBirth;
- Null dateofBirthN;
+ dynamic dateofBirthN;
String nationalityID;
- Null phoneResi;
- Null phoneOffice;
+ dynamic phoneResi;
+ dynamic phoneOffice;
String mobileNumber;
- Null faxNumber;
+ dynamic faxNumber;
String emailAddress;
- Null bloodGroup;
- Null rHFactor;
+ dynamic bloodGroup;
+ dynamic rHFactor;
bool isEmailAlertRequired;
bool isSMSAlertRequired;
String preferredLanguage;
bool isPrivilegedMember;
- Null memberID;
- Null expiryDate;
- Null isHmgEmployee;
- Null employeeID;
- Null emergencyContactName;
- Null emergencyContactNo;
+ dynamic memberID;
+ dynamic expiryDate;
+ dynamic isHmgEmployee;
+ dynamic employeeID;
+ dynamic emergencyContactName;
+ dynamic emergencyContactNo;
int patientPayType;
- Null dHCCPatientRefID;
+ dynamic dHCCPatientRefID;
bool isPatientDummy;
int status;
- Null isStatusCleared;
+ dynamic isStatusCleared;
int patientIdentificationType;
String patientIdentificationNo;
int projectID;
int infoSourceID;
- Null address;
+ dynamic address;
int age;
String ageDesc;
int areaID;
int createdBy;
String genderDescription;
- Null iR;
- Null iSOCityID;
- Null iSOCountryID;
+ dynamic iR;
+ dynamic iSOCityID;
+ dynamic iSOCountryID;
List listPrivilege;
- Null marital;
+ dynamic marital;
int outSA;
- Null pOBox;
+ dynamic pOBox;
bool receiveHealthSummaryReport;
int sourceType;
- Null strDateofBirth;
- Null tempAddress;
- Null zipCode;
- // Null patientPayType;
- // Null patientType;
- // Null status;
+ dynamic strDateofBirth;
+ dynamic tempAddress;
+ dynamic zipCode;
+ // dynamic patientPayType;
+ // dynamic patientType;
+ // dynamic status;
AuthenticatedUser({
this.setupID,
@@ -260,7 +260,7 @@ class ListPrivilege {
int iD;
String serviceName;
bool previlege;
- Null region;
+ dynamic region;
ListPrivilege({this.iD, this.serviceName, this.previlege, this.region});
diff --git a/lib/models/Authentication/check_activation_code_request.dart b/lib/models/Authentication/check_activation_code_request.dart
index 71440dc4..a4bf79c3 100644
--- a/lib/models/Authentication/check_activation_code_request.dart
+++ b/lib/models/Authentication/check_activation_code_request.dart
@@ -22,7 +22,7 @@ class CheckActivationCodeReq {
Null sessionID;
bool isDentalAllowedBackend;
int deviceTypeID;
-
+ bool forRegisteration;
CheckActivationCodeReq(
{this.patientMobileNumber,
this.mobileNo,
@@ -46,7 +46,8 @@ class CheckActivationCodeReq {
this.patientOutSA,
this.sessionID,
this.isDentalAllowedBackend,
- this.deviceTypeID});
+ this.deviceTypeID,
+ this.forRegisteration});
CheckActivationCodeReq.fromJson(Map json) {
patientMobileNumber = json['PatientMobileNumber'];
@@ -72,6 +73,7 @@ class CheckActivationCodeReq {
sessionID = json['SessionID'];
isDentalAllowedBackend = json['isDentalAllowedBackend'];
deviceTypeID = json['DeviceTypeID'];
+ forRegisteration = json['ForRegisteration'];
}
Map toJson() {
@@ -99,6 +101,7 @@ class CheckActivationCodeReq {
data['SessionID'] = this.sessionID;
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
data['DeviceTypeID'] = this.deviceTypeID;
+ data['ForRegisteration'] = this.forRegisteration;
return data;
}
}
diff --git a/lib/models/Authentication/check_activation_code_response.dart b/lib/models/Authentication/check_activation_code_response.dart
index afa0057a..3a0aed65 100644
--- a/lib/models/Authentication/check_activation_code_response.dart
+++ b/lib/models/Authentication/check_activation_code_response.dart
@@ -1,68 +1,68 @@
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
class CheckActivationCode {
- Null date;
+ dynamic date;
int languageID;
int serviceName;
- Null time;
- Null androidLink;
+ dynamic time;
+ dynamic androidLink;
String authenticationTokenID;
- Null data;
+ dynamic data;
bool dataw;
int dietType;
- Null errorCode;
- Null errorEndUserMessage;
- Null errorEndUserMessageN;
- Null errorMessage;
+ dynamic errorCode;
+ dynamic errorEndUserMessage;
+ dynamic errorEndUserMessageN;
+ dynamic errorMessage;
int errorType;
int foodCategory;
- Null iOSLink;
+ dynamic iOSLink;
bool isAuthenticated;
int mealOrderStatus;
int mealType;
int messageStatus;
int numberOfResultRecords;
- Null patientBlodType;
- Null successMsg;
- Null successMsgN;
- Null doctorInformationList;
- Null getAllPendingRecordsList;
- Null getAllSharedRecordsByStatusList;
- Null getResponseFileList;
+ dynamic patientBlodType;
+ dynamic successMsg;
+ dynamic successMsgN;
+ dynamic doctorInformationList;
+ dynamic getAllPendingRecordsList;
+ dynamic getAllSharedRecordsByStatusList;
+ dynamic getResponseFileList;
bool isHMGPatient;
bool isLoginSuccessfully;
bool isNeedUpdateIdintificationNo;
bool kioskSendSMS;
AuthenticatedUser list;
- Null listAskHabibMobileLoginInfo;
- Null listAskHabibPatientFile;
- Null listMergeFiles;
- Null listMobileLoginInfo;
- Null listPatientCount;
- Null logInTokenID;
- Null mohemmPrivilegeList;
+ dynamic listAskHabibMobileLoginInfo;
+ dynamic listAskHabibPatientFile;
+ dynamic listMergeFiles;
+ dynamic listMobileLoginInfo;
+ dynamic listPatientCount;
+ dynamic logInTokenID;
+ dynamic mohemmPrivilegeList;
int pateintID;
- Null patientBloodType;
+ String patientBloodType;
bool patientHasFile;
- Null patientMergedIDs;
+ dynamic patientMergedIDs;
bool patientOutSA;
int patientShareRequestID;
int patientType;
int projectIDOut;
- Null returnMessage;
+ dynamic returnMessage;
bool sMSLoginRequired;
- Null servicePrivilegeList;
- Null sharePatientName;
- Null verificationCode;
- Null email;
- Null errorList;
+ dynamic servicePrivilegeList;
+ dynamic sharePatientName;
+ dynamic verificationCode;
+ dynamic email;
+ dynamic errorList;
bool hasFile;
bool isActiveCode;
bool isMerged;
bool isNeedUserAgreement;
bool isSMSSent;
- Null memberList;
- Null message;
+ dynamic memberList;
+ dynamic message;
int statusCode;
CheckActivationCode(
@@ -283,52 +283,52 @@ class List {
int relationshipID;
int gender;
String dateofBirth;
- Null dateofBirthN;
+ dynamic dateofBirthN;
String nationalityID;
- Null phoneResi;
- Null phoneOffice;
+ dynamic phoneResi;
+ dynamic phoneOffice;
String mobileNumber;
- Null faxNumber;
+ dynamic faxNumber;
String emailAddress;
- Null bloodGroup;
- Null rHFactor;
+ dynamic bloodGroup;
+ dynamic rHFactor;
bool isEmailAlertRequired;
bool isSMSAlertRequired;
String preferredLanguage;
bool isPrivilegedMember;
- Null memberID;
- Null expiryDate;
- Null isHmgEmployee;
- Null employeeID;
- Null emergencyContactName;
- Null emergencyContactNo;
+ dynamic memberID;
+ dynamic expiryDate;
+ dynamic isHmgEmployee;
+ dynamic employeeID;
+ dynamic emergencyContactName;
+ dynamic emergencyContactNo;
int patientPayType;
- Null dHCCPatientRefID;
+ dynamic dHCCPatientRefID;
bool isPatientDummy;
int status;
- Null isStatusCleared;
+ dynamic isStatusCleared;
int patientIdentificationType;
String patientIdentificationNo;
int projectID;
int infoSourceID;
- Null address;
+ dynamic address;
int age;
String ageDesc;
int areaID;
int createdBy;
String genderDescription;
- Null iR;
- Null iSOCityID;
- Null iSOCountryID;
+ dynamic iR;
+ dynamic iSOCityID;
+ dynamic iSOCountryID;
ListPrivilege listPrivilege;
- Null marital;
+ dynamic marital;
int outSA;
- Null pOBox;
+ dynamic pOBox;
bool receiveHealthSummaryReport;
int sourceType;
- Null strDateofBirth;
- Null tempAddress;
- Null zipCode;
+ dynamic strDateofBirth;
+ dynamic tempAddress;
+ dynamic zipCode;
List({
this.setupID,
@@ -525,7 +525,7 @@ class ListPrivilege {
int iD;
String serviceName;
bool previlege;
- Null region;
+ dynamic region;
ListPrivilege({this.iD, this.serviceName, this.previlege, this.region});
diff --git a/lib/models/Authentication/check_user_status_reponse.dart b/lib/models/Authentication/check_user_status_reponse.dart
new file mode 100644
index 00000000..342eaad0
--- /dev/null
+++ b/lib/models/Authentication/check_user_status_reponse.dart
@@ -0,0 +1,316 @@
+class CheckUserStatusResponse {
+ Null date;
+ int languageID;
+ int serviceName;
+ Null time;
+ Null androidLink;
+ Null authenticationTokenID;
+ Null data;
+ bool dataw;
+ int dietType;
+ Null errorCode;
+ Null errorEndUserMessage;
+ Null errorEndUserMessageN;
+ Null errorMessage;
+ int errorType;
+ int foodCategory;
+ Null iOSLink;
+ bool isAuthenticated;
+ int mealOrderStatus;
+ int mealType;
+ int messageStatus;
+ int numberOfResultRecords;
+ Null patientBlodType;
+ Null successMsg;
+ Null successMsgN;
+ Null accessTokenObject;
+ int age;
+ Null clientIdentifierId;
+ int createdBy;
+ String dateOfBirth;
+ String firstNameAr;
+ String firstNameEn;
+ String gender;
+ Null genderAr;
+ Null genderEn;
+ String healthId;
+ String idNumber;
+ String idType;
+ bool isHijri;
+ int isInstertedOrUpdated;
+ int isNull;
+ int isPatientExistNHIC;
+ String lastNameAr;
+ String lastNameEn;
+ Null listActiveAccessToken;
+ String maritalStatus;
+ String maritalStatusCode;
+ String nationality;
+ String nationalityCode;
+ String occupation;
+ String patientStatus;
+ String placeofBirth;
+ Null practitionerStatusCode;
+ Null practitionerStatusDescAr;
+ Null practitionerStatusDescEn;
+ String secondNameAr;
+ String secondNameEn;
+ String thirdNameAr;
+ String thirdNameEn;
+ Null accessToken;
+ int categoryCode;
+ Null categoryNameAr;
+ Null categoryNameEn;
+ int constraintCode;
+ Null constraintNameAr;
+ Null constraintNameEn;
+ Null content;
+ Null licenseExpiryDate;
+ Null licenseIssuedDate;
+ Null licenseStatusCode;
+ Null licenseStatusDescAr;
+ Null licenseStatusDescEn;
+ Null organizations;
+ Null registrationNumber;
+ int specialtyCode;
+ Null specialtyNameAr;
+ Null specialtyNameEn;
+
+ CheckUserStatusResponse(
+ {this.date,
+ this.languageID,
+ this.serviceName,
+ this.time,
+ this.androidLink,
+ this.authenticationTokenID,
+ this.data,
+ this.dataw,
+ this.dietType,
+ this.errorCode,
+ this.errorEndUserMessage,
+ this.errorEndUserMessageN,
+ this.errorMessage,
+ this.errorType,
+ this.foodCategory,
+ this.iOSLink,
+ this.isAuthenticated,
+ this.mealOrderStatus,
+ this.mealType,
+ this.messageStatus,
+ this.numberOfResultRecords,
+ this.patientBlodType,
+ this.successMsg,
+ this.successMsgN,
+ this.accessTokenObject,
+ this.age,
+ this.clientIdentifierId,
+ this.createdBy,
+ this.dateOfBirth,
+ this.firstNameAr,
+ this.firstNameEn,
+ this.gender,
+ this.genderAr,
+ this.genderEn,
+ this.healthId,
+ this.idNumber,
+ this.idType,
+ this.isHijri,
+ this.isInstertedOrUpdated,
+ this.isNull,
+ this.isPatientExistNHIC,
+ this.lastNameAr,
+ this.lastNameEn,
+ this.listActiveAccessToken,
+ this.maritalStatus,
+ this.maritalStatusCode,
+ this.nationality,
+ this.nationalityCode,
+ this.occupation,
+ this.patientStatus,
+ this.placeofBirth,
+ this.practitionerStatusCode,
+ this.practitionerStatusDescAr,
+ this.practitionerStatusDescEn,
+ this.secondNameAr,
+ this.secondNameEn,
+ this.thirdNameAr,
+ this.thirdNameEn,
+ this.accessToken,
+ this.categoryCode,
+ this.categoryNameAr,
+ this.categoryNameEn,
+ this.constraintCode,
+ this.constraintNameAr,
+ this.constraintNameEn,
+ this.content,
+ this.licenseExpiryDate,
+ this.licenseIssuedDate,
+ this.licenseStatusCode,
+ this.licenseStatusDescAr,
+ this.licenseStatusDescEn,
+ this.organizations,
+ this.registrationNumber,
+ this.specialtyCode,
+ this.specialtyNameAr,
+ this.specialtyNameEn});
+
+ CheckUserStatusResponse.fromJson(Map json) {
+ date = json['Date'];
+ languageID = json['LanguageID'];
+ serviceName = json['ServiceName'];
+ time = json['Time'];
+ androidLink = json['AndroidLink'];
+ authenticationTokenID = json['AuthenticationTokenID'];
+ data = json['Data'];
+ dataw = json['Dataw'];
+ dietType = json['DietType'];
+ errorCode = json['ErrorCode'];
+ errorEndUserMessage = json['ErrorEndUserMessage'];
+ errorEndUserMessageN = json['ErrorEndUserMessageN'];
+ errorMessage = json['ErrorMessage'];
+ errorType = json['ErrorType'];
+ foodCategory = json['FoodCategory'];
+ iOSLink = json['IOSLink'];
+ isAuthenticated = json['IsAuthenticated'];
+ mealOrderStatus = json['MealOrderStatus'];
+ mealType = json['MealType'];
+ messageStatus = json['MessageStatus'];
+ numberOfResultRecords = json['NumberOfResultRecords'];
+ patientBlodType = json['PatientBlodType'];
+ successMsg = json['SuccessMsg'];
+ successMsgN = json['SuccessMsgN'];
+ accessTokenObject = json['AccessTokenObject'];
+ age = json['Age'];
+ clientIdentifierId = json['ClientIdentifierId'];
+ createdBy = json['CreatedBy'];
+ dateOfBirth = json['DateOfBirth'];
+ firstNameAr = json['FirstNameAr'];
+ firstNameEn = json['FirstNameEn'];
+ gender = json['Gender'];
+ genderAr = json['GenderAr'];
+ genderEn = json['GenderEn'];
+ healthId = json['HealthId'];
+ idNumber = json['IdNumber'];
+ idType = json['IdType'];
+ isHijri = json['IsHijri'];
+ isInstertedOrUpdated = json['IsInstertedOrUpdated'];
+ isNull = json['IsNull'];
+ isPatientExistNHIC = json['IsPatientExistNHIC'];
+ lastNameAr = json['LastNameAr'];
+ lastNameEn = json['LastNameEn'];
+ listActiveAccessToken = json['List_ActiveAccessToken'];
+ maritalStatus = json['MaritalStatus'];
+ maritalStatusCode = json['MaritalStatusCode'];
+ nationality = json['Nationality'];
+ nationalityCode = json['NationalityCode'];
+ occupation = json['Occupation'];
+ patientStatus = json['PatientStatus'];
+ placeofBirth = json['PlaceofBirth'];
+ practitionerStatusCode = json['PractitionerStatusCode'];
+ practitionerStatusDescAr = json['PractitionerStatusDescAr'];
+ practitionerStatusDescEn = json['PractitionerStatusDescEn'];
+ secondNameAr = json['SecondNameAr'];
+ secondNameEn = json['SecondNameEn'];
+ thirdNameAr = json['ThirdNameAr'];
+ thirdNameEn = json['ThirdNameEn'];
+ accessToken = json['accessToken'];
+ categoryCode = json['categoryCode'];
+ categoryNameAr = json['categoryNameAr'];
+ categoryNameEn = json['categoryNameEn'];
+ constraintCode = json['constraintCode'];
+ constraintNameAr = json['constraintNameAr'];
+ constraintNameEn = json['constraintNameEn'];
+ content = json['content'];
+ licenseExpiryDate = json['licenseExpiryDate'];
+ licenseIssuedDate = json['licenseIssuedDate'];
+ licenseStatusCode = json['licenseStatusCode'];
+ licenseStatusDescAr = json['licenseStatusDescAr'];
+ licenseStatusDescEn = json['licenseStatusDescEn'];
+ organizations = json['organizations'];
+ registrationNumber = json['registrationNumber'];
+ specialtyCode = json['specialtyCode'];
+ specialtyNameAr = json['specialtyNameAr'];
+ specialtyNameEn = json['specialtyNameEn'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Date'] = this.date;
+ data['LanguageID'] = this.languageID;
+ data['ServiceName'] = this.serviceName;
+ data['Time'] = this.time;
+ data['AndroidLink'] = this.androidLink;
+ data['AuthenticationTokenID'] = this.authenticationTokenID;
+ data['Data'] = this.data;
+ data['Dataw'] = this.dataw;
+ data['DietType'] = this.dietType;
+ data['ErrorCode'] = this.errorCode;
+ data['ErrorEndUserMessage'] = this.errorEndUserMessage;
+ data['ErrorEndUserMessageN'] = this.errorEndUserMessageN;
+ data['ErrorMessage'] = this.errorMessage;
+ data['ErrorType'] = this.errorType;
+ data['FoodCategory'] = this.foodCategory;
+ data['IOSLink'] = this.iOSLink;
+ data['IsAuthenticated'] = this.isAuthenticated;
+ data['MealOrderStatus'] = this.mealOrderStatus;
+ data['MealType'] = this.mealType;
+ data['MessageStatus'] = this.messageStatus;
+ data['NumberOfResultRecords'] = this.numberOfResultRecords;
+ data['PatientBlodType'] = this.patientBlodType;
+ data['SuccessMsg'] = this.successMsg;
+ data['SuccessMsgN'] = this.successMsgN;
+ data['AccessTokenObject'] = this.accessTokenObject;
+ data['Age'] = this.age;
+ data['ClientIdentifierId'] = this.clientIdentifierId;
+ data['CreatedBy'] = this.createdBy;
+ data['DateOfBirth'] = this.dateOfBirth;
+ data['FirstNameAr'] = this.firstNameAr;
+ data['FirstNameEn'] = this.firstNameEn;
+ data['Gender'] = this.gender;
+ data['GenderAr'] = this.genderAr;
+ data['GenderEn'] = this.genderEn;
+ data['HealthId'] = this.healthId;
+ data['IdNumber'] = this.idNumber;
+ data['IdType'] = this.idType;
+ data['IsHijri'] = this.isHijri;
+ data['IsInstertedOrUpdated'] = this.isInstertedOrUpdated;
+ data['IsNull'] = this.isNull;
+ data['IsPatientExistNHIC'] = this.isPatientExistNHIC;
+ data['LastNameAr'] = this.lastNameAr;
+ data['LastNameEn'] = this.lastNameEn;
+ data['List_ActiveAccessToken'] = this.listActiveAccessToken;
+ data['MaritalStatus'] = this.maritalStatus;
+ data['MaritalStatusCode'] = this.maritalStatusCode;
+ data['Nationality'] = this.nationality;
+ data['NationalityCode'] = this.nationalityCode;
+ data['Occupation'] = this.occupation;
+ data['PatientStatus'] = this.patientStatus;
+ data['PlaceofBirth'] = this.placeofBirth;
+ data['PractitionerStatusCode'] = this.practitionerStatusCode;
+ data['PractitionerStatusDescAr'] = this.practitionerStatusDescAr;
+ data['PractitionerStatusDescEn'] = this.practitionerStatusDescEn;
+ data['SecondNameAr'] = this.secondNameAr;
+ data['SecondNameEn'] = this.secondNameEn;
+ data['ThirdNameAr'] = this.thirdNameAr;
+ data['ThirdNameEn'] = this.thirdNameEn;
+ data['accessToken'] = this.accessToken;
+ data['categoryCode'] = this.categoryCode;
+ data['categoryNameAr'] = this.categoryNameAr;
+ data['categoryNameEn'] = this.categoryNameEn;
+ data['constraintCode'] = this.constraintCode;
+ data['constraintNameAr'] = this.constraintNameAr;
+ data['constraintNameEn'] = this.constraintNameEn;
+ data['content'] = this.content;
+ data['licenseExpiryDate'] = this.licenseExpiryDate;
+ data['licenseIssuedDate'] = this.licenseIssuedDate;
+ data['licenseStatusCode'] = this.licenseStatusCode;
+ data['licenseStatusDescAr'] = this.licenseStatusDescAr;
+ data['licenseStatusDescEn'] = this.licenseStatusDescEn;
+ data['organizations'] = this.organizations;
+ data['registrationNumber'] = this.registrationNumber;
+ data['specialtyCode'] = this.specialtyCode;
+ data['specialtyNameAr'] = this.specialtyNameAr;
+ data['specialtyNameEn'] = this.specialtyNameEn;
+ return data;
+ }
+}
diff --git a/lib/models/Authentication/check_user_status_req.dart b/lib/models/Authentication/check_user_status_req.dart
new file mode 100644
index 00000000..40dd8b49
--- /dev/null
+++ b/lib/models/Authentication/check_user_status_req.dart
@@ -0,0 +1,60 @@
+class CheckUserStatusRequest {
+ String patientIdentificationID;
+ String dOB;
+ int isHijri;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ Null sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+
+ CheckUserStatusRequest(
+ {this.patientIdentificationID,
+ this.dOB,
+ this.isHijri,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID});
+
+ CheckUserStatusRequest.fromJson(Map json) {
+ patientIdentificationID = json['PatientIdentificationID'];
+ dOB = json['DOB'];
+ isHijri = json['IsHijri'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['PatientIdentificationID'] = this.patientIdentificationID;
+ data['DOB'] = this.dOB;
+ data['IsHijri'] = this.isHijri;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ return data;
+ }
+}
diff --git a/lib/models/Authentication/checkpatient_for_registration.dart b/lib/models/Authentication/checkpatient_for_registration.dart
new file mode 100644
index 00000000..420b4adb
--- /dev/null
+++ b/lib/models/Authentication/checkpatient_for_registration.dart
@@ -0,0 +1,72 @@
+class CheckPatientForRegistration {
+ int patientIdentificationID;
+ int patientMobileNumber;
+ String zipCode;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ Null sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ String tokenID;
+ int patientID;
+ bool isRegister;
+
+ CheckPatientForRegistration(
+ {this.patientIdentificationID,
+ this.patientMobileNumber,
+ this.zipCode,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID,
+ this.tokenID,
+ this.patientID,
+ this.isRegister});
+
+ CheckPatientForRegistration.fromJson(Map json) {
+ patientIdentificationID = json['PatientIdentificationID'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ zipCode = json['ZipCode'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ tokenID = json['TokenID'];
+ patientID = json['PatientID'];
+ isRegister = json['isRegister'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['PatientIdentificationID'] = this.patientIdentificationID;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['ZipCode'] = this.zipCode;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['TokenID'] = this.tokenID;
+ data['PatientID'] = this.patientID;
+ data['isRegister'] = this.isRegister;
+ return data;
+ }
+}
diff --git a/lib/models/Authentication/insert_device_imei_request.dart b/lib/models/Authentication/insert_device_imei_request.dart
index 474e6194..02e3b278 100644
--- a/lib/models/Authentication/insert_device_imei_request.dart
+++ b/lib/models/Authentication/insert_device_imei_request.dart
@@ -3,69 +3,14 @@ class INSERTDeviceIMEIRequest {
int patientType;
int patientID;
String firstName;
- String middleName;
- String lastName;
String firstNameN;
- String middleNameN;
String lastNameN;
- int relationshipID;
- int gender;
- String dateofBirth;
- Null dateofBirthN;
- String nationalityID;
- Null phoneResi;
- Null phoneOffice;
- String mobileNumber;
- Null faxNumber;
- String emailAddress;
- Null bloodGroup;
- Null rHFactor;
- bool isEmailAlertRequired;
- bool isSMSAlertRequired;
int preferredLanguage;
- bool isPrivilegedMember;
- Null memberID;
- Null expiryDate;
- Null isHmgEmployee;
- Null employeeID;
- Null emergencyContactName;
- Null emergencyContactNo;
- int patientPayType;
- Null dHCCPatientRefID;
- bool isPatientDummy;
- int status;
- Null isStatusCleared;
- int patientIdentificationType;
String patientIdentificationNo;
- int projectID;
- int infoSourceID;
- Null address;
- int age;
- String ageDesc;
- int areaID;
- int createdBy;
- String genderDescription;
- Null iR;
- Null iSOCityID;
- Null iSOCountryID;
- List listPrivilege;
- Null marital;
bool outSA;
- Null pOBox;
- bool receiveHealthSummaryReport;
- int sourceType;
- Null strDateofBirth;
- Null tempAddress;
- String zipCode;
-
- String patientName;
String identificationNo;
- Null email;
String mobileNo;
- bool patientOutSA;
-
String tokenID;
- Null patientBloodType;
String iMEI;
bool biometricEnabled;
int logInTypeID;
@@ -75,67 +20,14 @@ class INSERTDeviceIMEIRequest {
this.patientType,
this.patientID,
this.firstName,
- this.middleName,
- this.lastName,
this.firstNameN,
- this.middleNameN,
this.lastNameN,
- this.relationshipID,
- this.gender,
- this.dateofBirth,
- this.dateofBirthN,
- this.nationalityID,
- this.phoneResi,
- this.phoneOffice,
- this.mobileNumber,
- this.faxNumber,
- this.emailAddress,
- this.bloodGroup,
- this.rHFactor,
- this.isEmailAlertRequired,
- this.isSMSAlertRequired,
this.preferredLanguage,
- this.isPrivilegedMember,
- this.memberID,
- this.expiryDate,
- this.isHmgEmployee,
- this.employeeID,
- this.emergencyContactName,
- this.emergencyContactNo,
- this.patientPayType,
- this.dHCCPatientRefID,
- this.isPatientDummy,
- this.status,
- this.isStatusCleared,
- this.patientIdentificationType,
this.patientIdentificationNo,
- this.projectID,
- this.infoSourceID,
- this.address,
- this.age,
- this.ageDesc,
- this.areaID,
- this.createdBy,
- this.genderDescription,
- this.iR,
- this.iSOCityID,
- this.iSOCountryID,
- this.listPrivilege,
- this.marital,
this.outSA,
- this.pOBox,
- this.receiveHealthSummaryReport,
- this.sourceType,
- this.strDateofBirth,
- this.tempAddress,
- this.zipCode,
- this.patientName,
this.identificationNo,
- this.email,
this.mobileNo,
- this.patientOutSA,
this.tokenID,
- this.patientBloodType,
this.iMEI,
this.biometricEnabled,
this.logInTypeID});
@@ -145,74 +37,14 @@ class INSERTDeviceIMEIRequest {
patientType = json['PatientType'];
patientID = json['PatientID'];
firstName = json['FirstName'];
- middleName = json['MiddleName'];
- lastName = json['LastName'];
firstNameN = json['FirstNameN'];
- middleNameN = json['MiddleNameN'];
lastNameN = json['LastNameN'];
- relationshipID = json['RelationshipID'];
- gender = json['Gender'];
- dateofBirth = json['DateofBirth'];
- dateofBirthN = json['DateofBirthN'];
- nationalityID = json['NationalityID'];
- phoneResi = json['PhoneResi'];
- phoneOffice = json['PhoneOffice'];
- mobileNumber = json['MobileNumber'];
- faxNumber = json['FaxNumber'];
- emailAddress = json['EmailAddress'];
- bloodGroup = json['BloodGroup'];
- rHFactor = json['RHFactor'];
- isEmailAlertRequired = json['IsEmailAlertRequired'];
- isSMSAlertRequired = json['IsSMSAlertRequired'];
preferredLanguage = json['PreferredLanguage'];
- isPrivilegedMember = json['IsPrivilegedMember'];
- memberID = json['MemberID'];
- expiryDate = json['ExpiryDate'];
- isHmgEmployee = json['IsHmgEmployee'];
- employeeID = json['EmployeeID'];
- emergencyContactName = json['EmergencyContactName'];
- emergencyContactNo = json['EmergencyContactNo'];
- patientPayType = json['PatientPayType'];
- dHCCPatientRefID = json['DHCCPatientRefID'];
- isPatientDummy = json['IsPatientDummy'];
- status = json['Status'];
- isStatusCleared = json['IsStatusCleared'];
- patientIdentificationType = json['PatientIdentificationType'];
patientIdentificationNo = json['PatientIdentificationNo'];
- projectID = json['ProjectID'];
- infoSourceID = json['InfoSourceID'];
- address = json['Address'];
- age = json['Age'];
- ageDesc = json['AgeDesc'];
- areaID = json['AreaID'];
- createdBy = json['CreatedBy'];
- genderDescription = json['GenderDescription'];
- iR = json['IR'];
- iSOCityID = json['ISOCityID'];
- iSOCountryID = json['ISOCountryID'];
- if (json['ListPrivilege'] != null) {
- listPrivilege = new List();
- json['ListPrivilege'].forEach((v) {
- listPrivilege.add(new ListPrivilege.fromJson(v));
- });
- }
- marital = json['Marital'];
outSA = json['OutSA'];
- pOBox = json['POBox'];
- receiveHealthSummaryReport = json['ReceiveHealthSummaryReport'];
- sourceType = json['SourceType'];
- strDateofBirth = json['StrDateofBirth'];
- tempAddress = json['TempAddress'];
- zipCode = json['ZipCode'];
-
- patientName = json['PatientName'];
identificationNo = json['IdentificationNo'];
- email = json['Email'];
mobileNo = json['MobileNo'];
- patientOutSA = json['PatientOutSA'];
-
tokenID = json['TokenID'];
- patientBloodType = json['PatientBloodType'];
iMEI = json['IMEI'];
biometricEnabled = json['BiometricEnabled'];
logInTypeID = json['LogInTypeID'];
@@ -224,100 +56,17 @@ class INSERTDeviceIMEIRequest {
data['PatientType'] = this.patientType;
data['PatientID'] = this.patientID;
data['FirstName'] = this.firstName;
- data['MiddleName'] = this.middleName;
- data['LastName'] = this.lastName;
data['FirstNameN'] = this.firstNameN;
- data['MiddleNameN'] = this.middleNameN;
data['LastNameN'] = this.lastNameN;
- data['RelationshipID'] = this.relationshipID;
- data['Gender'] = this.gender;
- data['DateofBirth'] = this.dateofBirth;
- data['DateofBirthN'] = this.dateofBirthN;
- data['NationalityID'] = this.nationalityID;
- data['PhoneResi'] = this.phoneResi;
- data['PhoneOffice'] = this.phoneOffice;
- data['MobileNumber'] = this.mobileNumber;
- data['FaxNumber'] = this.faxNumber;
- data['EmailAddress'] = this.emailAddress;
- data['BloodGroup'] = this.bloodGroup;
- data['RHFactor'] = this.rHFactor;
- data['IsEmailAlertRequired'] = this.isEmailAlertRequired;
- data['IsSMSAlertRequired'] = this.isSMSAlertRequired;
data['PreferredLanguage'] = this.preferredLanguage;
- data['IsPrivilegedMember'] = this.isPrivilegedMember;
- data['MemberID'] = this.memberID;
- data['ExpiryDate'] = this.expiryDate;
- data['IsHmgEmployee'] = this.isHmgEmployee;
- data['EmployeeID'] = this.employeeID;
- data['EmergencyContactName'] = this.emergencyContactName;
- data['EmergencyContactNo'] = this.emergencyContactNo;
- data['PatientPayType'] = this.patientPayType;
- data['DHCCPatientRefID'] = this.dHCCPatientRefID;
- data['IsPatientDummy'] = this.isPatientDummy;
- data['Status'] = this.status;
- data['IsStatusCleared'] = this.isStatusCleared;
- data['PatientIdentificationType'] = this.patientIdentificationType;
data['PatientIdentificationNo'] = this.patientIdentificationNo;
- data['ProjectID'] = this.projectID;
- data['InfoSourceID'] = this.infoSourceID;
- data['Address'] = this.address;
- data['Age'] = this.age;
- data['AgeDesc'] = this.ageDesc;
- data['AreaID'] = this.areaID;
- data['CreatedBy'] = this.createdBy;
- data['GenderDescription'] = this.genderDescription;
- data['IR'] = this.iR;
- data['ISOCityID'] = this.iSOCityID;
- data['ISOCountryID'] = this.iSOCountryID;
- if (this.listPrivilege != null) {
- data['ListPrivilege'] =
- this.listPrivilege.map((v) => v.toJson()).toList();
- }
- data['Marital'] = this.marital;
data['OutSA'] = this.outSA;
- data['POBox'] = this.pOBox;
- data['ReceiveHealthSummaryReport'] = this.receiveHealthSummaryReport;
- data['SourceType'] = this.sourceType;
- data['StrDateofBirth'] = this.strDateofBirth;
- data['TempAddress'] = this.tempAddress;
- data['ZipCode'] = this.zipCode;
-
- data['PatientName'] = this.patientName;
data['IdentificationNo'] = this.identificationNo;
- data['Email'] = this.email;
data['MobileNo'] = this.mobileNo;
- data['PatientOutSA'] = this.patientOutSA;
-
data['TokenID'] = this.tokenID;
- data['PatientBloodType'] = this.patientBloodType;
data['IMEI'] = this.iMEI;
data['BiometricEnabled'] = this.biometricEnabled;
data['LogInTypeID'] = this.logInTypeID;
return data;
}
}
-
-class ListPrivilege {
- int iD;
- String serviceName;
- bool previlege;
- Null region;
-
- ListPrivilege({this.iD, this.serviceName, this.previlege, this.region});
-
- ListPrivilege.fromJson(Map json) {
- iD = json['ID'];
- serviceName = json['ServiceName'];
- previlege = json['Previlege'];
- region = json['Region'];
- }
-
- Map toJson() {
- final Map data = new Map();
- data['ID'] = this.iD;
- data['ServiceName'] = this.serviceName;
- data['Previlege'] = this.previlege;
- data['Region'] = this.region;
- return data;
- }
-}
diff --git a/lib/models/Authentication/register_info_response.dart b/lib/models/Authentication/register_info_response.dart
new file mode 100644
index 00000000..309a8aa9
--- /dev/null
+++ b/lib/models/Authentication/register_info_response.dart
@@ -0,0 +1,316 @@
+class RegisterInfoResponse {
+ Null date;
+ int languageID;
+ int serviceName;
+ Null time;
+ Null androidLink;
+ Null authenticationTokenID;
+ Null data;
+ bool dataw;
+ int dietType;
+ Null errorCode;
+ Null errorEndUserMessage;
+ Null errorEndUserMessageN;
+ Null errorMessage;
+ int errorType;
+ int foodCategory;
+ Null iOSLink;
+ bool isAuthenticated;
+ int mealOrderStatus;
+ int mealType;
+ int messageStatus;
+ int numberOfResultRecords;
+ Null patientBlodType;
+ Null successMsg;
+ Null successMsgN;
+ Null accessTokenObject;
+ int age;
+ Null clientIdentifierId;
+ int createdBy;
+ String dateOfBirth;
+ String firstNameAr;
+ String firstNameEn;
+ String gender;
+ Null genderAr;
+ Null genderEn;
+ String healthId;
+ String idNumber;
+ String idType;
+ bool isHijri;
+ int isInstertedOrUpdated;
+ int isNull;
+ int isPatientExistNHIC;
+ String lastNameAr;
+ String lastNameEn;
+ Null listActiveAccessToken;
+ String maritalStatus;
+ String maritalStatusCode;
+ String nationality;
+ String nationalityCode;
+ String occupation;
+ String patientStatus;
+ String placeofBirth;
+ Null practitionerStatusCode;
+ Null practitionerStatusDescAr;
+ Null practitionerStatusDescEn;
+ String secondNameAr;
+ String secondNameEn;
+ String thirdNameAr;
+ String thirdNameEn;
+ Null accessToken;
+ int categoryCode;
+ Null categoryNameAr;
+ Null categoryNameEn;
+ int constraintCode;
+ Null constraintNameAr;
+ Null constraintNameEn;
+ Null content;
+ Null licenseExpiryDate;
+ Null licenseIssuedDate;
+ Null licenseStatusCode;
+ Null licenseStatusDescAr;
+ Null licenseStatusDescEn;
+ Null organizations;
+ Null registrationNumber;
+ int specialtyCode;
+ Null specialtyNameAr;
+ Null specialtyNameEn;
+
+ RegisterInfoResponse(
+ {this.date,
+ this.languageID,
+ this.serviceName,
+ this.time,
+ this.androidLink,
+ this.authenticationTokenID,
+ this.data,
+ this.dataw,
+ this.dietType,
+ this.errorCode,
+ this.errorEndUserMessage,
+ this.errorEndUserMessageN,
+ this.errorMessage,
+ this.errorType,
+ this.foodCategory,
+ this.iOSLink,
+ this.isAuthenticated,
+ this.mealOrderStatus,
+ this.mealType,
+ this.messageStatus,
+ this.numberOfResultRecords,
+ this.patientBlodType,
+ this.successMsg,
+ this.successMsgN,
+ this.accessTokenObject,
+ this.age,
+ this.clientIdentifierId,
+ this.createdBy,
+ this.dateOfBirth,
+ this.firstNameAr,
+ this.firstNameEn,
+ this.gender,
+ this.genderAr,
+ this.genderEn,
+ this.healthId,
+ this.idNumber,
+ this.idType,
+ this.isHijri,
+ this.isInstertedOrUpdated,
+ this.isNull,
+ this.isPatientExistNHIC,
+ this.lastNameAr,
+ this.lastNameEn,
+ this.listActiveAccessToken,
+ this.maritalStatus,
+ this.maritalStatusCode,
+ this.nationality,
+ this.nationalityCode,
+ this.occupation,
+ this.patientStatus,
+ this.placeofBirth,
+ this.practitionerStatusCode,
+ this.practitionerStatusDescAr,
+ this.practitionerStatusDescEn,
+ this.secondNameAr,
+ this.secondNameEn,
+ this.thirdNameAr,
+ this.thirdNameEn,
+ this.accessToken,
+ this.categoryCode,
+ this.categoryNameAr,
+ this.categoryNameEn,
+ this.constraintCode,
+ this.constraintNameAr,
+ this.constraintNameEn,
+ this.content,
+ this.licenseExpiryDate,
+ this.licenseIssuedDate,
+ this.licenseStatusCode,
+ this.licenseStatusDescAr,
+ this.licenseStatusDescEn,
+ this.organizations,
+ this.registrationNumber,
+ this.specialtyCode,
+ this.specialtyNameAr,
+ this.specialtyNameEn});
+
+ RegisterInfoResponse.fromJson(Map json) {
+ date = json['Date'];
+ languageID = json['LanguageID'];
+ serviceName = json['ServiceName'];
+ time = json['Time'];
+ androidLink = json['AndroidLink'];
+ authenticationTokenID = json['AuthenticationTokenID'];
+ data = json['Data'];
+ dataw = json['Dataw'];
+ dietType = json['DietType'];
+ errorCode = json['ErrorCode'];
+ errorEndUserMessage = json['ErrorEndUserMessage'];
+ errorEndUserMessageN = json['ErrorEndUserMessageN'];
+ errorMessage = json['ErrorMessage'];
+ errorType = json['ErrorType'];
+ foodCategory = json['FoodCategory'];
+ iOSLink = json['IOSLink'];
+ isAuthenticated = json['IsAuthenticated'];
+ mealOrderStatus = json['MealOrderStatus'];
+ mealType = json['MealType'];
+ messageStatus = json['MessageStatus'];
+ numberOfResultRecords = json['NumberOfResultRecords'];
+ patientBlodType = json['PatientBlodType'];
+ successMsg = json['SuccessMsg'];
+ successMsgN = json['SuccessMsgN'];
+ accessTokenObject = json['AccessTokenObject'];
+ age = json['Age'];
+ clientIdentifierId = json['ClientIdentifierId'];
+ createdBy = json['CreatedBy'];
+ dateOfBirth = json['DateOfBirth'];
+ firstNameAr = json['FirstNameAr'];
+ firstNameEn = json['FirstNameEn'];
+ gender = json['Gender'];
+ genderAr = json['GenderAr'];
+ genderEn = json['GenderEn'];
+ healthId = json['HealthId'];
+ idNumber = json['IdNumber'];
+ idType = json['IdType'];
+ isHijri = json['IsHijri'];
+ isInstertedOrUpdated = json['IsInstertedOrUpdated'];
+ isNull = json['IsNull'];
+ isPatientExistNHIC = json['IsPatientExistNHIC'];
+ lastNameAr = json['LastNameAr'];
+ lastNameEn = json['LastNameEn'];
+ listActiveAccessToken = json['List_ActiveAccessToken'];
+ maritalStatus = json['MaritalStatus'];
+ maritalStatusCode = json['MaritalStatusCode'];
+ nationality = json['Nationality'];
+ nationalityCode = json['NationalityCode'];
+ occupation = json['Occupation'];
+ patientStatus = json['PatientStatus'];
+ placeofBirth = json['PlaceofBirth'];
+ practitionerStatusCode = json['PractitionerStatusCode'];
+ practitionerStatusDescAr = json['PractitionerStatusDescAr'];
+ practitionerStatusDescEn = json['PractitionerStatusDescEn'];
+ secondNameAr = json['SecondNameAr'];
+ secondNameEn = json['SecondNameEn'];
+ thirdNameAr = json['ThirdNameAr'];
+ thirdNameEn = json['ThirdNameEn'];
+ accessToken = json['accessToken'];
+ categoryCode = json['categoryCode'];
+ categoryNameAr = json['categoryNameAr'];
+ categoryNameEn = json['categoryNameEn'];
+ constraintCode = json['constraintCode'];
+ constraintNameAr = json['constraintNameAr'];
+ constraintNameEn = json['constraintNameEn'];
+ content = json['content'];
+ licenseExpiryDate = json['licenseExpiryDate'];
+ licenseIssuedDate = json['licenseIssuedDate'];
+ licenseStatusCode = json['licenseStatusCode'];
+ licenseStatusDescAr = json['licenseStatusDescAr'];
+ licenseStatusDescEn = json['licenseStatusDescEn'];
+ organizations = json['organizations'];
+ registrationNumber = json['registrationNumber'];
+ specialtyCode = json['specialtyCode'];
+ specialtyNameAr = json['specialtyNameAr'];
+ specialtyNameEn = json['specialtyNameEn'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Date'] = this.date;
+ data['LanguageID'] = this.languageID;
+ data['ServiceName'] = this.serviceName;
+ data['Time'] = this.time;
+ data['AndroidLink'] = this.androidLink;
+ data['AuthenticationTokenID'] = this.authenticationTokenID;
+ data['Data'] = this.data;
+ data['Dataw'] = this.dataw;
+ data['DietType'] = this.dietType;
+ data['ErrorCode'] = this.errorCode;
+ data['ErrorEndUserMessage'] = this.errorEndUserMessage;
+ data['ErrorEndUserMessageN'] = this.errorEndUserMessageN;
+ data['ErrorMessage'] = this.errorMessage;
+ data['ErrorType'] = this.errorType;
+ data['FoodCategory'] = this.foodCategory;
+ data['IOSLink'] = this.iOSLink;
+ data['IsAuthenticated'] = this.isAuthenticated;
+ data['MealOrderStatus'] = this.mealOrderStatus;
+ data['MealType'] = this.mealType;
+ data['MessageStatus'] = this.messageStatus;
+ data['NumberOfResultRecords'] = this.numberOfResultRecords;
+ data['PatientBlodType'] = this.patientBlodType;
+ data['SuccessMsg'] = this.successMsg;
+ data['SuccessMsgN'] = this.successMsgN;
+ data['AccessTokenObject'] = this.accessTokenObject;
+ data['Age'] = this.age;
+ data['ClientIdentifierId'] = this.clientIdentifierId;
+ data['CreatedBy'] = this.createdBy;
+ data['DateOfBirth'] = this.dateOfBirth;
+ data['FirstNameAr'] = this.firstNameAr;
+ data['FirstNameEn'] = this.firstNameEn;
+ data['Gender'] = this.gender;
+ data['GenderAr'] = this.genderAr;
+ data['GenderEn'] = this.genderEn;
+ data['HealthId'] = this.healthId;
+ data['IdNumber'] = this.idNumber;
+ data['IdType'] = this.idType;
+ data['IsHijri'] = this.isHijri;
+ data['IsInstertedOrUpdated'] = this.isInstertedOrUpdated;
+ data['IsNull'] = this.isNull;
+ data['IsPatientExistNHIC'] = this.isPatientExistNHIC;
+ data['LastNameAr'] = this.lastNameAr;
+ data['LastNameEn'] = this.lastNameEn;
+ data['List_ActiveAccessToken'] = this.listActiveAccessToken;
+ data['MaritalStatus'] = this.maritalStatus;
+ data['MaritalStatusCode'] = this.maritalStatusCode;
+ data['Nationality'] = this.nationality;
+ data['NationalityCode'] = this.nationalityCode;
+ data['Occupation'] = this.occupation;
+ data['PatientStatus'] = this.patientStatus;
+ data['PlaceofBirth'] = this.placeofBirth;
+ data['PractitionerStatusCode'] = this.practitionerStatusCode;
+ data['PractitionerStatusDescAr'] = this.practitionerStatusDescAr;
+ data['PractitionerStatusDescEn'] = this.practitionerStatusDescEn;
+ data['SecondNameAr'] = this.secondNameAr;
+ data['SecondNameEn'] = this.secondNameEn;
+ data['ThirdNameAr'] = this.thirdNameAr;
+ data['ThirdNameEn'] = this.thirdNameEn;
+ data['accessToken'] = this.accessToken;
+ data['categoryCode'] = this.categoryCode;
+ data['categoryNameAr'] = this.categoryNameAr;
+ data['categoryNameEn'] = this.categoryNameEn;
+ data['constraintCode'] = this.constraintCode;
+ data['constraintNameAr'] = this.constraintNameAr;
+ data['constraintNameEn'] = this.constraintNameEn;
+ data['content'] = this.content;
+ data['licenseExpiryDate'] = this.licenseExpiryDate;
+ data['licenseIssuedDate'] = this.licenseIssuedDate;
+ data['licenseStatusCode'] = this.licenseStatusCode;
+ data['licenseStatusDescAr'] = this.licenseStatusDescAr;
+ data['licenseStatusDescEn'] = this.licenseStatusDescEn;
+ data['organizations'] = this.organizations;
+ data['registrationNumber'] = this.registrationNumber;
+ data['specialtyCode'] = this.specialtyCode;
+ data['specialtyNameAr'] = this.specialtyNameAr;
+ data['specialtyNameEn'] = this.specialtyNameEn;
+ return data;
+ }
+}
diff --git a/lib/models/Authentication/register_user_requet.dart b/lib/models/Authentication/register_user_requet.dart
new file mode 100644
index 00000000..ebefcfcf
--- /dev/null
+++ b/lib/models/Authentication/register_user_requet.dart
@@ -0,0 +1,151 @@
+class RegisterUserRequest {
+ Patientobject patientobject;
+ String patientIdentificationID;
+ int patientMobileNumber;
+ String logInTokenID;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ Null sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+
+ RegisterUserRequest(
+ {this.patientobject,
+ this.patientIdentificationID,
+ this.patientMobileNumber,
+ this.logInTokenID,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID});
+
+ RegisterUserRequest.fromJson(Map json) {
+ patientobject = json['Patientobject'] != null
+ ? new Patientobject.fromJson(json['Patientobject'])
+ : null;
+ patientIdentificationID = json['PatientIdentificationID'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ logInTokenID = json['LogInTokenID'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ if (this.patientobject != null) {
+ data['Patientobject'] = this.patientobject.toJson();
+ }
+ data['PatientIdentificationID'] = this.patientIdentificationID;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['LogInTokenID'] = this.logInTokenID;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ return data;
+ }
+}
+
+class Patientobject {
+ bool tempValue;
+ int patientIdentificationType;
+ String patientIdentificationNo;
+ int mobileNumber;
+ int patientOutSA;
+ String firstName;
+ String middleName;
+ String lastName;
+ dynamic strDateofBirth;
+ String dateofBirth;
+ int gender;
+ String nationalityID;
+ String dateofBirthN;
+ String emailAddress;
+ String sourceType;
+ String preferredLanguage;
+ String marital;
+
+ Patientobject(
+ {this.tempValue,
+ this.patientIdentificationType,
+ this.patientIdentificationNo,
+ this.mobileNumber,
+ this.patientOutSA,
+ this.firstName,
+ this.middleName,
+ this.lastName,
+ this.strDateofBirth,
+ this.dateofBirth,
+ this.gender,
+ this.nationalityID,
+ this.dateofBirthN,
+ this.emailAddress,
+ this.sourceType,
+ this.preferredLanguage,
+ this.marital});
+
+ Patientobject.fromJson(Map json) {
+ tempValue = json['TempValue'];
+ patientIdentificationType = json['PatientIdentificationType'];
+ patientIdentificationNo = json['PatientIdentificationNo'];
+ mobileNumber = json['MobileNumber'];
+ patientOutSA = json['PatientOutSA'];
+ firstName = json['FirstName'];
+ middleName = json['MiddleName'];
+ lastName = json['LastName'];
+ strDateofBirth = json['StrDateofBirth'];
+ dateofBirth = json['DateofBirth'];
+ gender = json['Gender'];
+ nationalityID = json['NationalityID'];
+ dateofBirthN = json['DateofBirthN'];
+ emailAddress = json['EmailAddress'];
+ sourceType = json['SourceType'];
+
+ preferredLanguage = json['PreferredLanguage'];
+ marital = json['Marital'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['TempValue'] = this.tempValue;
+ data['PatientIdentificationType'] = this.patientIdentificationType;
+ data['PatientIdentificationNo'] = this.patientIdentificationNo;
+ data['MobileNumber'] = this.mobileNumber;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['FirstName'] = this.firstName;
+ data['MiddleName'] = this.middleName;
+ data['LastName'] = this.lastName;
+ data['StrDateofBirth'] = this.strDateofBirth;
+ data['DateofBirth'] = this.dateofBirth;
+ data['Gender'] = this.gender;
+ data['NationalityID'] = this.nationalityID;
+ data['DateofBirthN'] = this.dateofBirthN;
+ data['EmailAddress'] = this.emailAddress;
+ data['SourceType'] = this.sourceType;
+
+ data['PreferredLanguage'] = this.preferredLanguage;
+ data['Marital'] = this.marital;
+ return data;
+ }
+}
diff --git a/lib/models/Authentication/registered_authenticated_user_req.dart b/lib/models/Authentication/registered_authenticated_user_req.dart
new file mode 100644
index 00000000..c261d062
--- /dev/null
+++ b/lib/models/Authentication/registered_authenticated_user_req.dart
@@ -0,0 +1,104 @@
+class RegisteredAuthenticatedUserRequest {
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+ int patientID;
+ String tokenID;
+ String voipToken;
+ int patientTypeID;
+ int patientType;
+ String deviceToken;
+ String deviceType;
+ String patientMobileNumber;
+ String nationalID;
+ int gender;
+ int loginType;
+ String mACAddress;
+ int latitude;
+ int longitude;
+
+ RegisteredAuthenticatedUserRequest(
+ {this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID,
+ this.patientID,
+ this.tokenID,
+ this.voipToken,
+ this.patientTypeID,
+ this.patientType,
+ this.deviceToken,
+ this.deviceType,
+ this.patientMobileNumber,
+ this.nationalID,
+ this.gender,
+ this.loginType,
+ this.mACAddress,
+ this.latitude,
+ this.longitude});
+
+ RegisteredAuthenticatedUserRequest.fromJson(Map json) {
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ patientID = json['PatientID'];
+ tokenID = json['TokenID'];
+ voipToken = json['VoipToken'];
+ patientTypeID = json['PatientTypeID'];
+ patientType = json['PatientType'];
+ deviceToken = json['DeviceToken'];
+ deviceType = json['DeviceType'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ nationalID = json['NationalID'];
+ gender = json['Gender'];
+ loginType = json['LoginType'];
+ mACAddress = json['MACAddress'];
+ latitude = json['Latitude'];
+ longitude = json['Longitude'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ data['PatientID'] = this.patientID;
+ data['TokenID'] = this.tokenID;
+ data['VoipToken'] = this.voipToken;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['PatientType'] = this.patientType;
+ data['DeviceToken'] = this.deviceToken;
+ data['DeviceType'] = this.deviceType;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['NationalID'] = this.nationalID;
+ data['Gender'] = this.gender;
+ data['LoginType'] = this.loginType;
+ data['MACAddress'] = this.mACAddress;
+ data['Latitude'] = this.latitude;
+ data['Longitude'] = this.longitude;
+ return data;
+ }
+}
diff --git a/lib/pages/base/base_view.dart b/lib/pages/base/base_view.dart
index 3ed2baad..f6853123 100644
--- a/lib/pages/base/base_view.dart
+++ b/lib/pages/base/base_view.dart
@@ -35,4 +35,10 @@ class _BaseViewState extends State> {
child: Consumer(builder: widget.builder),
);
}
+
+ @override
+ void dispose() {
+ if (model != null) model = null;
+ super.dispose();
+ }
}
diff --git a/lib/pages/family/my-family.dart b/lib/pages/family/my-family.dart
new file mode 100644
index 00000000..9d1a39e9
--- /dev/null
+++ b/lib/pages/family/my-family.dart
@@ -0,0 +1,51 @@
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
+import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
+import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:diplomaticquarterapp/routes.dart';
+
+class MyFamily extends StatefulWidget {
+ @override
+ _MyFamily createState() => _MyFamily();
+}
+
+class _MyFamily extends State {
+ bool isLoading = true;
+ @override
+ void initState() {
+ isLoading = true;
+ // checkUser(context);
+ super.initState();
+ }
+
+ Widget build(BuildContext context) {
+ return AppScaffold(
+ appBarTitle: TranslationBase.of(context).myFamilyFiles,
+ isShowAppBar: true,
+ body: SingleChildScrollView(
+ padding: EdgeInsets.all(20),
+ child: Stack(
+ children: [
+ TabBar(
+ tabs: [
+ Tab(icon: Icon(Icons.directions_car)),
+ Tab(icon: Icon(Icons.directions_transit)),
+ ],
+ ),
+ TabBarView(
+ children: [
+ Icon(Icons.directions_car),
+ Icon(Icons.directions_transit),
+ ],
+ )
+ ],
+ )));
+ }
+}
diff --git a/lib/pages/feedback/Status_feedback_page.dart b/lib/pages/feedback/Status_feedback_page.dart
new file mode 100644
index 00000000..7fc01d06
--- /dev/null
+++ b/lib/pages/feedback/Status_feedback_page.dart
@@ -0,0 +1,98 @@
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+class StatusFeedbackPage extends StatefulWidget {
+ @override
+ _StatusFeedbackPageState createState() => _StatusFeedbackPageState();
+}
+
+class _StatusFeedbackPageState extends State {
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ onModelReady: (model) => model.getCOC(),
+ builder: (_, model, widget) => AppScaffold(
+ baseViewModel: model,
+ body: Container(
+ margin: EdgeInsets.only(top: 8.0,left: 8.0,right: 8.0,bottom: MediaQuery.of(context).size.height * 0.1 ),
+ padding: EdgeInsets.all(15.0),
+ child: ListView.builder(
+ itemCount: model.cOCItemList.length,
+ itemBuilder: (context, index) => Container(
+ decoration: BoxDecoration(
+ shape: BoxShape.rectangle,
+ border: Border.all(color: Colors.white, width: 0.5),
+ borderRadius: BorderRadius.all(Radius.circular(5)),
+ color: Colors.white,
+ ),
+ margin: EdgeInsets.all(4),
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(height: 8,),
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts('${model.cOCItemList[index].cOCTitle}'),
+ Texts(
+ 'Number :${model.cOCItemList[index].itemID}',
+ variant: 'overline',
+ ),
+ ],
+ ),
+ Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Texts('${model.cOCItemList[index].status}'),
+ Texts(
+ '${model.cOCItemList[index].date}',
+ variant: 'overline',
+ ),
+ ],
+ ),
+ ],
+ ),
+ Texts('${model.cOCItemList[index].formType}'),
+ Divider(height: 4.5,color: Colors.grey[500],)
+ ],
+ ),
+ ),
+ )),
+ ),
+ bottomSheet: Container(
+ height: MediaQuery.of(context).size.height * 0.13,
+ width: double.infinity,
+ padding: EdgeInsets.all(8.0),
+ child: Center(
+ child: Container(
+ height: MediaQuery.of(context).size.height * 0.1,
+ width: MediaQuery.of(context).size.width * 0.8,
+ child: Button(
+ label: 'Search',
+ loading: model.state == ViewState.BusyLocal,
+ onTap: () {
+ //TODO When come back
+ },
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/feedback/feedback_home_page.dart b/lib/pages/feedback/feedback_home_page.dart
new file mode 100644
index 00000000..92bfaff7
--- /dev/null
+++ b/lib/pages/feedback/feedback_home_page.dart
@@ -0,0 +1,118 @@
+import 'dart:ui';
+
+import 'package:diplomaticquarterapp/pages/feedback/send_feedback_page.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+import 'Status_feedback_page.dart';
+
+class FeedbackHomePage extends StatefulWidget {
+ @override
+ _FeedbackHomePageState createState() => _FeedbackHomePageState();
+}
+
+class _FeedbackHomePageState extends State
+ with SingleTickerProviderStateMixin {
+ TabController _tabController;
+
+ @override
+ void initState() {
+ super.initState();
+ _tabController = TabController(length: 2, vsync: this);
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ _tabController.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: 'Feedback',
+ body: Scaffold(
+ extendBodyBehindAppBar: true,
+ appBar: PreferredSize(
+ preferredSize: Size.fromHeight(65.0),
+ child: Stack(
+ children: [
+ Positioned(
+ bottom: 1,
+ left: 0,
+ right: 0,
+ child: BackdropFilter(
+ filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
+ child: Container(
+ color: Theme.of(context)
+ .scaffoldBackgroundColor
+ .withOpacity(0.8),
+ height: 70.0,
+ ),
+ ),
+ ),
+ Center(
+ child: Container(
+ height: 60.0,
+ margin: EdgeInsets.only(top: 10.0),
+ width: MediaQuery.of(context).size.width * 0.9,
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: Theme.of(context).dividerColor,
+ width: 0.7),
+ ),
+ color: Colors.white),
+ child: Center(
+ child: TabBar(
+ isScrollable: true,
+ controller: _tabController,
+ indicatorWeight: 5.0,
+ indicatorSize: TabBarIndicatorSize.label,
+ indicatorColor: Colors.red[800],
+ labelColor: Theme.of(context).primaryColor,
+ labelPadding:
+ EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
+ unselectedLabelColor: Colors.grey[800],
+ tabs: [
+ Container(
+ width: MediaQuery.of(context).size.width * 0.30,
+ child: Center(
+ child: Texts('Send'),
+ ),
+ ),
+ Container(
+ width: MediaQuery.of(context).size.width * 0.30,
+ child: Center(
+ child: Texts('Status'),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ body: Column(
+ children: [
+ Expanded(
+ child: TabBarView(
+ physics: BouncingScrollPhysics(),
+ controller: _tabController,
+ children: [
+ SendFeedbackPage(),
+ StatusFeedbackPage()
+ ],
+ ),
+ )
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/feedback/send_feedback_page.dart b/lib/pages/feedback/send_feedback_page.dart
new file mode 100644
index 00000000..801a0a37
--- /dev/null
+++ b/lib/pages/feedback/send_feedback_page.dart
@@ -0,0 +1,563 @@
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
+import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:font_awesome_flutter/font_awesome_flutter.dart';
+
+enum MessageType {
+ ComplaintOnAnAppointment,
+ ComplaintWithoutAppointment,
+ Question,
+ Compliment,
+ Suggestion,
+ NON
+}
+
+class SendFeedbackPage extends StatefulWidget {
+ @override
+ _SendFeedbackPageState createState() => _SendFeedbackPageState();
+}
+
+class _SendFeedbackPageState extends State {
+ TextEditingController titleController = TextEditingController();
+ TextEditingController messageController = TextEditingController();
+ MessageType messageType = MessageType.NON;
+ String _selected = "not selected";
+ List images = [];
+ String title;
+
+ String message;
+ final formKey = GlobalKey();
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ builder: (_, model, widget) => AppScaffold(
+ baseViewModel: model,
+ body: Container(
+ height: MediaQuery.of(context).size.height * 0.8,
+ child: SingleChildScrollView(
+ child: Form(
+ key: formKey,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(
+ height: 65,
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 20, right: 20, top: 8),
+ child: Texts(
+ 'We\'d love to hear your feedback about the health care services and online services. Please fill in the required fields',
+ //يسعدنا سماع ملاحظاتك حول خدمات الرعاية الصحية والخدمات الإلكترونية. يرجى تعبئة الحقول المطلوبة
+ textAlign: TextAlign.center,
+ variant: 'body2Link',
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ confirmBox();
+ },
+ child: Container(
+ margin: EdgeInsets.only(left: 10, right: 10, top: 15),
+ height: 50,
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.grey),
+ borderRadius: BorderRadius.circular(7),
+ color: Colors.white,
+ shape: BoxShape.rectangle,
+ ),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Container(
+ child: Texts(
+ _selected,
+ variant: 'bodyText',
+ ),
+ margin: EdgeInsets.only(left: 10),
+ ),
+ Icon(
+ Icons.arrow_drop_down,
+ size: 22,
+ color: Colors.grey,
+ )
+ ],
+ ),
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 10, right: 10, top: 15),
+ child: TextFields(
+ hintText: 'Title',
+ controller: titleController,
+ fontSize: 13.5,
+ hintColor: Colors.black,
+ fontWeight: FontWeight.w600,
+ validator: (value) {
+ if (value == null)
+ return "please Enter title";
+ else
+ return null;
+ },
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 10, right: 10, top: 15),
+ child: TextFields(
+ hintText: 'message',
+ fontSize: 13.5,
+ hintColor: Colors.black,
+ fontWeight: FontWeight.w600,
+ maxLines: 25,
+ minLines: 13,
+ controller: messageController,
+ validator: (value) {
+ if (value == null)
+ return "please Enter message";
+ else
+ return null;
+ }),
+ ),
+ InkWell(
+ onTap: () {
+ ImageOptions.showImageOptions(context, (String image) {
+ setState(() {
+ images.add(image);
+ });
+ });
+ },
+ child: Container(
+ margin: EdgeInsets.only(left: 10, right: 10, top: 15),
+ height: 50,
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.grey),
+ borderRadius: BorderRadius.circular(7),
+ color: Colors.white,
+ shape: BoxShape.rectangle,
+ ),
+ child: Center(
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Icon(Icons.attach_file),
+ Texts(
+ 'selected attachment',
+ variant: 'bodyText',
+ textAlign: TextAlign.center,
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ...List.generate(
+ images.length,
+ (index) => Container(
+ margin: EdgeInsets.all(10),
+ padding: EdgeInsets.all(8.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Icon(FontAwesomeIcons.paperclip),
+ SizedBox(
+ width: 8,
+ ),
+ Texts(
+ 'image ${index + 1}.png',
+ ),
+ ],
+ ),
+ InkWell(
+ onTap: () {
+ setState(() {
+ images.remove(images[index]);
+ });
+ },
+ child: Icon(
+ FontAwesomeIcons.trashAlt,
+ color: Colors.red[300],
+ ))
+ ],
+ ),
+ )),
+ SizedBox(
+ height: 30,
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ bottomSheet: Container(
+ height: MediaQuery.of(context).size.height * 0.13,
+ width: double.infinity,
+ padding: EdgeInsets.all(8.0),
+ child: Center(
+ child: Container(
+ height: MediaQuery.of(context).size.height * 0.1,
+ width: MediaQuery.of(context).size.width * 0.8,
+ child: Button(
+ label: 'Send',
+ loading: model.state == ViewState.BusyLocal,
+ onTap: () {
+ final form = formKey.currentState;
+ if (form.validate()) if (messageType != MessageType.NON)
+ model
+ .sendCOCItem(
+ title: titleController.text,
+ attachment: images.length > 0 ? images[0] : "",
+ details: messageController.text,
+ cOCTypeName: getCOCName())
+ .then((value) {
+ if (value) {
+ setState(() {
+ titleController.text = "";
+ messageController.text = "";
+ images = [];
+ messageType = MessageType.NON;
+ });
+ AppToast.showSuccessToast(message: "Your feedback was sended");
+
+ } else {
+ AppToast.showErrorToast(message: model.error);
+
+ }
+ });
+ else {
+ AppToast.showErrorToast(message: "Please select COC");
+ }
+ },
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ String getCOCName() {
+ switch (messageType) {
+ case MessageType.ComplaintOnAnAppointment:
+ return "1";
+ break;
+ case MessageType.ComplaintWithoutAppointment:
+ return "2";
+ break;
+ case MessageType.Question:
+ return "3";
+ break;
+ case MessageType.Compliment:
+ return "4";
+ break;
+ case MessageType.Suggestion:
+ return "5";
+ break;
+ case MessageType.NON:
+ return "";
+ break;
+ }
+ return "";
+ }
+
+ // Show Dialog function
+ void confirmBox() {
+ showDialog(
+ context: context,
+ child: FeedbackTypeDialog(
+ onValueChange: _onValueChange,
+ initialValue: messageType,
+ onValueSelected: () {
+ setState(() {
+ switch (messageType) {
+ case MessageType.ComplaintOnAnAppointment:
+ _selected = "Complaint on an appointment";
+ break;
+ case MessageType.ComplaintWithoutAppointment:
+ _selected = "Complaint without appointment";
+ break;
+ case MessageType.Question:
+ _selected = "Question";
+ break;
+ case MessageType.Compliment:
+ _selected = "Compliment";
+ break;
+ case MessageType.Suggestion:
+ _selected = "Suggestion";
+ break;
+ case MessageType.NON:
+ break;
+ }
+ });
+ Navigator.pop(context);
+ },
+ ));
+ }
+
+ void _onValueChange(MessageType value) {
+ setState(() {
+ messageType = value;
+ });
+ }
+}
+
+class FeedbackTypeDialog extends StatefulWidget {
+ const FeedbackTypeDialog(
+ {this.onValueChange, this.initialValue, this.onValueSelected});
+
+ final MessageType initialValue;
+ final void Function(MessageType) onValueChange;
+ final GestureTapCallback onValueSelected;
+
+ @override
+ State createState() => new FeedbackTypeDialogState();
+}
+
+class FeedbackTypeDialogState extends State {
+ MessageType _messageType;
+
+ @override
+ void initState() {
+ super.initState();
+ _messageType = widget.initialValue;
+ }
+
+ Widget build(BuildContext context) {
+ return new SimpleDialog(
+ title: Text(
+ "Message Type",
+ textAlign: TextAlign.center,
+ ),
+ children: [
+ Container(
+ // padding: const EdgeInsets.all(10.0),
+ child: Column(
+ children: [
+ Divider(
+ height: 2.5,
+ color: Colors.grey[500],
+ ),
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ setState(() {
+ _messageType = MessageType.ComplaintOnAnAppointment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ child: ListTile(
+ title: const Text('Complaint on an appointment'),
+ leading: Radio(
+ value: MessageType.ComplaintOnAnAppointment,
+ groupValue: _messageType,
+ activeColor: Colors.red[800],
+ onChanged: (MessageType value) {
+ setState(() {
+ _messageType = MessageType.ComplaintOnAnAppointment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5.0,
+ ),
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ setState(() {
+ _messageType = MessageType.ComplaintWithoutAppointment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ child: ListTile(
+ title: const Text('Complaint without appointment'),
+ leading: Radio(
+ value: MessageType.ComplaintWithoutAppointment,
+ groupValue: _messageType,
+ activeColor: Colors.red[800],
+ onChanged: (MessageType value) {
+ setState(() {
+ _messageType =
+ MessageType.ComplaintWithoutAppointment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5.0,
+ ),
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ setState(() {
+ _messageType = MessageType.Question;
+ widget.onValueChange(_messageType);
+ });
+ },
+ child: ListTile(
+ title: const Text('Question'),
+ leading: Radio(
+ value: MessageType.Question,
+ groupValue: _messageType,
+ activeColor: Colors.red[800],
+ onChanged: (MessageType value) {
+ setState(() {
+ _messageType = MessageType.Question;
+ widget.onValueChange(_messageType);
+ });
+ },
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5.0,
+ ),
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ setState(() {
+ _messageType = MessageType.Compliment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ child: ListTile(
+ title: const Text('compliment'),
+ leading: Radio(
+ value: MessageType.Compliment,
+ groupValue: _messageType,
+ activeColor: Colors.red[800],
+ onChanged: (MessageType value) {
+ setState(() {
+ _messageType = MessageType.Compliment;
+ widget.onValueChange(_messageType);
+ });
+ },
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5.0,
+ ),
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ setState(() {
+ _messageType = MessageType.Suggestion;
+ widget.onValueChange(_messageType);
+ });
+ },
+ child: ListTile(
+ title: const Text('Suggestion'),
+ leading: Radio(
+ value: MessageType.Suggestion,
+ groupValue: _messageType,
+ activeColor: Colors.red[800],
+ onChanged: (MessageType value) {
+ setState(() {
+ _messageType = MessageType.Suggestion;
+ widget.onValueChange(_messageType);
+ });
+ },
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5.0,
+ ),
+ Divider(
+ height: 2.5,
+ color: Colors.grey[500],
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ Row(
+ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () {
+ Navigator.pop(context);
+ },
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Container(
+ child: Center(
+ child: Texts(
+ 'cancel',
+ color: Colors.red,
+ ))),
+ ),
+ )),
+ Container(
+ width: 1,
+ height: 30,
+ color: Colors.grey[500],
+ ),
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: widget.onValueSelected,
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Center(
+ child: Texts(
+ 'ok',
+ fontWeight: FontWeight.w400,
+ )),
+ ),
+ )),
+ ],
+ )
+ ],
+ )),
+ ],
+ );
+ }
+}
diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart
index 6169fdf4..b172cffc 100644
--- a/lib/pages/landing/home_page.dart
+++ b/lib/pages/landing/home_page.dart
@@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/hospital_view_model.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart';
@@ -9,6 +10,7 @@ import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart'
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart';
import '../base/base_view.dart';
+import '../feedback/feedback_home_page.dart';
class HomePage extends StatefulWidget {
@override
@@ -18,54 +20,38 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State {
@override
Widget build(BuildContext context) {
- return BaseView(
- onModelReady: (model) => model.getMedicine(),
- builder: (BuildContext context, PharmacyViewModel model, Widget child) =>
- AppScaffold(
- baseViewModel: model,
- body: Column(
- children: [
- InkWell(
- onTap: () {
- model.getMedicine();
- },
- child: Container(
- child: Texts('call api'),
+ return AppScaffold(
+ body: Container(
+ width: double.infinity,
+ child: FractionallySizedBox(
+ widthFactor: 0.95,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ InkWell(
+ onTap: ()=>Navigator.push(context, FadePage(page: FeedbackHomePage())),
+ child: Container(
+ margin: EdgeInsets.only(top: 12),
+ width: double.infinity,
+ height: 180,
+ decoration: BoxDecoration(
+ shape: BoxShape.rectangle,
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(12.0),
+ border: Border.all(
+ color: Colors.grey[400],
+ width: 1.0,
+ ),
+ ),
+ child: Center(
+ child: Texts('Feedback'),
+ ),
+ ),
),
- ),
- Expanded(
- child: _getHospitals(model.pharmacy),
- )
-// BaseView(
-// onModelReady: (dctorViewModel) => dctorViewModel.getHospitals(),
-// builder: (BuildContext context, DoctorViewModel dctorViewModel,
-// Widget child) =>
-// InkWell(
-// onTap: () {
-// dctorViewModel.getHospitals();
-// },
-// child: Container(
-// width: double.infinity,
-// height: 150,
-// child: NetworkBaseView(
-// baseViewModel: dctorViewModel,
-// child: Container(
-// child: Texts('The API 2'),
-// ),
-// ),
-// ),
-// ),
-// ),
- ],
+ ],
+ ),
),
),
);
}
-
- Widget _getHospitals(List hospitals) => ListView.builder(
- itemCount: hospitals.length,
- itemBuilder: (BuildContext context, int index) => Container(
- child: Texts(hospitals[index].itemDes),
- ),
- );
}
diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart
index 8e8f84e4..c3bee59e 100644
--- a/lib/pages/landing/landing_page.dart
+++ b/lib/pages/landing/landing_page.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
+import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
@@ -10,6 +11,7 @@ import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
+import 'package:permission_handler/permission_handler.dart';
import 'home_page.dart';
class LandingPage extends StatefulWidget {
@@ -38,10 +40,19 @@ class _LandingPageState extends State {
if (token != null) {
checkUserStatus(token);
}
-
+ requestPermissions();
//assert(token != null);
});
}
+ void requestPermissions() async {
+ await [
+ Permission.location,
+ Permission.storage,
+ Permission.camera,
+ Permission.photos,
+ Permission.accessMediaLocation
+ ].request();
+ }
@override
Widget build(BuildContext context) {
@@ -69,7 +80,8 @@ class _LandingPageState extends State {
body: PageView(
physics: NeverScrollableScrollPhysics(),
controller: pageController,
- children: [Container(), MedicalProfilePage(), MyAdmissionsPage(), ToDo()],
+ children: [
+ HomePage(), MedicalProfilePage(), MyAdmissionsPage(), ToDo()],
),
bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab),
);
@@ -90,13 +102,23 @@ class _LandingPageState extends State {
}
}
- void checkUserStatus(token) {
+ void checkUserStatus(token) async {
authService
.selectDeviceImei(token)
.then((SelectDeviceIMEIRES value) => setUserValues(value));
+ if (await sharedPref.getObject(USER_PROFILE) != null) {
+ var data =
+ AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE));
+ if (data != null)
+ authService.registeredAuthenticatedUser(data, token, 0, 0);
+ // setState(() {
+ // this.user = data;
+ // print(this.user);
+ // });
+ }
}
- void setUserValues(value) {
- print(value);
+ void setUserValues(value) async {
+ sharedPref.setObject(IMEI_USER_DATA, value);
}
}
diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart
index 3d5f181e..8ecfef39 100644
--- a/lib/pages/login/confirm-login.dart
+++ b/lib/pages/login/confirm-login.dart
@@ -1,14 +1,15 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
-import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart';
-
+import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/models/Authentication/send_activation_request.dart';
-import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.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/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart';
@@ -18,7 +19,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:flutter/services.dart';
-import 'package:flutter_flexible_toast/flutter_flexible_toast.dart';
+import 'package:intl/intl.dart';
import 'package:local_auth/local_auth.dart';
class ConfirmLogin extends StatefulWidget {
@@ -28,16 +29,16 @@ class ConfirmLogin extends StatefulWidget {
class _ConfirmLogin extends State {
final LocalAuthentication auth = LocalAuthentication();
- List _availableBiometrics;
+ dynamic _availableBiometrics;
var sharedPref = new AppSharedPreferences();
bool authenticated;
final authService = new AuthProvider();
int mobileNumber;
String errorMsg = '';
- var user;
+ SelectDeviceIMEIRES user;
bool isLoading = false;
- CheckPatientAuthenticationReq registerd_data;
-
+ var registerd_data;
+ bool isMoreOption = false;
var zipCode;
var patientOutSA;
@@ -54,6 +55,13 @@ class _ConfirmLogin extends State {
bool onlySMSBox = false;
var userData;
+
+ static BuildContext _context;
+
+ static bool _loading;
+
+ int fingrePrintBefore;
+
@override
void initState() {
_getAvailableBiometrics();
@@ -76,248 +84,168 @@ class _ConfirmLogin extends State {
children: [
Expanded(
flex: 3,
- child: Column(
- mainAxisAlignment:
- MainAxisAlignment.spaceEvenly,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Image.asset(
- 'assets/images/habib-logo.png',
- height: 80,
- width: 80,
- ),
- this.onlySMSBox == false
- ? AppText(
- TranslationBase.of(context)
- .verifyLoginWith,
- fontSize:
- SizeConfig.textMultiplier * 3.5,
- textAlign: TextAlign.left,
- )
- : AppText(
- TranslationBase.of(context)
- .verifyFingerprint2,
- fontSize:
- SizeConfig.textMultiplier * 2.5,
- textAlign: TextAlign.left,
+ child: user != null && isMoreOption == false
+ ? Column(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceEvenly,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Image.asset(
+ 'assets/images/habib-logo.png',
+ height: 80,
+ width: 80,
+ ),
+ AppText(
+ TranslationBase.of(context)
+ .welcomeBack +
+ ' ' +
+ user.name,
+ fontSize: SizeConfig.textMultiplier * 4,
+ ),
+ AppText(
+ TranslationBase.of(context).accountInfo,
+ fontSize: SizeConfig.textMultiplier * 3,
+ ),
+ Card(
+ color: Colors.grey[300],
+ child: Row(
+ children: [
+ Expanded(
+ child: ListTile(
+ title: Text(
+ TranslationBase.of(context)
+ .lastLoginAt,
+ textAlign: TextAlign.center,
+ ),
+ subtitle: Text(
+ user.editedOn != null
+ ? formatDate(DateUtil
+ .convertStringToDate(
+ user.editedOn))
+ : '--',
+ textAlign:
+ TextAlign.center),
+ )),
+ Expanded(
+ child: ListTile(
+ title: Text(
+ TranslationBase.of(context)
+ .lastLoginWith,
+ textAlign:
+ TextAlign.center),
+ subtitle: Text(
+ getType(user.logInType,
+ context),
+ textAlign:
+ TextAlign.center),
+ ))
+ ],
+ ))
+ ],
+ )
+ : Column(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceEvenly,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Image.asset(
+ 'assets/images/habib-logo.png',
+ height: 80,
+ width: 80,
),
- ])),
- Expanded(
- flex: 4,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- onlySMSBox == false
- ? Row(
+ this.onlySMSBox == false
+ ? AppText(
+ TranslationBase.of(context)
+ .verifyLoginWith,
+ fontSize:
+ SizeConfig.textMultiplier *
+ 3.5,
+ textAlign: TextAlign.left,
+ )
+ : AppText(
+ TranslationBase.of(context)
+ .verifyFingerprint2,
+ fontSize:
+ SizeConfig.textMultiplier *
+ 2.5,
+ textAlign: TextAlign.left,
+ ),
+ ])),
+ user != null && isMoreOption == false
+ ? Expanded(
+ flex: 2,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ Expanded(
+ child: InkWell(
+ onTap: () => {
+ authenticateUser(
+ 3,
+ BiometricType
+ .face.index)
+ },
+ child: getButton(
+ user.logInType))),
+ Expanded(child: getButton(5))
+ ])
+ ]))
+ : Expanded(
+ flex: 4,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ onlySMSBox == false
+ ? Row(
+ mainAxisAlignment:
+ MainAxisAlignment.center,
+ children: [
+ Expanded(child: getButton(3)),
+ Expanded(child: getButton(2))
+ ],
+ )
+ : SizedBox(),
+ Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
- Expanded(
- child: InkWell(
- onTap: () => {
- authenticateUser(
- 3,
- BiometricType
- .face.index)
- },
- child: RoundedContainer(
- backgroundColor:
- BiometricType.face
- .index ==
- 1
- ? Colors.white
- : Colors.white
- .withOpacity(
- .7),
- borderColor: Colors.grey,
- showBorder: true,
- child: Padding(
- padding:
- EdgeInsets.fromLTRB(
- 20, 10, 20, 10),
- child: Column(
- mainAxisAlignment:
- MainAxisAlignment
- .center,
- children: [
- Image.asset(
- 'assets/images/login/101.png',
- height: SizeConfig
- .imageSizeMultiplier *
- 13,
- width: SizeConfig
- .imageSizeMultiplier *
- 16,
- ),
- SizedBox(
- height: 20,
- ),
- AppText(
- TranslationBase.of(
- context)
- .verifyFaceID,
- fontSize: SizeConfig
- .textMultiplier *
- 2,
- )
- ],
- ),
- )))),
- Expanded(
- child: InkWell(
- onTap: () => {
- authenticateUser(
- 2,
- BiometricType
- .fingerprint
- .index)
- },
- child: RoundedContainer(
- backgroundColor:
- BiometricType
- .fingerprint
- .index ==
- 1
- ? Colors.white
- : Colors.white
- .withOpacity(
- .7),
- borderColor: Colors.grey,
- showBorder: true,
- child: Padding(
- padding:
- EdgeInsets.fromLTRB(
- 25, 10, 25, 10),
- child: Column(
- children: [
- Image.asset(
- 'assets/images/login/102.png',
- height: SizeConfig
- .imageSizeMultiplier *
- 13,
- width: SizeConfig
- .imageSizeMultiplier *
- 16,
- ),
- SizedBox(
- height: 20,
- ),
- AppText(
- TranslationBase.of(
- context)
- .verifyFingerprint,
- fontSize: SizeConfig
- .textMultiplier *
- 2,
- )
- ],
- ),
- ))))
+ Expanded(child: getButton(1)),
+ Expanded(child: getButton(4))
],
- )
- : SizedBox(),
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Expanded(
- child: InkWell(
- onTap: () =>
- {authenticateUser(1, true)},
- child: RoundedContainer(
- borderColor: Colors.grey,
- showBorder: true,
- child: Padding(
- padding: EdgeInsets.fromLTRB(
- 20, 10, 20, 10),
- child: Column(
- mainAxisAlignment:
- MainAxisAlignment
- .center,
- children: [
- Image.asset(
- 'assets/images/login/103.png',
- height: SizeConfig
- .imageSizeMultiplier *
- 13,
- width: SizeConfig
- .imageSizeMultiplier *
- 16,
- ),
- SizedBox(
- height: 20,
- ),
- AppText(
- TranslationBase.of(
- context)
- .verifySMS,
- fontSize: SizeConfig
- .textMultiplier *
- 2,
- )
- ],
- ),
- )))),
- Expanded(
- child: InkWell(
- onTap: () =>
- {authenticateUser(4, true)},
- child: RoundedContainer(
- borderColor: Colors.grey,
- showBorder: true,
- child: Padding(
- padding: EdgeInsets.fromLTRB(
- 25, 10, 25, 10),
- child: Column(
- children: [
- Image.asset(
- 'assets/images/login/104.png',
- height: SizeConfig
- .imageSizeMultiplier *
- 13,
- width: SizeConfig
- .imageSizeMultiplier *
- 16,
- ),
- SizedBox(
- height: 20,
- ),
- AppText(
- TranslationBase.of(
- context)
- .verifyWhatsApp,
- fontSize: SizeConfig
- .textMultiplier *
- 2,
- )
- ],
- ),
- ))))
- ],
- ),
- ]),
- ),
+ ),
+ ]),
+ ),
Expanded(
flex: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
- // Row(
- // children: [
- // Expanded(
- // child: RaisedButton(
- // color: Colors.grey,
- // textColor: Colors.white,
- // child:
- // Text(TranslationBase.of(context).registerNow),
- // onPressed: () => {
- // Navigator.of(context).pushNamed(
- // REGISTER,
- // )
- // },
- // ))
- // ],
- // ),
+ user != null
+ ? Row(
+ children: [
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context)
+ .useAnotherAccount,
+ () => {
+ Navigator.of(context).pushNamed(
+ LOGIN_TYPE,
+ )
+ },
+ )),
+ ],
+ )
+ : SizedBox(),
],
))
],
@@ -340,8 +268,12 @@ class _ConfirmLogin extends State {
}
authenticateUser(type, isActive) {
- this.selectedOption =
- type; //this.selectedOption && !this.onlySMSBox ? this.selectedOption : this.fingrePrintBefore ? this.fingrePrintBefore : el.value;
+ if (type == 2 || type == 3) {
+ fingrePrintBefore = type;
+ }
+ this.selectedOption = user.logInType == 3 || user.logInType == 2
+ ? user.logInType
+ : fingrePrintBefore != null ? fingrePrintBefore : type;
switch (type) {
case 1:
@@ -360,32 +292,55 @@ class _ConfirmLogin extends State {
break;
}
sharedPref.setInt(LAST_LOGIN,
- type); //this.cs.sharedService.setStorage(this.selectedOption, AuthenticationService.LAST_LOGIN);
+ this.selectedOption); //this.cs.sharedService.setStorage(this.selectedOption, AuthenticationService.LAST_LOGIN);
}
loginWithSMS(type, isActive) {
//if (!el.disabled) {
- if (this.user != null && this.registerd_data != null) {
+ if (this.user != null && this.registerd_data == null) {
this.checkUserAuthentication(type);
} else {
if (this.loginTokenID != null) {
+ // Future.delayed(Duration(seconds: 1), () {
this.sendActivationCode(type);
+ // });
} else {
this.checkUserAuthentication(type);
}
}
}
- checkUserAuthentication(type) {}
+ checkUserAuthentication(type) {
+ showLoader(true);
+ var req = getCommonRequest();
+ var request = CheckPatientAuthenticationReq.fromJson(req.toJson());
+
+ sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
+ authService.checkPatientAuthentication(request).then((value) => {
+ if (value['isSMSSent'])
+ {
+ sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
+ this.loginTokenID = value['LogInTokenID'],
+ sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
+ // Future.delayed(Duration(seconds: 1), () {
+ this.sendActivationCode(type)
+ // })
+ }
+ else
+ {
+ if (value['IsAuthenticated']) {this.checkActivationCode()}
+ }
+ });
+ }
sendActivationCode(type) {
var request = this.getCommonRequest();
loading(true);
this.authService.sendActivationCode(request).then((result) => {
- if (result['isSMSSent'] == true)
+ if (result != null && result['isSMSSent'] == true)
{loading(false), this.startSMSService(type)}
else
- {}
+ {loading(false)}
});
}
@@ -418,7 +373,7 @@ class _ConfirmLogin extends State {
getMobileInfo(request) {
this.authService.getLoginInfo(request).then((result) => {
- if (!result['SMSLoginRequired'])
+ if (result['SMSLoginRequired'] == false)
{
this.loginTokenID = result.logInTokenID,
this.patientOutSA = result.patientOutSA,
@@ -433,10 +388,12 @@ class _ConfirmLogin extends State {
}
else
{
- if (result['IsAuthenticated'])
+ if (result['IsAuthenticated'] == true)
{
setState(() {
+ isMoreOption = true;
this.onlySMSBox = true;
+ // this.fingrePrintBefore = true;
}),
//sharedPref.setBool(ONLY_SMS, true),
@@ -453,30 +410,46 @@ class _ConfirmLogin extends State {
});
}
+ setUser() async {
+ user = SelectDeviceIMEIRES.fromJson(
+ await sharedPref.getObject(IMEI_USER_DATA));
+ }
+
setDefault() async {
// this.user = this.cs.sharedService.getSharedData(
// AuthenticationService.IMEI_USER_DATA,
// false
// );
- this.registerd_data = CheckPatientAuthenticationReq.fromJson(
- await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN));
+
+ setState(() {
+ setUser();
+ });
+
+ if (await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN) != null) {
+ isMoreOption = true;
+ this.registerd_data = CheckPatientAuthenticationReq.fromJson(
+ await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN));
+ }
this.mobileNumber = this.registerd_data != null
? this.registerd_data.patientMobileNumber
- : int.parse(this.user.Mobile);
+ : int.parse(this.user.mobile);
this.zipCode = this.registerd_data != null
? this.registerd_data.zipCode
- : this.user.OutSA ? "971" : "966";
+ : this.user.outSA == true ? "971" : "966";
this.patientOutSA = this.registerd_data != null
? this.registerd_data.zipCode == "966" ? 0 : 1
- : this.user.OutSA;
+ : this.user.outSA;
if (this.registerd_data != null) {
this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID);
this.loginType = this.registerd_data.searchType;
}
this.deviceToken = await sharedPref.getString(PUSH_TOKEN);
- this.lastLogin = await sharedPref.getInt(
- LAST_LOGIN); //this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN);
+ this.lastLogin = await sharedPref.getInt(LAST_LOGIN) != null
+ ? await sharedPref.getInt(LAST_LOGIN)
+ : user.logInType;
+
+ //this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN);
}
getCommonRequest() {
@@ -484,41 +457,75 @@ class _ConfirmLogin extends State {
request.patientMobileNumber = this.mobileNumber;
request.mobileNo = '0' + this.mobileNumber.toString();
request.deviceToken = this.deviceToken;
- request.projectOutSA = this.patientOutSA;
+ request.projectOutSA = this.patientOutSA == true ? 1 : 0;
request.loginType = this.selectedOption;
request.oTPSendType = this.selectedOption == 1 ? 1 : 2;
request.zipCode = this.zipCode;
- request.isRegister = false;
+
request.logInTokenID = this.loginTokenID ?? "";
+
if (this.registerd_data != null) {
- request.searchType = this.registerd_data.searchType == 1
- ? this.registerd_data.searchType
- : 1;
- request.patientID = this.registerd_data.patientID != 0
- ? this.registerd_data.patientID
- : 0;
- request.patientIdentificationID =
- request.nationalID = this.registerd_data.patientIdentificationID;
+ request.searchType = this.registerd_data.searchType ?? 1;
+ request.patientID = this.registerd_data.patientID ?? 0;
+ request.patientIdentificationID = request.nationalID =
+ this.registerd_data.patientIdentificationID ?? '0';
+
+ request.isRegister = this.registerd_data.isRegister;
} else {
- request.searchType = request.searchType == 1 ? request.searchType : 2;
- request.patientID = int.parse(this.user.PatientID);
- request.patientID = request.nationalID =
- request.nationalID != null ? request.nationalID : 0;
+ request.searchType = request.searchType ?? 2;
+ request.patientID = this.user.patientID ?? 0;
+ request.nationalID = request.nationalID ?? '0';
+ request.patientIdentificationID = request.patientIdentificationID ?? '0';
+ request.isRegister = false;
}
+ request.deviceTypeID = request.searchType;
return request;
}
- checkActivationCode({value}) {
- loading(true);
+ checkActivationCode({value}) async {
+ SMSOTP.showLoadingDialog(context, true);
var request = this.getCommonRequest().toJson();
- this.authService.checkActivationCode(request, value).then((result) => {
- this.userData =
- result.list, //AuthenticatedUser.fromJson(result['List'][0]),
- this.sharedPref.setObject(USER_PROFILE, result.list),
- this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
- this.checkIfUserAgreedBefore(result),
- loading(false)
- });
+
+ this
+ .authService
+ .checkActivationCode(request, value: value)
+ .then((result) => {
+ if (result is Map)
+ {
+ result = CheckActivationCode.fromJson(result),
+ if (this.registerd_data != null &&
+ this.registerd_data.isRegister == true)
+ {
+ Navigator.of(context).pushNamed(
+ REGISTER_INFO,
+ )
+ }
+ else
+ {
+ this.userData = result
+ .list, //AuthenticatedUser.fromJson(result['List'][0]),
+ this.sharedPref.setObject(USER_PROFILE, result.list),
+ this.loginTokenID = result.logInTokenID,
+ this
+ .sharedPref
+ .setObject(LOGIN_TOKEN_ID, result.logInTokenID),
+ this
+ .sharedPref
+ .setString(TOKEN, result.authenticationTokenID),
+ this.checkIfUserAgreedBefore(result),
+ // Navigator.of(context).pop(),
+ SMSOTP.showLoadingDialog(context, false),
+ }
+ }
+ else
+ {
+ // Navigator.of(context).pop(),
+ SMSOTP.showLoadingDialog(context, false),
+ Future.delayed(Duration(seconds: 1), () {
+ AppToast.showErrorToast(message: result);
+ }),
+ }
+ });
}
checkIfUserAgreedBefore(CheckActivationCode result) {
@@ -526,13 +533,17 @@ class _ConfirmLogin extends State {
if (result.isNeedUserAgreement) {
//move to agreement page.
} else {
- goToHome();
+ insertIMEI();
}
}
+ insertIMEI() {
+ authService.insertDeviceImei().then((value) => {goToHome()});
+ }
+
goToHome() {
- authService.insertDeviceImei().then((value) => print(value));
- // Navigator.of(context).pushNamed(HOME);
+ // authService.insertDeviceImei().then((value) => print(value));
+ Navigator.of(context).pushNamed(HOME);
// const request = new LoginRequest();
// if (this.loginType === AuthenticationService.IDENTIFCIATION_LOGIN_TYPE) {
// request.PatientID = 0;
@@ -570,4 +581,185 @@ class _ConfirmLogin extends State {
isLoading = flag;
});
}
+
+ Widget getButton(flag) {
+ switch (flag) {
+ case 4:
+ return InkWell(
+ onTap: () => {authenticateUser(4, true)},
+ child: RoundedContainer(
+ borderColor: Colors.grey,
+ showBorder: true,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
+ child: Column(
+ children: [
+ Image.asset(
+ 'assets/images/login/104.png',
+ height: SizeConfig.imageSizeMultiplier * 13,
+ width: SizeConfig.imageSizeMultiplier * 16,
+ ),
+ SizedBox(
+ height: 20,
+ ),
+ AppText(
+ TranslationBase.of(context).verifyWhatsApp,
+ fontSize: SizeConfig.textMultiplier * 2,
+ )
+ ],
+ ),
+ )));
+ break;
+ case 1:
+ return InkWell(
+ onTap: () => {authenticateUser(1, true)},
+ child: RoundedContainer(
+ borderColor: Colors.grey,
+ showBorder: true,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Image.asset(
+ 'assets/images/login/103.png',
+ height: SizeConfig.imageSizeMultiplier * 13,
+ width: SizeConfig.imageSizeMultiplier * 16,
+ ),
+ SizedBox(
+ height: 20,
+ ),
+ AppText(
+ TranslationBase.of(context).verifySMS,
+ fontSize: SizeConfig.textMultiplier * 2,
+ )
+ ],
+ ),
+ )));
+ break;
+ case 2:
+ return InkWell(
+ onTap: () => {authenticateUser(2, BiometricType.fingerprint.index)},
+ child: RoundedContainer(
+ backgroundColor: BiometricType.fingerprint.index == 1
+ ? Colors.white
+ : Colors.white.withOpacity(.7),
+ borderColor: Colors.grey,
+ showBorder: true,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
+ child: Column(
+ children: [
+ Image.asset(
+ 'assets/images/login/102.png',
+ height: SizeConfig.imageSizeMultiplier * 13,
+ width: SizeConfig.imageSizeMultiplier * 16,
+ ),
+ SizedBox(
+ height: 20,
+ ),
+ AppText(
+ TranslationBase.of(context).verifyFingerprint,
+ fontSize: SizeConfig.textMultiplier * 2,
+ )
+ ],
+ ),
+ )));
+ break;
+ case 3:
+ return InkWell(
+ onTap: () => {authenticateUser(3, BiometricType.face.index)},
+ child: RoundedContainer(
+ backgroundColor: BiometricType.face.index == 1
+ ? Colors.white
+ : Colors.white.withOpacity(.7),
+ borderColor: Colors.grey,
+ showBorder: true,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Image.asset(
+ 'assets/images/login/101.png',
+ height: SizeConfig.imageSizeMultiplier * 13,
+ width: SizeConfig.imageSizeMultiplier * 16,
+ ),
+ SizedBox(
+ height: 20,
+ ),
+ AppText(
+ TranslationBase.of(context).verifyFaceID,
+ fontSize: SizeConfig.textMultiplier * 2,
+ )
+ ],
+ ),
+ )));
+ break;
+
+ default:
+ return InkWell(
+ onTap: () => {
+ setState(() {
+ isMoreOption = true;
+ })
+ },
+ child: RoundedContainer(
+ backgroundColor: BiometricType.fingerprint.index == 1
+ ? Colors.white
+ : Colors.white.withOpacity(.7),
+ borderColor: Colors.grey,
+ showBorder: true,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(0, 0, 0, 5),
+ child: Column(
+ children: [
+ Image.asset(
+ 'assets/images/login/more_icon.png',
+ height: SizeConfig.imageSizeMultiplier * 13,
+ width: SizeConfig.imageSizeMultiplier * 16,
+ ),
+ SizedBox(
+ height: 20,
+ ),
+ AppText(
+ TranslationBase.of(context).moreVerification,
+ fontSize: SizeConfig.textMultiplier * 2,
+ textAlign: TextAlign.center,
+ )
+ ],
+ ),
+ )));
+ }
+ }
+
+ getType(type, context) {
+ switch (type) {
+ case 1:
+ return TranslationBase.of(context).verifySMS;
+ break;
+ case 2:
+ return TranslationBase.of(context).verifyFingerprint;
+ break;
+ case 3:
+ return TranslationBase.of(context).verifyFaceID;
+ break;
+ case 4:
+ return TranslationBase.of(context).verifyWhatsApp;
+ break;
+ default:
+ return TranslationBase.of(context).verifySMS;
+ break;
+ }
+ }
+
+ formatDate(date) {
+ return DateFormat('MMM dd, yyy, kk:mm').format(date);
+ }
+
+ showLoader(bool isTrue) {
+ setState(() {
+ isLoading = isTrue;
+ });
+ }
}
diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart
index b0f9a1fd..1b482299 100644
--- a/lib/pages/login/login.dart
+++ b/lib/pages/login/login.dart
@@ -1,7 +1,10 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.dart';
+import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart';
import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
+import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/routes.dart';
@@ -18,6 +21,7 @@ import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_pro
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
class Login extends StatefulWidget {
@override
@@ -34,6 +38,12 @@ class _Login extends State {
final authService = new AuthProvider();
var sharedPref = new AppSharedPreferences();
bool isLoading = false;
+
+ @override
+ void initState() {
+ super.initState();
+ }
+
@override
Widget build(BuildContext context) {
return AppScaffold(
@@ -95,7 +105,7 @@ class _Login extends State {
() => {this.startLogin()},
color: isButtonDisabled == true
? Colors.grey
- : Colors.grey[600],
+ : Colors.grey[900],
textColor: Colors.white,
))
],
@@ -113,9 +123,9 @@ class _Login extends State {
}
void validateForm() {
- if (validateIDBox(nationalIDorFile.text) == true &&
- mobileNo != null &&
- util.isSAUDIIDValid(nationalIDorFile.text) == true) {
+ if (util.validateIDBox(nationalIDorFile.text, loginType) == true &&
+ mobileNo.length >= 9 &&
+ util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) {
setState(() {
isButtonDisabled = false;
});
@@ -126,18 +136,6 @@ class _Login extends State {
}
}
- bool validateIDBox(String value) {
- Pattern pattern = loginIDPattern(); //r'^\d+(?:\.\d+)?$';
-
- RegExp regex = new RegExp(pattern);
- return regex.hasMatch(value);
- }
-
- String loginIDPattern() {
- var length = loginType == 1 ? 10 : 7;
- return "([0-9]{" + length.toString() + "})";
- }
-
checkUserAuthentication() {
showLoader(true);
var request = CheckPatientAuthenticationReq();
@@ -164,12 +162,44 @@ class _Login extends State {
}
else
{
- if (value.IsAuthenticated) {this.checkActivationCode()}
+ if (value['IsAuthenticated']) {this.checkActivationCode()}
}
});
}
- checkActivationCode() {}
+ checkActivationCode({code}) async {
+ Map request = {};
+ // request.logInTokenID = await sharedPref.getString(LOGIN_TOKEN_ID);
+ // request.activationCode = code ?? "0000";
+ // request.isSilentLogin = code != null ? false : true;
+ request['PatientMobileNumber'] = int.parse(mobileNo);
+ request['ZipCode'] = countryCode;
+ request['SearchType'] = loginType;
+ request['LoginType'] = loginType;
+ if (this.loginType == 1) {
+ request['PatientIdentificationID'] = this.nationalIDorFile.text;
+ request['PatientID'] = 0;
+ } else {
+ request['PatientIdentificationID'] = '';
+ request['PatientID'] = int.parse(nationalIDorFile.text);
+ }
+ // request.isRegister = false;
+ this
+ .authService
+ .checkActivationCode(request, value: code)
+ .then((result) => {
+ result = CheckActivationCode.fromJson(result),
+ this.sharedPref.setObject(USER_PROFILE, result.list),
+ this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
+ this.sharedPref.setString(TOKEN, result.authenticationTokenID),
+ //this.checkIfUserAgreedBefore(result),
+ Navigator.of(context).pushNamed(
+ HOME,
+ )
+ // SMSOTP.showLoadingDialog(context, false),
+ });
+ }
+
showLoader(bool isTrue) {
setState(() {
isLoading = isTrue;
diff --git a/lib/pages/login/register-info.dart b/lib/pages/login/register-info.dart
new file mode 100644
index 00000000..fe86c77a
--- /dev/null
+++ b/lib/pages/login/register-info.dart
@@ -0,0 +1,436 @@
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
+import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
+import 'package:diplomaticquarterapp/models/Authentication/register_info_response.dart';
+import 'package:diplomaticquarterapp/models/Authentication/register_user_requet.dart';
+import 'package:diplomaticquarterapp/pages/login/login-type.dart';
+import 'package:diplomaticquarterapp/routes.dart';
+import 'package:diplomaticquarterapp/services/authentication/auth_provider.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/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/uitl/utils.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
+import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
+import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
+import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
+import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:font_awesome_flutter/font_awesome_flutter.dart';
+import 'package:hijri/hijri_calendar.dart';
+import 'package:intl/intl.dart';
+
+class RegisterInfo extends StatefulWidget {
+ @override
+ _RegisterInfo createState() => _RegisterInfo();
+}
+
+class _RegisterInfo extends State {
+ final authService = new AuthProvider();
+ final sharedPref = new AppSharedPreferences();
+ var emailAddress = new TextEditingController();
+ RegisterInfoResponse registerInfo;
+ bool isLoading;
+ int page = 1;
+ String selectedLanguage = 'English';
+ var registerRequest;
+
+ var selectSourceType = 'KSA';
+ @override
+ void initState() {
+ getRegisterInfo();
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return AppScaffold(
+ appBarTitle: TranslationBase.of(context).register,
+ isShowAppBar: true,
+ body: SingleChildScrollView(
+ child: Container(
+ // padding: EdgeInsets.only(top: 10, left: 10, right: 10, bottom: 30),
+ height: SizeConfig.realScreenHeight,
+ width: SizeConfig.realScreenWidth,
+ child: RoundedContainer(
+ child: Padding(
+ padding:
+ EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 0),
+ child: Stack(
+ // crossAxisAlignment: CrossAxisAlignment.start,
+ // mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Padding(
+ padding: EdgeInsets.only(bottom: 0),
+ child: AppText(
+ TranslationBase.of(context).patientInfo,
+ fontWeight: FontWeight.bold,
+ // fontSize: SizeConfig.textMultiplier * 2,
+ textAlign: TextAlign.left,
+ )),
+ registerInfo != null && page == 1
+ ? Padding(
+ padding: EdgeInsets.only(top: 20),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.idNumber,
+ prefixIcon: Icon(
+ Icons.chrome_reader_mode,
+ color: Colors.red),
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(
+ TranslationBase.of(context).firstName),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.firstNameEn,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(
+ TranslationBase.of(context).middleName),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.secondNameEn,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(TranslationBase.of(context).lastName),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.lastNameEn,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(TranslationBase.of(context).gender),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo
+ .maritalStatusCode ==
+ 'U'
+ ? 'Unknown'
+ : registerInfo.maritalStatusCode ==
+ 'M'
+ ? AppText(
+ TranslationBase.of(context)
+ .male)
+ : AppText(
+ TranslationBase.of(context)
+ .female),
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(
+ TranslationBase.of(context).nationality),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.nationalityCode,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ AppText(TranslationBase.of(context).dob),
+ Container(
+ margin: EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText: registerInfo.dateOfBirth,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ readOnly: true,
+ )),
+ ],
+ ))
+ : registerInfo != null && page == 2
+ ? isLoading == true
+ ? AppCircularProgressIndicator()
+ : Padding(
+ padding: EdgeInsets.only(top: 20),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ mainAxisAlignment:
+ MainAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ AppText(TranslationBase.of(context)
+ .prefferedLanguage),
+ Container(
+ margin: EdgeInsets.only(top: 0),
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Colors.grey,
+ width: 1),
+ borderRadius:
+ BorderRadius.circular(
+ 5.0)),
+ padding: EdgeInsets.all(5),
+ child:
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ focusColor:
+ Colors.white,
+ dropdownColor:
+ Colors.white,
+ isExpanded: true,
+ value:
+ selectedLanguage,
+ iconSize: 40,
+ elevation: 16,
+ onChanged: (String
+ newValue) =>
+ {},
+ items: [
+ TranslationBase.of(
+ context)
+ .english,
+ TranslationBase.of(
+ context)
+ .arabic,
+ ].map<
+ DropdownMenuItem<
+ String>>((String
+ value) {
+ return DropdownMenuItem<
+ String>(
+ value: value,
+ child:
+ Text(value),
+ );
+ }).toList()))),
+ AppText(TranslationBase.of(context)
+ .registrLocation),
+ Container(
+ margin:
+ EdgeInsets.only(bottom: 10),
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Colors.grey,
+ width: 1),
+ borderRadius:
+ BorderRadius.circular(
+ 5.0)),
+ padding: EdgeInsets.all(5),
+ child:
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ focusColor:
+ Colors.white,
+ dropdownColor:
+ Colors.white,
+ isExpanded: true,
+ value:
+ selectSourceType,
+ iconSize: 40,
+ elevation: 16,
+ onChanged: (String
+ newValue) =>
+ {},
+ items: [
+ TranslationBase.of(
+ context)
+ .ksa,
+ TranslationBase.of(
+ context)
+ .dubai,
+ ].map<
+ DropdownMenuItem<
+ String>>((String
+ value) {
+ return DropdownMenuItem<
+ String>(
+ value: value,
+ child:
+ Text(value),
+ );
+ }).toList()))),
+ AppText(TranslationBase.of(context)
+ .enterEmail),
+ Container(
+ margin:
+ EdgeInsets.only(bottom: 10),
+ child: TextFields(
+ hintText:
+ TranslationBase.of(context)
+ .enterEmail,
+ controller: emailAddress,
+ padding: EdgeInsets.only(
+ top: 20,
+ bottom: 20,
+ left: 10,
+ right: 10),
+ ))
+ ],
+ ))
+ : SizedBox(),
+ // AppText('National ID'),
+
+ page == 1
+ ? Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Row(
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context).next,
+ () => {nextPage()},
+ textColor: Colors.white,
+ ))
+ ],
+ )
+ ],
+ )
+ : Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Row(
+ crossAxisAlignment:
+ CrossAxisAlignment.end,
+ children: [
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context).register,
+ () => {registerNow()},
+ textColor: Colors.white,
+ ))
+ ])
+ ])
+ ],
+ ))),
+ )));
+ }
+
+ nextPage() {
+ setState(() {
+ page++;
+ });
+ }
+
+ registerNow() {
+ var patientRequest = Patientobject();
+ var request = RegisterUserRequest();
+ showLoader(true);
+ patientRequest.dateofBirth = DateUtil.convertISODateToJsonDate(
+ registerInfo.dateOfBirth.replaceAll('/', '-'));
+ patientRequest.emailAddress = emailAddress.text;
+ patientRequest.patientIdentificationNo = registerInfo.idNumber;
+ patientRequest.patientIdentificationType = 2;
+ patientRequest.sourceType = selectSourceType == 'KSA' ? '1' : '2';
+ patientRequest.nationalityID = registerInfo.nationalityCode;
+ patientRequest.dateofBirthN = HijriCalendar.fromDate(DateFormat('mm-dd-yyy')
+ .parse(registerInfo.dateOfBirth.replaceAll('/', '-')))
+ .toString();
+ patientRequest.firstName = registerInfo.firstNameEn;
+ patientRequest.middleName = registerInfo.secondNameEn;
+ patientRequest.lastName = registerInfo.lastNameEn;
+ patientRequest.gender = registerInfo.gender == 'F' ? 2 : 1;
+ patientRequest.mobileNumber = registerRequest['PatientMobileNumber'];
+ patientRequest.marital = registerInfo.maritalStatusCode == 'M' ? '1' : '0';
+ // patientRequest.projectID = null;
+ patientRequest.strDateofBirth = DateFormat('mm-dd-yyy')
+ .parse(registerInfo.dateOfBirth.replaceAll('/', '-'))
+ .toString(); //DateFormat("MM-dd-yyyy")
+ //.parse(registerInfo.dateOfBirth.replaceAll('/', '-'));
+ patientRequest.tempValue = true;
+ request.logInTokenID = registerRequest['LogInTokenID'];
+ request.patientMobileNumber = registerRequest['PatientMobileNumber'];
+ request.patientIdentificationID = registerInfo.idNumber;
+ request.patientOutSA = registerRequest['PatientOutSA'];
+ request.patientobject = patientRequest;
+ request.patientobject.preferredLanguage =
+ selectedLanguage == 'Arabic' ? '1' : '2';
+ authService.registerUser(request).then((value) => {registerd(value)});
+ }
+
+ registerd(result) {
+ showLoader(false);
+ if (result is Map) {
+ result = CheckActivationCode.fromJson(result);
+
+ // this.userData =
+ // result.list; //AuthenticatedUser.fromJson(result['List'][0]),
+ this.sharedPref.setObject(USER_PROFILE, result.list);
+ // this.loginTokenID = result.logInTokenID;
+ this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID);
+ this.sharedPref.setString(TOKEN, result.authenticationTokenID);
+ this.checkIfUserAgreedBefore(result);
+ // Navigator.of(context).pop(),
+
+ } else {
+ // Navigator.of(context).pop(),
+ AppToast.showErrorToast(message: result);
+ }
+ }
+
+ checkIfUserAgreedBefore(result) {
+ if (result.isNeedUserAgreement) {
+ //move to agreement page.
+ } else {
+ insertIMEI();
+ }
+ }
+
+ insertIMEI() {
+ authService
+ .insertDeviceImei()
+ .then((value) => {Navigator.of(context).pushNamed(HOME)});
+ }
+
+ getRegisterInfo() async {
+ registerInfo =
+ RegisterInfoResponse.fromJson(await sharedPref.getObject(NHIC_DATA));
+ registerRequest = await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN);
+ setState(() {
+ registerInfo = registerInfo;
+ });
+ print(await sharedPref.getObject(NHIC_DATA));
+ }
+
+ showLoader(bool isTrue) {
+ setState(() {
+ isLoading = isTrue;
+ });
+ }
+}
diff --git a/lib/pages/login/register.dart b/lib/pages/login/register.dart
index 0d4244b0..3706f452 100644
--- a/lib/pages/login/register.dart
+++ b/lib/pages/login/register.dart
@@ -1,12 +1,22 @@
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/models/Authentication/check_user_status_reponse.dart';
+import 'package:diplomaticquarterapp/models/Authentication/check_user_status_req.dart';
+import 'package:diplomaticquarterapp/models/Authentication/checkpatient_for_registration.dart';
import 'package:diplomaticquarterapp/pages/login/login-type.dart';
+import 'package:diplomaticquarterapp/routes.dart';
+import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
+import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@@ -17,122 +27,258 @@ class Register extends StatefulWidget {
}
class _Register extends State {
- final TextEditingController nationalIDorFile = null;
+ final nationalIDorFile = TextEditingController();
final int loginType = LoginType.loginType;
- final TextEditingController mobileNo = null;
+ String mobileNo;
+ String countryCode = '966';
var isHijri;
-
+ final util = Utils();
DateTime selectedDate;
+ String dob;
+ bool isButtonDisabled = true;
+ final authService = new AuthProvider();
+ final sharedPref = new AppSharedPreferences();
+
+ bool isLoading;
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: TranslationBase.of(context).register,
isShowAppBar: true,
- body: SingleChildScrollView(
- child: Container(
- padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
- height: SizeConfig.realScreenHeight * .9,
- width: SizeConfig.realScreenWidth,
- child: Column(children: [
- Expanded(
- flex: 1,
- child: AppText(
- TranslationBase.of(context).enterNationalId,
- fontSize: SizeConfig.textMultiplier * 3,
- textAlign: TextAlign.left,
- )),
- Expanded(
- flex: 4,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- MobileNo(controller: mobileNo),
- Container(
- child: TextFields(
- controller: nationalIDorFile,
- prefixIcon:
- Icon(Icons.chrome_reader_mode, color: Colors.red),
- padding: EdgeInsets.only(
- top: 20, bottom: 20, left: 10, right: 10),
- hintText: TranslationBase.of(context).nationalID,
- )),
- Row(
- children: [
- Expanded(
- child: Row(
+ body: isLoading == true
+ ? AppCircularProgressIndicator()
+ : SingleChildScrollView(
+ child: Container(
+ padding:
+ EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
+ height: SizeConfig.realScreenHeight * .9,
+ width: SizeConfig.realScreenWidth,
+ child: Column(children: [
+ Expanded(
+ flex: 1,
+ child: AppText(
+ TranslationBase.of(context).enterNationalId,
+ fontSize: SizeConfig.textMultiplier * 3,
+ textAlign: TextAlign.left,
+ )),
+ Expanded(
+ flex: 4,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ MobileNo(
+ onNumberChange: (value) =>
+ {mobileNo = value, validateForm()},
+ onCountryChange: (value) => countryCode = value),
+ Container(
+ child: TextFields(
+ controller: nationalIDorFile,
+ onChanged: (value) => validateForm(),
+ prefixIcon:
+ Icon(Icons.chrome_reader_mode, color: Colors.red),
+ padding: EdgeInsets.only(
+ top: 20, bottom: 20, left: 10, right: 10),
+ hintText: TranslationBase.of(context).nationalID,
+ )),
+ Row(
children: [
- Radio(
- value: 1,
- groupValue: isHijri,
- onChanged: (value) {
- setState(() {
- isHijri = value;
- });
- },
+ Expanded(
+ child: Row(
+ children: [
+ Radio(
+ value: 1,
+ groupValue: isHijri,
+ onChanged: (value) {
+ setState(() {
+ isHijri = value;
+ });
+ validateForm();
+ },
+ ),
+ Text(TranslationBase.of(context).hijriDate),
+ ],
+ ),
),
- Text(TranslationBase.of(context).hijriDate),
- ],
- ),
- ),
- Expanded(
- child: Row(
- children: [
- Radio(
- value: 0,
- groupValue: isHijri,
- onChanged: (value) {
- setState(() {
- isHijri = value;
- });
- },
+ Expanded(
+ child: Row(
+ children: [
+ Radio(
+ value: 0,
+ groupValue: isHijri,
+ onChanged: (value) {
+ setState(() {
+ isHijri = value;
+ });
+ validateForm();
+ },
+ ),
+ Text(TranslationBase.of(context)
+ .gregorianDate),
+ ],
+ ),
),
- Text(TranslationBase.of(context).gregorianDate),
],
),
- ),
- ],
- ),
- Row(children: [
- Expanded(
- child: RaisedButton.icon(
- onPressed: () => {_selectDate(context)},
- icon: Icon(Icons.date_range),
- label: Text(selectedDate != null
- ? "${selectedDate.toLocal()}".split(' ')[0]
- : TranslationBase.of(context).dob)))
- ])
- ],
- ),
- ),
- Expanded(
- flex: 2,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- Row(
- children: [
- Expanded(
- child: DefaultButton(
- TranslationBase.of(context).login,
- () => {},
- ))
+ Row(children: [
+ Expanded(
+ child: isHijri == 1
+ ? TextFields(
+ onChanged: (value) => {dob = value},
+ hintText: 'DD/MM/YYYY',
+ prefixIcon: Icon(Icons.date_range),
+ )
+ : RaisedButton.icon(
+ onPressed: () => {
+ if (isHijri != null)
+ _selectDate(context)
+ },
+ icon: Icon(Icons.date_range),
+ label: Text(selectedDate != null
+ ? "${selectedDate.toLocal()}"
+ .split(' ')[0]
+ : TranslationBase.of(context).dob)))
+ ])
],
),
- ],
- ))
- ]),
- )));
+ ),
+ Expanded(
+ flex: 2,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Row(
+ children: [
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context).registerNow,
+ () => {startRegistration()},
+ textColor: Colors.white,
+ color: isButtonDisabled == true
+ ? Colors.grey
+ : Colors.grey[900]))
+ ],
+ ),
+ ],
+ ))
+ ]),
+ )));
}
Future _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
- firstDate: DateTime(2015, 8),
- lastDate: DateTime(2101));
+ firstDate: DateTime(1950, 8),
+ lastDate: DateTime.now());
if (picked != null && picked != selectedDate)
setState(() {
selectedDate = picked;
});
}
+
+ startRegistration() {
+ if (isButtonDisabled == false) {
+ var request = CheckPatientForRegistration();
+ request.patientMobileNumber = int.parse(mobileNo);
+ request.zipCode = countryCode;
+ request.patientOutSA = countryCode == '966' ? 0 : 1;
+ // if (this.loginType == 1) {
+ request.patientIdentificationID = int.parse(nationalIDorFile.text);
+ request.patientID = 0;
+ request.isRegister = true;
+ // } else {
+ // request.patientIdentificationID = 0;
+ // request.patientID = int.parse(nationalIDorFile.text);
+ // }
+ this.checkPatientForRegisteration(request);
+ }
+ }
+
+ checkPatientForRegisteration(request) {
+ showLoader(true);
+ this
+ .authService
+ .checkPatientForRegisteration(request)
+ .then((response) => {checkUserStatus(response, request)});
+ }
+
+ void validateForm() {
+ if (util.validateIDBox(nationalIDorFile.text, loginType) == true &&
+ mobileNo.length >= 9 &&
+ util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true &&
+ isHijri != null) {
+ setState(() {
+ isButtonDisabled = false;
+ });
+ } else {
+ setState(() {
+ isButtonDisabled = true;
+ });
+ }
+ }
+
+ checkUserStatus(response, CheckPatientForRegistration request) async {
+ showLoader(false);
+ if (response is Map) {
+ var nRequest = request.toJson();
+ nRequest['LogInTokenID'] = response['LogInTokenID'];
+ if (response['hasFile'] == true) {
+ AppToast.showErrorToast(message: response['ErrorEndUserMessage']);
+ } else {
+ nRequest['forRegister'] = true;
+ nRequest['isRegister'] = true;
+ nRequest["PatientIdentificationID"] =
+ nRequest["PatientIdentificationID"].toString();
+ sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, nRequest);
+ sharedPref.setString(LOGIN_TOKEN_ID, response['LogInTokenID']);
+ this.chekUserData(response['LogInTokenID']);
+ }
+ } else {
+ // if (response['ErrorCode'] == '-986') {
+ AppToast.showErrorToast(message: response);
+ //}
+ }
+ }
+
+ chekUserData(loginToken) {
+ // let m = hijri(this.dateOfBirth).locale('en');
+ // // const dateHijri = m.format('iDD/iMM/iYYYY');
+ // const request = {
+ // PatientIdentificationID: this.id.toString(),
+ // // TokenID: token,
+ // DOB: this.dateOption === '1' ? this.dateOfBirth : moment(this.dateOfBirth).format('DD/MM/YYYY'),
+ // IsHijri: Number(this.dateOption)
+ // }
+ showLoader(true);
+ var request = CheckUserStatusRequest();
+ request.patientIdentificationID = nationalIDorFile.text;
+ request.dOB = isHijri == 1
+ ? dob
+ : "${selectedDate.toLocal()}".split(' ')[0].replaceAll('-', '/');
+ request.isHijri = isHijri;
+ request.patientOutSA = countryCode == '966' ? 0 : 1;
+ this.authService.checkUserStatus(request).then((result) => {
+ showLoader(false),
+ if (result is Map)
+ {
+ result = CheckUserStatusResponse.fromJson(result),
+ sharedPref.setObject(NHIC_DATA, result),
+ Navigator.of(context).pushNamed(
+ CONFIRM_LOGIN,
+ )
+ // Navigator.of(context).pushNamed(
+ // REGISTER_INFO,
+ // )
+ }
+ else
+ {AppToast.showErrorToast(message: result)}
+ //this.onRegister();
+ });
+ }
+
+ showLoader(bool isTrue) {
+ setState(() {
+ isLoading = isTrue;
+ });
+ }
}
diff --git a/lib/pages/login/welcome.dart b/lib/pages/login/welcome.dart
index 1f2c0474..b4b05900 100644
--- a/lib/pages/login/welcome.dart
+++ b/lib/pages/login/welcome.dart
@@ -1,14 +1,30 @@
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
+import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
+import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/routes.dart';
-class WelcomeLogin extends StatelessWidget {
+class WelcomeLogin extends StatefulWidget {
@override
+ _WelcomeLogin createState() => _WelcomeLogin();
+}
+
+class _WelcomeLogin extends State {
+ bool isLoading = true;
+ @override
+ void initState() {
+ isLoading = true;
+ // checkUser(context);
+ super.initState();
+ }
+
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: TranslationBase.of(context).welcome,
diff --git a/lib/pages/medical/doctor/doctor_home_page.dart b/lib/pages/medical/doctor/doctor_home_page.dart
index c9bce380..4cce1dc8 100644
--- a/lib/pages/medical/doctor/doctor_home_page.dart
+++ b/lib/pages/medical/doctor/doctor_home_page.dart
@@ -1,5 +1,4 @@
import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
-import 'package:diplomaticquarterapp/core/model/doctor/patient_doctor_appointment.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/my_doctor_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@@ -9,7 +8,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:intl/intl.dart';
import 'doctor_profile_page.dart';
diff --git a/lib/pages/medical/doctor/doctor_profile_page.dart b/lib/pages/medical/doctor/doctor_profile_page.dart
index 61bfd804..79f8c69e 100644
--- a/lib/pages/medical/doctor/doctor_profile_page.dart
+++ b/lib/pages/medical/doctor/doctor_profile_page.dart
@@ -117,7 +117,7 @@ class _DoctorProfilePageState extends State
alignment: Alignment.center,
child: RatingBar.readOnly(
initialRating:
- model.doctorRating.doctorRate.toDouble() ??
+ model.doctorRating.doctorRate?.toDouble() ??
0.0,
size: 35.0,
filledColor: Colors.yellow[700],
diff --git a/lib/pages/medical/labs/laboratory_result_page.dart b/lib/pages/medical/labs/laboratory_result_page.dart
new file mode 100644
index 00000000..216b8adb
--- /dev/null
+++ b/lib/pages/medical/labs/laboratory_result_page.dart
@@ -0,0 +1,39 @@
+import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/medical/laboratory_result_widget.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+class LaboratoryResultPage extends StatelessWidget {
+ final PatientLabOrders patientLabOrders;
+
+ LaboratoryResultPage({Key key, this.patientLabOrders});
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ onModelReady: (model) => model.getLaboratoryResult(
+ invoiceNo: patientLabOrders.invoiceNo,
+ clinicID: patientLabOrders.clinicID,
+ projectID: patientLabOrders.projectID,
+ orderNo: patientLabOrders.orderNo),
+ builder: (_, model, widget) => AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: 'Laboratory result',
+ baseViewModel: model,
+ body: Scaffold(
+ body: ListView.builder(
+ itemBuilder: (context, index) => LaboratoryResultWidget(
+ onTap: () => model.sendLabReportEmail(patientLabOrder: patientLabOrders),
+ billNo: model.patientLabSpecialResult[index].invoiceNo,
+ details: model.patientLabSpecialResult[index].resultDataHTML,
+ ),
+ itemCount: model.patientLabSpecialResult.length,
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/medical/labs/labs_home_page.dart b/lib/pages/medical/labs/labs_home_page.dart
new file mode 100644
index 00000000..00cd82a1
--- /dev/null
+++ b/lib/pages/medical/labs/labs_home_page.dart
@@ -0,0 +1,104 @@
+import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
+import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+import 'laboratory_result_page.dart';
+
+class LabsHomePage extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ onModelReady: (model) => model.getLabs(),
+ builder: (context, LabsViewModel model, widget) => AppScaffold(
+ baseViewModel: model,
+ isShowAppBar: true,
+ appBarTitle: 'Lab Orders',
+ body: SingleChildScrollView(
+ physics: BouncingScrollPhysics(),
+ child: FractionallySizedBox(
+ widthFactor: 1.0,
+ child: Center(
+ child: Column(
+ children: [
+ Row(
+ children: [
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () => model.setFilterType(FilterType.Clinic),
+ child: ListTile(
+ title: const Text('Clinic'),
+ leading: Radio(
+ value: FilterType.Clinic,
+ groupValue: model.filterType,
+ activeColor: Colors.red[800],
+ onChanged: (FilterType value) {
+ model.setFilterType(value);
+ },
+ ),
+ ),
+ ),
+ ),
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () => model.setFilterType(FilterType.Hospital),
+ child: ListTile(
+ title: const Text('Hospital'),
+ leading: Radio(
+ value: FilterType.Hospital,
+ groupValue: model.filterType,
+ activeColor: Colors.red[800],
+ onChanged: (FilterType value) =>
+ model.setFilterType(value),
+ ),
+ ),
+ ),
+ )
+ ],
+ ),
+ ...List.generate(
+ model.patientLabOrdersList.length,
+ (index) => AppExpandableNotifier(
+ title: model.patientLabOrdersList[index].filterName,
+ bodyWidget: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: model
+ .patientLabOrdersList[index].patientLabOrdersList
+ .map((labOrder) {
+ return DoctorCard(
+ onTap: () => Navigator.push(
+ context,
+ FadePage(
+ page: LaboratoryResultPage(
+ patientLabOrders: labOrder,
+ ),
+ ),
+ ),
+ name: labOrder.doctorName,
+ profileUrl: labOrder.doctorImageURL,
+ subName: 'Bill No : ${labOrder.invoiceNo}',
+ date: DateUtil.getMonthDayYearDateFormatted(
+ labOrder.orderDate),
+ );
+ }).toList(),
+ ),
+ ),
+ )
+ ],
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/medical/medical_profile_page.dart b/lib/pages/medical/medical_profile_page.dart
index fbacf528..b8c11b20 100644
--- a/lib/pages/medical/medical_profile_page.dart
+++ b/lib/pages/medical/medical_profile_page.dart
@@ -11,6 +11,7 @@ import 'package:diplomaticquarterapp/pages/insurance/insurance_card_screen.dart'
import 'doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
+import 'labs/labs_home_page.dart';
class MedicalProfilePage extends StatefulWidget {
@override
@@ -63,7 +64,9 @@ class _MedicalProfilePageState extends State {
Expanded(
flex: 1,
child: InkWell(
- onTap: () {},
+ onTap: (){
+
+ },
child: MedicalProfileItem(
title: 'Lab',
imagePath: 'lab_result_icon.png',
@@ -77,10 +80,13 @@ class _MedicalProfilePageState extends State {
children: