Conflicts:
	lib/config/config.dart
	lib/locator.dart
	lib/pages/medical/medical_profile_page.dart
	lib/pages/medical/prescriptions/prescriptions_home_page.dart
merge-requests/34/merge
Mohammad Aljammal 6 years ago
commit 2e0afdb49c

@ -5,16 +5,25 @@
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. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="io.flutter.app.FlutterApplication"
android:label="diplomaticquarterapp"
android:icon="@mipmap/ic_launcher">
android:icon="@mipmap/ic_launcher"
android:label="diplomaticquarterapp">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
@ -22,8 +31,7 @@
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
android:resource="@style/NormalTheme" />
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
@ -31,12 +39,11 @@
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
android:resource="@drawable/launch_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
@ -50,6 +57,7 @@
android:value="2" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

2
ios/.gitignore vendored

@ -30,3 +30,5 @@ Runner/GeneratedPluginRegistrant.*
!default.mode2v3
!default.pbxuser
!default.perspectivev3
/Runner.xcworkspace/contents.xcworkspacedata
/Runner.xcodeproj/project.pbxproj

@ -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;
}
}

@ -127,5 +127,38 @@ const Map<String, Map<String, String>> 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": "عائلتي"},
};

@ -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';

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String> 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<String, dynamic> 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<String>();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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<PatientLabOrders> patientLabOrdersList = List();
PatientLabOrdersList(
{this.filterName, PatientLabOrders patientDoctorAppointment}) {
patientLabOrdersList.add(patientDoctorAppointment);
}
}

@ -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<String, dynamic> json) {
invoiceNo = json['InvoiceNo'];
moduleID = json['ModuleID'];
resultData = json['ResultData'];
resultDataHTML = json['ResultDataHTML'];
resultDataTxt = json['ResultDataTxt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['InvoiceNo'] = this.invoiceNo;
data['ModuleID'] = this.moduleID;
data['ResultData'] = this.resultData;
data['ResultDataHTML'] = this.resultDataHTML;
data['ResultDataTxt'] = this.resultDataTxt;
return data;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String> 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<String, dynamic> 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<String>();
isCVI = json['isCVI'];
isRadMedicalReport = json['isRadMedicalReport'];
} catch (e) {
print(e);
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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<FinalRadiology> finalRadiologyList = List();
FinalRadiologyList({this.filterName, FinalRadiology finalRadiology}) {
finalRadiologyList.add(finalRadiology);
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> body,
post(String endPoint,
{Map<String, dynamic> body,
Function(dynamic response, int statusCode) onSuccess,
Function(String error, int statusCode) onFailure,
}) async {
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);
}
}

@ -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<COCItem> 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<String, dynamic> body = new Map<String, dynamic>();
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);
}
}

@ -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<PatientLabOrders> 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> 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());
}
}

@ -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<PharmacyPrescriptions> 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<PrescriptionReportEnh> 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());
}
}

@ -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<FinalRadiology> finalRadiologyList = List();
String url = '';
Future getRadImageURL({int invoiceNo, int lineItem,int projectId}) async {
hasError = false;
final Map<String, dynamic> body = new Map<String, dynamic>();
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());
}
}

@ -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<FeedbackService>();
List<COCItem> get cOCItemList => _feedbackService.cOCItemList;
Future<bool> 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);
}
}
}

@ -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<LabsService>();
List<PatientLabOrdersList> _patientLabOrdersListClinic = List();
List<PatientLabOrdersList> _patientLabOrdersListHospital = List();
List<PatientLabOrdersList> 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<PatientLabOrdersList> 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<PatientLabOrdersList> 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<PatientLabSpecialResult> 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);
}
}
}

@ -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<PrescriptionsList> _prescriptionsOrderListClinic = List();
List<PrescriptionsList> _prescriptionsOrderListHospital = List();
List<PrescriptionReport> get prescriptionReportList =>
_prescriptionsService.prescriptionReportList;
List<Prescriptions> get prescriptionsList =>
_prescriptionsService.prescriptionsList;
List<PrescriptionsOrder> get prescriptionsHistory => _prescriptionsService.prescriptionsOrderList;
List<PharmacyPrescriptions> get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList ;
List<PrescriptionsList> get prescriptionsOrderList =>
filterType == FilterType.Clinic
? _prescriptionsOrderListClinic
@ -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<PrescriptionReportEnh> 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);
}
}
}

@ -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<RadiologyService>();
List<FinalRadiologyList> _finalRadiologyListClinic = List();
List<FinalRadiologyList> _finalRadiologyListHospital = List();
List<FinalRadiologyList> 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<FinalRadiologyList> 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<FinalRadiologyList> 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();
}
}

@ -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());
}

@ -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> 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});

@ -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<String, dynamic> json) {
patientMobileNumber = json['PatientMobileNumber'];
@ -72,6 +73,7 @@ class CheckActivationCodeReq {
sessionID = json['SessionID'];
isDentalAllowedBackend = json['isDentalAllowedBackend'];
deviceTypeID = json['DeviceTypeID'];
forRegisteration = json['ForRegisteration'];
}
Map<String, dynamic> 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;
}
}

@ -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});

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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> 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<ListPrivilege>();
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<String, dynamic> json) {
iD = json['ID'];
serviceName = json['ServiceName'];
previlege = json['Previlege'];
region = json['Region'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ID'] = this.iD;
data['ServiceName'] = this.serviceName;
data['Previlege'] = this.previlege;
data['Region'] = this.region;
return data;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -35,4 +35,10 @@ class _BaseViewState<T extends BaseViewModel> extends State<BaseView<T>> {
child: Consumer<T>(builder: widget.builder),
);
}
@override
void dispose() {
if (model != null) model = null;
super.dispose();
}
}

@ -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<MyFamily> {
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: <Widget>[
TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
],
),
TabBarView(
children: [
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
],
)
],
)));
}
}

@ -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<StatusFeedbackPage> {
@override
Widget build(BuildContext context) {
return BaseView<FeedbackViewModel>(
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: <Widget>[
SizedBox(height: 8,),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: <Widget>[
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Texts('${model.cOCItemList[index].cOCTitle}'),
Texts(
'Number :${model.cOCItemList[index].itemID}',
variant: 'overline',
),
],
),
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
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
},
),
),
),
),
),
);
}
}

@ -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<FeedbackHomePage>
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: <Widget>[
Positioned(
bottom: 1,
left: 0,
right: 0,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Theme.of(context)
.scaffoldBackgroundColor
.withOpacity(0.8),
height: 70.0,
),
),
),
Center(
child: Container(
height: 60.0,
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: <Widget>[
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: <Widget>[
SendFeedbackPage(),
StatusFeedbackPage()
],
),
)
],
),
),
);
}
}

@ -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<SendFeedbackPage> {
TextEditingController titleController = TextEditingController();
TextEditingController messageController = TextEditingController();
MessageType messageType = MessageType.NON;
String _selected = "not selected";
List<String> images = [];
String title;
String message;
final formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return BaseView<FeedbackViewModel>(
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
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<FeedbackTypeDialog> {
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: <Widget>[
Container(
// padding: const EdgeInsets.all(10.0),
child: Column(
children: <Widget>[
Divider(
height: 2.5,
color: Colors.grey[500],
),
Row(
children: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
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,
)),
),
)),
],
)
],
)),
],
);
}
}

@ -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<HomePage> {
@override
Widget build(BuildContext context) {
return BaseView<PharmacyViewModel>(
onModelReady: (model) => model.getMedicine(),
builder: (BuildContext context, PharmacyViewModel model, Widget child) =>
AppScaffold(
baseViewModel: model,
body: Column(
return AppScaffold(
body: Container(
width: double.infinity,
child: FractionallySizedBox(
widthFactor: 0.95,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
InkWell(
onTap: () {
model.getMedicine();
},
onTap: ()=>Navigator.push(context, FadePage(page: FeedbackHomePage())),
child: Container(
child: Texts('call api'),
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<DoctorViewModel>(
// 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<PharmaciesModel> hospitals) => ListView.builder(
itemCount: hospitals.length,
itemBuilder: (BuildContext context, int index) => Container(
child: Texts(hospitals[index].itemDes),
),
);
}
}

@ -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<LandingPage> {
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<LandingPage> {
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<LandingPage> {
}
}
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);
}
}

@ -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<ConfirmLogin> {
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<ConfirmLogin> {
bool onlySMSBox = false;
var userData;
static BuildContext _context;
static bool _loading;
int fingrePrintBefore;
@override
void initState() {
_getAvailableBiometrics();
@ -76,10 +84,71 @@ class _ConfirmLogin extends State<ConfirmLogin> {
children: <Widget>[
Expanded(
flex: 3,
child: Column(
child: user != null && isMoreOption == false
? Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
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: <Widget>[
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: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
@ -91,25 +160,28 @@ class _ConfirmLogin extends State<ConfirmLogin> {
TranslationBase.of(context)
.verifyLoginWith,
fontSize:
SizeConfig.textMultiplier * 3.5,
SizeConfig.textMultiplier *
3.5,
textAlign: TextAlign.left,
)
: AppText(
TranslationBase.of(context)
.verifyFingerprint2,
fontSize:
SizeConfig.textMultiplier * 2.5,
SizeConfig.textMultiplier *
2.5,
textAlign: TextAlign.left,
),
])),
Expanded(
flex: 4,
user != null && isMoreOption == false
? Expanded(
flex: 2,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
onlySMSBox == false
? Row(
Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
@ -121,178 +193,34 @@ class _ConfirmLogin extends State<ConfirmLogin> {
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: getButton(
user.logInType))),
Expanded(child: getButton(5))
])
]))
: Expanded(
flex: 4,
child: Column(
mainAxisAlignment:
MainAxisAlignment
.center,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
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(
onlySMSBox == false
? Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
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(3)),
Expanded(child: getButton(2))
],
)
: SizedBox(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
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,
MainAxisAlignment.center,
children: <Widget>[
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: <Widget>[
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(child: getButton(1)),
Expanded(child: getButton(4))
],
),
]),
@ -302,22 +230,22 @@ class _ConfirmLogin extends State<ConfirmLogin> {
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
// Row(
// children: <Widget>[
// 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: <Widget>[
Expanded(
child: DefaultButton(
TranslationBase.of(context)
.useAnotherAccount,
() => {
Navigator.of(context).pushNamed(
LOGIN_TYPE,
)
},
)),
],
)
: SizedBox(),
],
))
],
@ -340,8 +268,12 @@ class _ConfirmLogin extends State<ConfirmLogin> {
}
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<ConfirmLogin> {
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<ConfirmLogin> {
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<ConfirmLogin> {
}
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<ConfirmLogin> {
});
}
setUser() async {
user = SelectDeviceIMEIRES.fromJson(
await sharedPref.getObject(IMEI_USER_DATA));
}
setDefault() async {
// this.user = this.cs.sharedService.getSharedData(
// AuthenticationService.IMEI_USER_DATA,
// false
// );
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,40 +457,74 @@ class _ConfirmLogin extends State<ConfirmLogin> {
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
.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.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
this.loginTokenID = result.logInTokenID,
this
.sharedPref
.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
this
.sharedPref
.setString(TOKEN, result.authenticationTokenID),
this.checkIfUserAgreedBefore(result),
loading(false)
// 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);
}),
}
});
}
@ -526,13 +533,17 @@ class _ConfirmLogin extends State<ConfirmLogin> {
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<ConfirmLogin> {
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <Widget>[
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;
});
}
}

@ -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<Login> {
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<Login> {
() => {this.startLogin()},
color: isButtonDisabled == true
? Colors.grey
: Colors.grey[600],
: Colors.grey[900],
textColor: Colors.white,
))
],
@ -113,9 +123,9 @@ class _Login extends State<Login> {
}
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<Login> {
}
}
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<Login> {
}
else
{
if (value.IsAuthenticated) {this.checkActivationCode()}
if (value['IsAuthenticated']) {this.checkActivationCode()}
}
});
}
checkActivationCode({code}) async {
Map<String, dynamic> 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),
});
}
checkActivationCode() {}
showLoader(bool isTrue) {
setState(() {
isLoading = isTrue;

@ -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<RegisterInfo> {
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: <Widget>[
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: <Widget>[
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: <Widget>[
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: <String>[
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: <String>[
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: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Expanded(
child: DefaultButton(
TranslationBase.of(context).next,
() => {nextPage()},
textColor: Colors.white,
))
],
)
],
)
: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Row(
crossAxisAlignment:
CrossAxisAlignment.end,
children: <Widget>[
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;
});
}
}

@ -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,20 +27,30 @@ class Register extends StatefulWidget {
}
class _Register extends State<Register> {
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(
body: isLoading == true
? AppCircularProgressIndicator()
: SingleChildScrollView(
child: Container(
padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
padding:
EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth,
child: Column(children: <Widget>[
@ -46,10 +66,14 @@ class _Register extends State<Register> {
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
MobileNo(controller: mobileNo),
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(
@ -68,6 +92,7 @@ class _Register extends State<Register> {
setState(() {
isHijri = value;
});
validateForm();
},
),
Text(TranslationBase.of(context).hijriDate),
@ -84,9 +109,11 @@ class _Register extends State<Register> {
setState(() {
isHijri = value;
});
validateForm();
},
),
Text(TranslationBase.of(context).gregorianDate),
Text(TranslationBase.of(context)
.gregorianDate),
],
),
),
@ -94,11 +121,21 @@ class _Register extends State<Register> {
),
Row(children: <Widget>[
Expanded(
child: RaisedButton.icon(
onPressed: () => {_selectDate(context)},
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]
? "${selectedDate.toLocal()}"
.split(' ')[0]
: TranslationBase.of(context).dob)))
])
],
@ -113,9 +150,12 @@ class _Register extends State<Register> {
children: <Widget>[
Expanded(
child: DefaultButton(
TranslationBase.of(context).login,
() => {},
))
TranslationBase.of(context).registerNow,
() => {startRegistration()},
textColor: Colors.white,
color: isButtonDisabled == true
? Colors.grey
: Colors.grey[900]))
],
),
],
@ -128,11 +168,117 @@ class _Register extends State<Register> {
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;
});
}
}

@ -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<WelcomeLogin> {
bool isLoading = true;
@override
void initState() {
isLoading = true;
// checkUser(context);
super.initState();
}
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: TranslationBase.of(context).welcome,

@ -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';

@ -117,7 +117,7 @@ class _DoctorProfilePageState extends State<DoctorProfilePage>
alignment: Alignment.center,
child: RatingBar.readOnly(
initialRating:
model.doctorRating.doctorRate.toDouble() ??
model.doctorRating.doctorRate?.toDouble() ??
0.0,
size: 35.0,
filledColor: Colors.yellow[700],

@ -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<LabsViewModel>(
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,
),
),
),
);
}
}

@ -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<LabsViewModel>(
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: <Widget>[
Row(
children: <Widget>[
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(),
),
),
)
],
),
),
),
),
),
);
}
}

@ -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<MedicalProfilePage> {
Expanded(
flex: 1,
child: InkWell(
onTap: () {},
onTap: (){
},
child: MedicalProfileItem(
title: 'Lab',
imagePath: 'lab_result_icon.png',
@ -77,12 +80,15 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
children: <Widget>[
Expanded(
flex: 1,
child: InkWell(
onTap: () => Navigator.push(context, FadePage(page: RadiologyHomePage())),
child: MedicalProfileItem(
title: 'Radiology',
imagePath: 'radiology_icon.png',
subTitle: 'Service',
),
),
),
Expanded(
flex: 1,
child: InkWell(
@ -128,7 +134,7 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
subTitle: 'Card',
),
),
),
)
],
),
Row(
@ -143,6 +149,12 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
),
Expanded(
flex: 1,
child: MedicalProfileItem(
title: 'Vital Signs',
imagePath: 'medical_history_icon.png',
subTitle: 'Reports',
),
)
child: InkWell(
onTap: () {
Navigator.push(
@ -157,9 +169,6 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
),
],
),
Row(
children: <Widget>[],
)
],
),
),

@ -0,0 +1,100 @@
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.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 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
class PharmacyForPrescriptionsPage extends StatelessWidget {
final PrescriptionReport prescriptionReport;
PharmacyForPrescriptionsPage({Key key, this.prescriptionReport});
@override
Widget build(BuildContext context) {
return BaseView<PrescriptionsViewModel>(
onModelReady: (model) => model.getListPharmacyForPrescriptions(itemId: prescriptionReport.itemID),
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
appBarTitle: 'Title',
baseViewModel: model,
body: ListView.builder(
itemBuilder: (context, index) => Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10, left: 10, right: 10),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(color: Colors.grey[200], width: 0.5),
),
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)),
child: Image.network(
model.pharmacyPrescriptionsList[index].projectImageURL,
fit: BoxFit.cover,
width: 60,
height: 70,
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(model.pharmacyPrescriptionsList[index]
.locationDescription),
SizedBox(
height: 5,
),
Texts(model.pharmacyPrescriptionsList[index].cityName),
],
),
),
),
InkWell(
onTap: () {
MapsLauncher.launchCoordinates(
double.parse(
model.pharmacyPrescriptionsList[index].latitude),
double.parse(
model.pharmacyPrescriptionsList[index].longitude));
},
child: Icon(
Icons.pin_drop,
size: 18,
color: Colors.red[900],
),
),
SizedBox(
width: 15,
),
InkWell(
onTap: Feedback.wrapForTap((){
launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}");
},context),
child: Container(
child: Icon(
Icons.call,
size: 18,
color: Colors.red[900],
),
),
)
],
),
),
itemCount: model.pharmacyPrescriptionsList.length,
),
),
);
}
}

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.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';
@ -53,16 +55,20 @@ class PrescriptionDetailsPage extends StatelessWidget {
Container(
margin: EdgeInsets.all(8),
child: InkWell(
onTap: () {},
onTap: () => Navigator.push(
context,
FadePage(
page: PharmacyForPrescriptionsPage(
prescriptionReport: prescriptionReport),
),
),
child: Center(
child: Column(
children: <Widget>[
Container(
width: 50,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.rectangle
),
color: Colors.white, shape: BoxShape.rectangle),
child: Column(
children: <Widget>[
Icon(
@ -73,9 +79,10 @@ class PrescriptionDetailsPage extends StatelessWidget {
],
),
),
SizedBox(height: 5,),
SizedBox(
height: 5,
),
Texts('Ports')
],
),
)),

@ -1,13 +0,0 @@
import 'package:flutter/cupertino.dart';
class PrescriptionsHistory extends StatefulWidget {
@override
_PrescriptionsHistoryState createState() => _PrescriptionsHistoryState();
}
class _PrescriptionsHistoryState extends State<PrescriptionsHistory> {
@override
Widget build(BuildContext context) {
return Container();
}
}

@ -0,0 +1,108 @@
import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/buttons/BottomButton.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 PrescriptionsHistoryDetailsPage extends StatelessWidget {
final PrescriptionsOrder prescriptionsOrder;
PrescriptionsHistoryDetailsPage({Key key,this.prescriptionsOrder});
@override
Widget build(BuildContext context) {
return BaseView<PrescriptionsViewModel>(
onModelReady: (model) => model.getPrescriptionReportEnh(prescriptionsOrder: prescriptionsOrder),
builder: (_,model,widget) => AppScaffold(
isShowAppBar: true,
appBarTitle: 'Order History',
baseViewModel: model,
body: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Container(
margin: EdgeInsets.all(15.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Table(
border: TableBorder.symmetric(
inside: BorderSide(width: 0.5),
outside: BorderSide(width: 0.5)),
children: [
TableRow(
children: [
Container(
height: 50,
color: Colors.white,
child: Center(child: Texts('Order No'),),
),
Container(
height: 50,
color: Colors.white,
child: Center(child: Texts('Date'),),
),
]
),
TableRow(
children: [
Container(
height: 50,
color: Colors.white,
child: Center(child: Texts('12655'),),
),
Container(
height: 50,
color: Colors.white,
child: Center(child: Texts('2020-7-15'),),
),
]
)
],
),
SizedBox(height: 15,),
...List.generate(model.prescriptionReportEnhList.length, (index) => Container(
margin: EdgeInsets.all(8.0),
color: Colors.white,
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)),
child: Image.network(
model.prescriptionReportEnhList[index].imageSRCUrl,
fit: BoxFit.cover,
width: 60,
height: 70,
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(model.prescriptionReportEnhList[index]
.itemDescription),
],
),
),
),
],
),
))
],
),
),
),
bottomSheet: Container(
//padding: EdgeInsets.all(8.0),
// margin: EdgeInsets.all(8.0),
child: BottomButton(label: 'Cancel order',color: Colors.red[300],),
),
),
);
}
}

@ -0,0 +1,83 @@
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history_details_page.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.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';
class PrescriptionsHistoryPage extends StatelessWidget {
final PrescriptionsViewModel prescriptionsViewModel;
PrescriptionsHistoryPage({Key key, this.prescriptionsViewModel});
@override
Widget build(BuildContext context) {
return AppScaffold(
baseViewModel: prescriptionsViewModel,
body: ListView.builder(
physics: BouncingScrollPhysics(),
itemBuilder: (context, index) => InkWell(
onTap: () => Navigator.push(
context,
FadePage(
page: PrescriptionsHistoryDetailsPage(
prescriptionsOrder:
prescriptionsViewModel.prescriptionsHistory[index],
),
),
),
child: Container(
padding: EdgeInsets.all(15.0),
margin: EdgeInsets.all(8.0),
decoration:
BoxDecoration(shape: BoxShape.rectangle, color: Colors.white),
child: Row(
children: <Widget>[
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
DateUtil.getDayMonthYearHourMinuteDateFormatted(
prescriptionsViewModel
.prescriptionsHistory[index].createdOn),
fontWeight: FontWeight.w300,
),
SizedBox(
height: 5,
),
Texts(
'Order No ${prescriptionsViewModel.prescriptionsHistory[index].iD}'),
SizedBox(
height: 5,
),
Texts(
'${prescriptionsViewModel.prescriptionsHistory[index].descriptionN}'),
SizedBox(
height: 5,
),
Texts(
'Order Details',
fontWeight: FontWeight.w300,
),
SizedBox(
height: 5,
),
],
),
),
Icon(
Icons.arrow_forward_ios,
size: 25,
)
],
),
),
),
itemCount: prescriptionsViewModel.prescriptionsHistory.length,
),
);
}
}

@ -2,7 +2,7 @@ import 'dart:ui';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_page.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -66,7 +66,7 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage>
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 5.7),
width: 0.7),
),
color: Colors.white),
child: Center(
@ -111,7 +111,9 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage>
PrescriptionsPage(
prescriptionsViewModel: model,
),
PrescriptionsHistory()
PrescriptionsHistoryPage(
prescriptionsViewModel: model,
)
],
),
)

@ -0,0 +1,67 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/radiology_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class RadiologyDetailsPage extends StatelessWidget {
final FinalRadiology finalRadiology;
RadiologyDetailsPage({Key key, this.finalRadiology});
@override
Widget build(BuildContext context) {
return BaseView<RadiologyViewModel>(
onModelReady: (model) => model.getRadImageURL(
projectId: finalRadiology.projectID,
lineItem: finalRadiology.invoiceLineItemNo,
invoiceNo: finalRadiology.invoiceNo),
builder: (_, model, widget) => AppScaffold(
appBarTitle: 'Radiology Report',
isShowAppBar: true,
baseViewModel: model,
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text('${finalRadiology.reportData}',textAlign: TextAlign.center,),
],
),
),
bottomSheet: Container(
width: double.infinity,
height: MediaQuery.of(context).size.height * 0.2,
color: Colors.grey[100],
child: Column(
children: <Widget>[
Divider(),
Container(
width: MediaQuery.of(context).size.width * 0.8,
child: Button(
onTap: () {
launch(model.radImageURL);
},
label: 'Open Radio Image',
backgroundColor: Colors.grey[800],
),
),
Container(
width: MediaQuery.of(context).size.width * 0.8,
child: Button(
onTap: () => model.sendRadReportEmail(
finalRadiology: finalRadiology),
label: 'Send Copy',
loading: model.state == ViewState.BusyLocal,
backgroundColor: Colors.red[800],
),
)
],
),
)),
);
}
}

@ -0,0 +1,102 @@
import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/radiology_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_page.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';
class RadiologyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BaseView<RadiologyViewModel>(
onModelReady: (model) => model.getPatientRadOrders(),
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
appBarTitle: 'Radiology',
baseViewModel: model,
body: FractionallySizedBox(
widthFactor: 1.0,
child: ListView(
physics: BouncingScrollPhysics(),
children: <Widget>[
Row(
children: <Widget>[
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.finalRadiologyList.length,
(index) => AppExpandableNotifier(
title: model
.finalRadiologyList[index].filterName,
bodyWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: model
.finalRadiologyList[index].finalRadiologyList
.map((radiology) {
return InkWell(
onTap: () => Navigator.push(
context,
FadePage(
page: RadiologyDetailsPage(finalRadiology: radiology,),
),
),
child: DoctorCard(
name: radiology.doctorName,
profileUrl: radiology.doctorImageURL,
subName: '${radiology.projectName} \nBill No ${radiology.invoiceNo}',
date: DateUtil.getMonthDayYearDateFormatted(
radiology.orderDate),
),
);
}).toList(),
)),
)
],
),
),
),
);
}
}

@ -1,10 +1,13 @@
import 'package:diplomaticquarterapp/pages/family/my-family.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/login/confirm-login.dart';
import 'package:diplomaticquarterapp/pages/login/forgot-password.dart';
import 'package:diplomaticquarterapp/pages/login/register-info.dart';
import 'package:diplomaticquarterapp/pages/login/welcome.dart';
import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/pages/login/login.dart';
import 'package:diplomaticquarterapp/pages/login/register.dart';
import 'package:flutter/material.dart';
const String INIT_ROUTE = '/';
const String ROOT = 'root';
@ -16,6 +19,8 @@ const String LOGIN_PAGE = 'login-page';
const String FORGOT_PASSWORD = 'forgot-password';
const String REGISTER = 'register';
const String CONFIRM_LOGIN = 'confrim-login';
const String REGISTER_INFO = 'register-info';
const String MY_FAMILIY = 'my-family';
var routes = {
// ROOT: (_) => RootPage(),
HOME: (_) => LandingPage(),
@ -24,5 +29,7 @@ var routes = {
LOGIN_PAGE: (_) => Login(),
FORGOT_PASSWORD: (_) => ForgotPassword(),
REGISTER: (_) => Register(),
CONFIRM_LOGIN: (_) => ConfirmLogin()
CONFIRM_LOGIN: (_) => ConfirmLogin(),
REGISTER_INFO: (_) => RegisterInfo(),
MY_FAMILIY: (_) => MyFamily()
};

@ -1,19 +1,17 @@
import 'dart:convert';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.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/get_mobile_info_request.dart';
import 'package:diplomaticquarterapp/models/Authentication/get_mobile_info_response.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_user_status_req.dart';
import 'package:diplomaticquarterapp/models/Authentication/checkpatient_for_registration.dart';
import 'package:diplomaticquarterapp/models/Authentication/insert_device_imei_request.dart';
import 'package:diplomaticquarterapp/models/Authentication/register_user_requet.dart';
import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
import 'package:diplomaticquarterapp/models/Authentication/registered_authenticated_user_req.dart';
import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
import 'package:diplomaticquarterapp/models/Request.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/cupertino.dart';
// SharedPreferences sharedPref = new SharedPreferences();
@ -29,11 +27,18 @@ const GET_MOBILE_INFO = '/Authentication.svc/REST/GetMobileLoginInfo';
const SEND_ACTIVATION_CODE =
'/Authentication.svc/REST/SendActivationCodebyOTPNotificationType';
const CHECK_ACTIVATION_CODE = '/Authentication.svc/REST/CheckActivationCode';
const CHECK_PATIENT_FOR_REGISTRATION =
"/Authentication.svc/REST/CheckPatientForRegisteration";
const CHECK_USER_STATUS = "/NHIC.svc/REST/GetPatientInfo";
const REGISTER_USER = '/Authentication.svc/REST/PatientRegistration';
const LOGGED_IN_USER_URL =
'/MobileNotifications.svc/REST/Insert_PatientMobileDeviceInfo';
class AuthProvider with ChangeNotifier {
bool isLogin = false;
bool isLoading = true;
var authenticatedUser;
dynamic authenticatedUser;
AuthProvider() {
getUserAuthentication();
}
@ -89,6 +94,7 @@ class AuthProvider with ChangeNotifier {
var request =
AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE));
var newRequest = INSERTDeviceIMEIRequest();
var imei = await sharedPref.getString(PUSH_TOKEN);
// if (!request.) {
newRequest.iMEI = imei;
@ -99,6 +105,13 @@ class AuthProvider with ChangeNotifier {
newRequest.biometricEnabled = false;
newRequest.preferredLanguage = int.parse(request.preferredLanguage) ?? 1;
newRequest.logInTypeID = lastLogin ?? 1;
newRequest.patientID = request.patientID;
newRequest.mobileNo = request.mobileNumber;
newRequest.identificationNo = request.patientIdentificationNo;
newRequest.patientIdentificationNo = request.patientIdentificationNo;
newRequest.patientType = request.patientType;
newRequest.setupID = request.setupID;
newRequest.tokenID = await sharedPref.getString(TOKEN);
// }
await new BaseAppClient().post(INSERT_DEVICE_IMEI,
@ -121,7 +134,8 @@ class AuthProvider with ChangeNotifier {
request['IMEI'] = imei;
await new BaseAppClient().post(SELECT_DEVICE_IMEI,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
localRes = SelectDeviceIMEIRES.fromJson(
response['Patient_SELECTDeviceIMEIbyIMEIList'][0]);
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request);
@ -138,7 +152,7 @@ class AuthProvider with ChangeNotifier {
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.languageID = 2;
request.languageID = LANGUAGE_ID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1;
try {
dynamic localRes;
@ -160,7 +174,7 @@ class AuthProvider with ChangeNotifier {
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.languageID = 2;
request.languageID = LANGUAGE_ID;
request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false;
@ -184,16 +198,16 @@ class AuthProvider with ChangeNotifier {
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.languageID = 2;
request.languageID = LANGUAGE_ID;
request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false;
try {
var localRes;
dynamic localRes;
await new BaseAppClient().post(SEND_ACTIVATION_CODE,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
authenticatedUser = localRes;
authenticatedUser = CheckActivationCode.fromJson(localRes);
}, onFailure: (String error, int statusCode) {
throw error;
}, body: request.toJson());
@ -204,31 +218,36 @@ class AuthProvider with ChangeNotifier {
}
}
Future<CheckActivationCode> checkActivationCode(request, value) async {
Future<dynamic> checkActivationCode(request, {value}) async {
var neRequest = CheckActivationCodeReq.fromJson(request);
neRequest.activationCode = value ?? "0000";
neRequest.isSilentLogin = value != null ? false : true;
neRequest.isRegister = false;
neRequest.versionID = VERSION_ID;
neRequest.channel = CHANNEL;
neRequest.iPAdress = IP_ADDRESS;
neRequest.generalid = GENERAL_ID;
neRequest.languageID = 2;
neRequest.languageID = LANGUAGE_ID;
neRequest.deviceTypeID = DeviceTypeID;
neRequest.patientOutSA = neRequest.zipCode == '966' ? 0 : 1;
neRequest.projectOutSA = neRequest.zipCode == '966' ? 0 : 1;
neRequest.isDentalAllowedBackend = false;
try {
neRequest.forRegisteration =
neRequest.isRegister != null ? neRequest.isRegister : false;
neRequest.isRegister = false;
dynamic localRes;
try {
await new BaseAppClient().post(CHECK_ACTIVATION_CODE,
onSuccess: (dynamic response, int statusCode) {
localRes = CheckActivationCode.fromJson(response);
localRes = response; //CheckActivationCode.fromJson();
}, onFailure: (String error, int statusCode) {
throw error;
localRes = error;
return Future.value(error);
// throw error;
}, body: neRequest.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
//return Future.value(error);
}
}
@ -236,4 +255,109 @@ class AuthProvider with ChangeNotifier {
this.isLogin = true;
return authenticatedUser;
}
Future<dynamic> checkPatientForRegisteration(
CheckPatientForRegistration request) async {
request.versionID = VERSION_ID;
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.deviceTypeID = DeviceTypeID;
request.languageID = LANGUAGE_ID;
request.isRegister = false;
// request.tokenID = '';
dynamic localRes;
try {
await new BaseAppClient().post(CHECK_PATIENT_FOR_REGISTRATION,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
throw error;
}
}
Future<dynamic> checkUserStatus(CheckUserStatusRequest request) async {
request.versionID = VERSION_ID;
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.deviceTypeID = DeviceTypeID;
request.languageID = LANGUAGE_ID;
// request.tokenID = '';
dynamic localRes;
try {
await new BaseAppClient().post(CHECK_USER_STATUS,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
throw error;
}
}
Future<dynamic> registerUser(RegisterUserRequest request) async {
request.versionID = VERSION_ID;
request.channel = CHANNEL;
request.iPAdress = IP_ADDRESS;
request.generalid = GENERAL_ID;
request.deviceTypeID = DeviceTypeID;
request.languageID = LANGUAGE_ID;
// request.tokenID = '';
dynamic localRes;
try {
await new BaseAppClient().post(REGISTER_USER,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
throw error;
}
}
Future registeredAuthenticatedUser(
AuthenticatedUser user, deviceToken, lat, long) async {
var request = new RegisteredAuthenticatedUserRequest();
request.deviceToken = deviceToken;
request.voipToken =
""; //this.cs.sharedService.getSharedData(AuthenticationService.APNS_TOKEN, false);
request.deviceType = DeviceTypeID.toString();
request.patientMobileNumber = '0' + user.mobileNumber;
request.nationalID = user.patientIdentificationNo;
request.gender = user.gender;
request.patientID = user.patientID;
request.patientOutSA = user.outSA;
request.loginType = await sharedPref.getInt(LAST_LOGIN) ?? 1;
request.mACAddress = '00:00:00:00:00:00';
request.latitude = lat;
request.longitude = long;
request.languageID = int.parse(user.preferredLanguage);
dynamic localRes;
try {
await new BaseAppClient().post(LOGGED_IN_USER_URL,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
throw error;
}
}
}

@ -1,5 +1,5 @@
import 'package:intl/intl.dart';
class DateUtil {
/// convert String To Date function
/// [date] String we want to convert
static DateTime convertStringToDate(String date) {
@ -91,7 +91,6 @@ class DateUtil {
}
}
/// get data formatted like Apr 26,2020
/// [dateTime] convert DateTime to data formatted
static String getMonthDayYearDateFormatted(DateTime dateTime) {
@ -105,11 +104,9 @@ class DateUtil {
return "";
}
/// get data formatted like 26/4/2020
/// [dateTime] convert DateTime to data formatted
static String getDayMonthYearDateFormatted(DateTime dateTime) {
print(dateTime);
if (dateTime != null)
return dateTime.day.toString() +
"/" +
@ -119,4 +116,30 @@ class DateUtil {
else
return "";
}
/// get data formatted like 26/4/2020 10:30
/// [dateTime] convert DateTime to data formatted
static String getDayMonthYearHourMinuteDateFormatted(DateTime dateTime) {
if (dateTime != null)
return dateTime.day.toString() +
"/" +
dateTime.month.toString() +
"/" +
dateTime.year.toString() +
" " +
dateTime.hour.toString() +
":" +
dateTime.minute.toString();
else
return "";
}
static convertISODateToJsonDate(String isoDate) {
return "/Date(" +
DateFormat('mm-dd-yyy')
.parse(isoDate)
.millisecondsSinceEpoch
.toString() +
")/";
}
}

@ -168,6 +168,32 @@ class TranslationBase {
localizedValues['notification'][locale.languageCode];
String get appsetting => localizedValues['app-settings'][locale.languageCode];
String get rateApp => localizedValues['rate-app'][locale.languageCode];
String get moreVerification =>
localizedValues['more-verify'][locale.languageCode];
String get welcomeBack =>
localizedValues['welcome-back'][locale.languageCode];
String get accountInfo =>
localizedValues['account-info'][locale.languageCode];
String get useAnotherAccount =>
localizedValues['another-acc'][locale.languageCode];
String get next => localizedValues['next'][locale.languageCode];
String get firstName => localizedValues['first-name'][locale.languageCode];
String get middleName => localizedValues['middle-name'][locale.languageCode];
String get lastName => localizedValues['last-name'][locale.languageCode];
String get male => localizedValues['male'][locale.languageCode];
String get female => localizedValues['female'][locale.languageCode];
String get prefferedLanguage =>
localizedValues['preferred-language'][locale.languageCode];
String get english => localizedValues['english'][locale.languageCode];
String get arabic => localizedValues['arabic'][locale.languageCode];
String get registrLocation =>
localizedValues['locations-register'][locale.languageCode];
String get ksa => localizedValues['ksa'][locale.languageCode];
String get dubai => localizedValues['dubai'][locale.languageCode];
String get enterEmail => localizedValues['enter-email'][locale.languageCode];
String get family => localizedValues['family'][locale.languageCode];
String get myFamilyFiles =>
localizedValues['family-title'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -43,7 +43,8 @@ class Utils {
FocusScope.of(context).unfocus();
}
bool isSAUDIIDValid(String id) {
bool isSAUDIIDValid(String id, type) {
if (type == 1) {
if (id == null) {
return false;
}
@ -79,5 +80,20 @@ class Utils {
}
} catch (err) {}
return false;
} else {
return true;
}
}
bool validateIDBox(String value, type) {
Pattern pattern = loginIDPattern(type); //r'^\d+(?:\.\d+)?$';
RegExp regex = new RegExp(pattern);
return regex.hasMatch(value);
}
String loginIDPattern(loginType) {
var length = loginType == 1 ? 10 : 7;
return "([0-9]{" + length.toString() + "})";
}
}

@ -0,0 +1,141 @@
import 'dart:convert';
import 'dart:io';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:feather_icons_flutter/feather_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
class ImageOptions {
static showImageOptions(BuildContext context, Function(String) image) {
showModalBottomSheet(
backgroundColor: Colors.transparent,
context: context,
builder: (BuildContext bc) {
return _BottomSheet(
children: <Widget>[
_BottomSheetItem(
title: "Select file souse",
),
_BottomSheetItem(
title: "Gallery",
icon: FeatherIcons.image,
onTap: () async {
File _image =
await ImagePicker.pickImage(source: ImageSource.gallery);
String fileName = _image.path;
final bytes = File(fileName).readAsBytesSync();
String base64Encode = base64.encode(bytes);
if (base64Encode != null) {
image(base64Encode);
}
},
),
_BottomSheetItem(
title: "Camera",
icon: FeatherIcons.camera,
onTap: () async {
File _image =
await ImagePicker.pickImage(source: ImageSource.camera);
String fileName = _image.path;
final bytes = File(fileName).readAsBytesSync();
String base64Encode = base64.encode(bytes);
if (base64Encode != null) {
image(base64Encode);
}
},
),
_BottomSheetItem(
title: "Cancel",
onTap: (){},
)
],
);
});
}
}
class _BottomSheet extends StatelessWidget {
final List<Widget> children;
_BottomSheet({Key key, @required this.children}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 12.0),
decoration: BoxDecoration(
color: Theme.of(context).backgroundColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.0), topRight: Radius.circular(16.0))),
child: SafeArea(
top: false,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Theme.of(context).dividerColor,
borderRadius: BorderRadius.circular(3.0)),
width: 40.0,
height: 6.0,
),
...children
],
),
),
);
}
}
class _BottomSheetItem extends StatelessWidget {
final Function onTap;
final IconData icon;
final String title;
final ITEM_COLOR color;
_BottomSheetItem(
{Key key,
this.onTap,
@required this.title,
this.icon,
this.color = ITEM_COLOR.primary})
: super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
if (onTap != null) {
Navigator.pop(context);
onTap();
}
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 18.0, vertical: 18.0),
child: Row(
children: <Widget>[
if (icon != null)
Icon(
icon,
color: color == ITEM_COLOR.error
? Theme.of(context).errorColor
: Theme.of(context).primaryColor,
size: 18.0,
),
if (icon != null) SizedBox(width: 24.0),
Texts(
title ?? "",
style: "bodyText2",
color: color == ITEM_COLOR.error
? Theme.of(context).errorColor
: null,
),
],
),
),
);
}
}
enum ITEM_COLOR { primary, error }

@ -46,7 +46,7 @@ class DoctorCard extends StatelessWidget {
children: <Widget>[
Container(
width: 20,
height: date ==null ?100 : 130,
height: date == null ? 100 : 130,
decoration: BoxDecoration(
color: Colors.red[900],
borderRadius: BorderRadius.only(
@ -91,8 +91,8 @@ class DoctorCard extends StatelessWidget {
subName,
variant: 'caption3',
),
billNo != null
? Row(
if (billNo != null)
Row(
children: <Widget>[
Texts(
'Bill No: ',
@ -103,10 +103,10 @@ class DoctorCard extends StatelessWidget {
variant: 'caption3',
)
],
)
: StarRating(
totalAverage: rat,
forceStars: true),
),
if (rat != null)
StarRating(
totalAverage: rat, forceStars: true),
],
),
),

@ -0,0 +1,143 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../text.dart';
class LaboratoryResultWidget extends StatefulWidget {
final GestureTapCallback onTap;
final String billNo;
final String details;
const LaboratoryResultWidget({Key key, this.onTap, this.billNo, this.details})
: super(key: key);
@override
_LaboratoryResultWidgetState createState() => _LaboratoryResultWidgetState();
}
class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
bool _isShowMore = false;
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(15),
child: Column(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.all(15),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts('Bill No'),
Texts(widget.billNo),
],
),
),
),
InkWell(
onTap: widget.onTap,
child: Container(
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.red[800],
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Container(
padding: EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon(
Icons.email,
color: Colors.white,
),
Texts(
'Send a copy',
color: Colors.white,
)
],
),
),
),
)
],
),
),
SizedBox(
height: 10,
),
InkWell(
onTap: () {
setState(() {
_isShowMore = !_isShowMore;
});
},
child: Container(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Row(
children: <Widget>[
Expanded(child: Texts('Result')),
Container(
width: 25,
height: 25,
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.red[900]),
child: Icon(
_isShowMore
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
color: Colors.white,
size: 22,
),
)
],
),
),
),
if (_isShowMore)
AnimatedContainer(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0),
)),
duration: Duration(milliseconds: 7000),
child: Text(widget.details?? 'No Data'),
)
],
),
],
),
);
}
}

@ -15,7 +15,7 @@ class Texts extends StatefulWidget {
final String style;
final bool allowExpand;
final double fontSize;
final String fontWeight;
final FontWeight fontWeight;
final double margin;
final double marginTop;
final double marginRight;
@ -216,7 +216,7 @@ class _TextsState extends State<Texts> {
? _getFontStyle().copyWith(
fontStyle: widget.italic ? FontStyle.italic : null,
color: widget.color != null ? widget.color : null,
fontWeight: _getFontWeight(),
fontWeight: widget.fontWeight?? _getFontWeight(),
)
: TextStyle(
fontStyle: widget.italic ? FontStyle.italic : null,
@ -224,7 +224,7 @@ class _TextsState extends State<Texts> {
fontSize: widget.fontSize ?? _getFontSize(),
letterSpacing:
widget.variant == "overline" ? 1.5 : null,
fontWeight: _getFontWeight(),
fontWeight: widget.fontWeight?? _getFontWeight(),
)),
if (widget.readMore && text.length > widget.maxLength && hidden)
Positioned(

@ -41,7 +41,7 @@ class _AppDrawerState extends State<AppDrawer> {
padding: EdgeInsets.zero,
children: <Widget>[
Container(
height: SizeConfig.screenHeight * .25,
height: SizeConfig.screenHeight * .30,
child: InkWell(
child: DrawerHeader(
child: Column(
@ -122,6 +122,32 @@ class _AppDrawerState extends State<AppDrawer> {
user != null
? Column(
children: <Widget>[
InkWell(
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: <Widget>[
DrawerItem(
TranslationBase.of(context).family,
Icons.group,
textColor: Colors.red,
iconColor: Colors.red,
),
Padding(
padding: EdgeInsets.only(
bottom: 10, right: 30),
child: Icon(
Icons.chevron_right,
color: Colors.red,
))
],
),
onTap: () {
Navigator.of(context).pushNamed(
MY_FAMILIY,
);
},
),
InkWell(
child: DrawerItem(
TranslationBase.of(context)
@ -168,9 +194,7 @@ class _AppDrawerState extends State<AppDrawer> {
TranslationBase.of(context).loginregister,
Icons.lock_open),
onTap: () {
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
login();
},
),
],
@ -214,6 +238,7 @@ class _AppDrawerState extends State<AppDrawer> {
}
checkUserData() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
var data = AuthenticatedUser.fromJson(
await this.sharedPref.getObject(USER_PROFILE));
setState(() {
@ -221,10 +246,28 @@ class _AppDrawerState extends State<AppDrawer> {
print(this.user);
});
}
}
logout() async {
this.sharedPref.remove(USER_PROFILE);
// this.sharedPref.remove(USER_PROFILE);
// this.sharedPref.remove(IMEI_USER_DATA);
// this.sharedPref.remove(TOKEN);
// this.sharedPref.remove(LOGIN_TOKEN_ID);
await sharedPref.clear();
this.user = null;
Navigator.of(context).pushNamed(HOME);
}
login() async {
var data = await sharedPref.getObject(IMEI_USER_DATA);
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN);
if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
}
}
}

@ -71,10 +71,12 @@ class TextFields extends StatefulWidget {
this.onTap,
this.fontSize = 16.0,
this.fontWeight = FontWeight.w700,
this.autoValidate = false})
this.autoValidate = false,
this.hintColor})
: super(key: key);
final String hintText;
// final String initialValue;
final String type;
final bool autoFocus;
@ -105,6 +107,7 @@ class TextFields extends StatefulWidget {
final EdgeInsets padding;
final bool focus;
final bool borderOnlyError;
final Color hintColor;
@override
_TextFieldsState createState() => _TextFieldsState();
@ -208,6 +211,7 @@ class _TextFieldsState extends State<TextFields> {
blurRadius: focus ? 34.0 : 12.0)
]),
child: TextFormField(
keyboardAppearance: Theme.of(context).brightness,
scrollPhysics: BouncingScrollPhysics(),
autovalidate: widget.autoValidate,
@ -250,7 +254,8 @@ class _TextFieldsState extends State<TextFields> {
hintStyle: TextStyle(
fontSize: widget.fontSize,
fontWeight: widget.fontWeight,
color: Theme.of(context).hintColor),
color: widget.hintColor ?? Theme.of(context).hintColor,
),
contentPadding: widget.padding != null
? widget.padding
: EdgeInsets.symmetric(

@ -38,7 +38,7 @@ class AppExpandableNotifier extends StatelessWidget {
header: Padding(
padding: EdgeInsets.all(10),
child: Text(
title,
title?? '',
style: TextStyle(fontWeight: FontWeight.bold,fontSize: 22,),
),
),

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import '../progress_indicator/app_loader_widget.dart';
import 'arrow_back.dart';
@ -51,6 +52,9 @@ class AppScaffold extends StatelessWidget {
color: Colors.white,
onPressed: () {
// TODO add navigator to home page
Navigator.of(context).pushNamed(
HOME,
);
},
),
],

@ -17,6 +17,10 @@ class SMSOTP {
Future<Null> timer;
static BuildContext _context;
static bool _loading;
SMSOTP(
this.context,
this.type,
@ -70,7 +74,7 @@ class SMSOTP {
? Image.asset('assets/images/login/103.png')
: Image.asset('assets/images/login/104.png'),
Padding(
padding: EdgeInsets.only(top: 20),
padding: EdgeInsets.only(top: 5),
child: AppText(
TranslationBase.of(context).verificationMessage +
' XXXXXX' +
@ -277,4 +281,30 @@ class SMSOTP {
}
});
}
static void showLoadingDialog(BuildContext context, bool _loading) async {
_context = context;
if (_loading == false) {
Navigator.of(context).pop();
return;
}
_loading = true;
await showDialog(
context: _context,
barrierDismissible: false,
builder: (BuildContext context) {
return SimpleDialog(
elevation: 0.0,
backgroundColor: Colors.transparent,
children: <Widget>[
Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
),
)
],
);
});
}
}

@ -80,7 +80,8 @@ dependencies:
# Location Helper
map_launcher: ^0.8.1
#hijri
hijri: ^2.0.3

Loading…
Cancel
Save