diff --git a/assets/images/1.png b/assets/images/1.png
new file mode 100644
index 00000000..c90aa190
Binary files /dev/null and b/assets/images/1.png differ
diff --git a/assets/images/2.png b/assets/images/2.png
new file mode 100644
index 00000000..48891b32
Binary files /dev/null and b/assets/images/2.png differ
diff --git a/assets/images/3.png b/assets/images/3.png
new file mode 100644
index 00000000..721f6e6c
Binary files /dev/null and b/assets/images/3.png differ
diff --git a/assets/images/4.png b/assets/images/4.png
new file mode 100644
index 00000000..6d61b45f
Binary files /dev/null and b/assets/images/4.png differ
diff --git a/assets/images/5.png b/assets/images/5.png
new file mode 100644
index 00000000..e45f432c
Binary files /dev/null and b/assets/images/5.png differ
diff --git a/assets/images/bc_parking.png b/assets/images/bc_parking.png
new file mode 100644
index 00000000..64633516
Binary files /dev/null and b/assets/images/bc_parking.png differ
diff --git a/assets/images/new-design/pending.svg b/assets/images/new-design/pending.svg
new file mode 100644
index 00000000..2c26afbd
--- /dev/null
+++ b/assets/images/new-design/pending.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/new-design/verification_check.svg b/assets/images/new-design/verification_check.svg
new file mode 100644
index 00000000..1b3cdcca
--- /dev/null
+++ b/assets/images/new-design/verification_check.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/new/hmg_logo.png b/assets/images/new/hmg_logo.png
new file mode 100644
index 00000000..2555cfa9
Binary files /dev/null and b/assets/images/new/hmg_logo.png differ
diff --git a/assets/images/nfc/ic_done.png b/assets/images/nfc/ic_done.png
new file mode 100644
index 00000000..5b802855
Binary files /dev/null and b/assets/images/nfc/ic_done.png differ
diff --git a/assets/images/nfc/ic_nfc.png b/assets/images/nfc/ic_nfc.png
new file mode 100644
index 00000000..274e1b8c
Binary files /dev/null and b/assets/images/nfc/ic_nfc.png differ
diff --git a/assets/images/powerd-by2.jpg b/assets/images/powerd-by2.jpg
new file mode 100644
index 00000000..93bdbb18
Binary files /dev/null and b/assets/images/powerd-by2.jpg differ
diff --git a/google-services_DQ.json b/google-services_DQ.json
new file mode 100644
index 00000000..a4655794
--- /dev/null
+++ b/google-services_DQ.json
@@ -0,0 +1,40 @@
+{
+ "project_info": {
+ "project_number": "864393916058",
+ "firebase_url": "https://diplomaticquarter-d2385.firebaseio.com",
+ "project_id": "diplomaticquarter-d2385",
+ "storage_bucket": "diplomaticquarter-d2385.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:864393916058:android:5b5a65cd6d8c18b4b97923",
+ "android_client_info": {
+ "package_name": "com.cloud.diplomaticquarterapp"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "864393916058-tphjrn8j39ntevt32ekcvmll8aue7qql.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBdV3mos1BPhUzNKCj2KANJtiO3o2zh9IM"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "864393916058-tphjrn8j39ntevt32ekcvmll8aue7qql.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/google-services_HMG.json b/google-services_HMG.json
new file mode 100644
index 00000000..dd4038cf
--- /dev/null
+++ b/google-services_HMG.json
@@ -0,0 +1,42 @@
+{
+ "project_info": {
+ "project_number": "815750722565",
+ "firebase_url": "https://api-project-815750722565.firebaseio.com",
+ "project_id": "api-project-815750722565",
+ "storage_bucket": "api-project-815750722565.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063",
+ "android_client_info": {
+ "package_name": "com.ejada.hmg"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw"
+ }
+ ],
+ "services": {
+ "analytics_service": {
+ "status": 1
+ },
+ "appinvite_service": {
+ "status": 1,
+ "other_platform_oauth_client": []
+ },
+ "ads_service": {
+ "status": 2
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/hms-plugins/flutter-hms-location/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/hms-plugins/flutter-hms-location/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
new file mode 100644
index 00000000..975e9019
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
@@ -0,0 +1,25 @@
+package io.flutter.plugins;
+
+import io.flutter.plugin.common.PluginRegistry;
+import com.huawei.hms.flutter.location.LocationPlugin;
+
+/**
+ * Generated file. Do not edit.
+ */
+public final class GeneratedPluginRegistrant {
+ public static void registerWith(PluginRegistry registry) {
+ if (alreadyRegisteredWith(registry)) {
+ return;
+ }
+ LocationPlugin.registerWith(registry.registrarFor("com.huawei.hms.flutter.location.LocationPlugin"));
+ }
+
+ private static boolean alreadyRegisteredWith(PluginRegistry registry) {
+ final String key = GeneratedPluginRegistrant.class.getCanonicalName();
+ if (registry.hasPlugin(key)) {
+ return true;
+ }
+ registry.registrarFor(key);
+ return false;
+ }
+}
diff --git a/hms-plugins/flutter-hms-location/android/local.properties b/hms-plugins/flutter-hms-location/android/local.properties
new file mode 100644
index 00000000..c6cb6fc0
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/android/local.properties
@@ -0,0 +1,2 @@
+sdk.dir=C:\\Users\\sultan.khan\\AppData\\Local\\Android\\Sdk
+flutter.sdk=C:\\Program Files\\flutter
\ No newline at end of file
diff --git a/hms-plugins/flutter-hms-location/ios/Flutter/Generated.xcconfig b/hms-plugins/flutter-hms-location/ios/Flutter/Generated.xcconfig
new file mode 100644
index 00000000..4527e66e
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/ios/Flutter/Generated.xcconfig
@@ -0,0 +1,14 @@
+// This is a generated file; do not edit or check into version control.
+FLUTTER_ROOT=C:\Program Files\flutter
+FLUTTER_APPLICATION_PATH=C:\Projects\DQ\hms-plugins\flutter-hms-location
+FLUTTER_TARGET=lib\main.dart
+FLUTTER_BUILD_DIR=build
+SYMROOT=${SOURCE_ROOT}/../build\ios
+OTHER_LDFLAGS=$(inherited) -framework Flutter
+FLUTTER_FRAMEWORK_DIR=C:\Program Files\flutter\bin\cache\artifacts\engine\ios
+FLUTTER_BUILD_NAME=5.0.0
+FLUTTER_BUILD_NUMBER=301
+DART_OBFUSCATION=false
+TRACK_WIDGET_CREATION=false
+TREE_SHAKE_ICONS=false
+PACKAGE_CONFIG=.packages
diff --git a/hms-plugins/flutter-hms-location/ios/Flutter/flutter_export_environment.sh b/hms-plugins/flutter-hms-location/ios/Flutter/flutter_export_environment.sh
new file mode 100644
index 00000000..87c35592
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/ios/Flutter/flutter_export_environment.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+# This is a generated file; do not edit or check into version control.
+export "FLUTTER_ROOT=C:\Program Files\flutter"
+export "FLUTTER_APPLICATION_PATH=C:\Projects\DQ\hms-plugins\flutter-hms-location"
+export "FLUTTER_TARGET=lib\main.dart"
+export "FLUTTER_BUILD_DIR=build"
+export "SYMROOT=${SOURCE_ROOT}/../build\ios"
+export "OTHER_LDFLAGS=$(inherited) -framework Flutter"
+export "FLUTTER_FRAMEWORK_DIR=C:\Program Files\flutter\bin\cache\artifacts\engine\ios"
+export "FLUTTER_BUILD_NAME=5.0.0"
+export "FLUTTER_BUILD_NUMBER=301"
+export "DART_OBFUSCATION=false"
+export "TRACK_WIDGET_CREATION=false"
+export "TREE_SHAKE_ICONS=false"
+export "PACKAGE_CONFIG=.packages"
diff --git a/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.h b/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.h
new file mode 100644
index 00000000..ed9a5c61
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.h
@@ -0,0 +1,17 @@
+//
+// Generated file. Do not edit.
+//
+
+#ifndef GeneratedPluginRegistrant_h
+#define GeneratedPluginRegistrant_h
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GeneratedPluginRegistrant : NSObject
++ (void)registerWithRegistry:(NSObject*)registry;
+@end
+
+NS_ASSUME_NONNULL_END
+#endif /* GeneratedPluginRegistrant_h */
diff --git a/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.m b/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.m
new file mode 100644
index 00000000..60dfa42b
--- /dev/null
+++ b/hms-plugins/flutter-hms-location/ios/Runner/GeneratedPluginRegistrant.m
@@ -0,0 +1,12 @@
+//
+// Generated file. Do not edit.
+//
+
+#import "GeneratedPluginRegistrant.h"
+
+@implementation GeneratedPluginRegistrant
+
++ (void)registerWithRegistry:(NSObject*)registry {
+}
+
+@end
diff --git a/lib/core/model/health_calcolator/get_doctor_by_time_model.dart b/lib/core/model/health_calcolator/get_doctor_by_time_model.dart
new file mode 100644
index 00000000..02c4a6ca
--- /dev/null
+++ b/lib/core/model/health_calcolator/get_doctor_by_time_model.dart
@@ -0,0 +1,198 @@
+class DoctorListByTimeModel {
+ dynamic clinicID;
+ String clinicName;
+ String doctorTitle;
+ dynamic iD;
+ String name;
+ dynamic projectID;
+ String projectName;
+ dynamic actualDoctorRate;
+ dynamic clinicRoomNo;
+ dynamic date;
+ dynamic dayName;
+ double decimalDoctorRate;
+ dynamic doctorAvailability;
+ dynamic doctorID;
+ String doctorImageURL;
+ dynamic doctorProfile;
+ dynamic doctorProfileInfo;
+ dynamic doctorRate;
+ dynamic doctorStarsRate;
+ dynamic gender;
+ String genderDescription;
+ bool isAllowWaitList;
+ bool isAppointmentAllowed;
+ bool isDoctorAllowVedioCall;
+ bool isDoctorDummy;
+ bool isDoctorHasPrePostImages;
+ bool isLiveCare;
+ String latitude;
+ String longitude;
+ String nationalityFlagURL;
+ String nationalityID;
+ String nationalityName;
+ dynamic nearestFreeSlot;
+ dynamic noOfPatientsRate;
+ dynamic originalClinicID;
+ dynamic personRate;
+ dynamic projectDistanceInKiloMeters;
+ String qR;
+ dynamic qRString;
+ dynamic rateNumber;
+ dynamic serviceID;
+ String setupID;
+ List speciality;
+ dynamic workingHours;
+
+ DoctorListByTimeModel(
+ {this.clinicID,
+ this.clinicName,
+ this.doctorTitle,
+ this.iD,
+ this.name,
+ this.projectID,
+ this.projectName,
+ this.actualDoctorRate,
+ this.clinicRoomNo,
+ this.date,
+ this.dayName,
+ this.decimalDoctorRate,
+ this.doctorAvailability,
+ this.doctorID,
+ this.doctorImageURL,
+ this.doctorProfile,
+ this.doctorProfileInfo,
+ this.doctorRate,
+ this.doctorStarsRate,
+ this.gender,
+ this.genderDescription,
+ this.isAllowWaitList,
+ this.isAppointmentAllowed,
+ this.isDoctorAllowVedioCall,
+ this.isDoctorDummy,
+ this.isDoctorHasPrePostImages,
+ this.isLiveCare,
+ this.latitude,
+ this.longitude,
+ this.nationalityFlagURL,
+ this.nationalityID,
+ this.nationalityName,
+ this.nearestFreeSlot,
+ this.noOfPatientsRate,
+ this.originalClinicID,
+ this.personRate,
+ this.projectDistanceInKiloMeters,
+ this.qR,
+ this.qRString,
+ this.rateNumber,
+ this.serviceID,
+ this.setupID,
+ this.speciality,
+ this.workingHours});
+
+ DoctorListByTimeModel.fromJson(Map json) {
+ clinicID = json['ClinicID'];
+ clinicName = json['ClinicName'];
+ doctorTitle = json['DoctorTitle'];
+ iD = json['ID'];
+ name = json['Name'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ actualDoctorRate = json['ActualDoctorRate'];
+ clinicRoomNo = json['ClinicRoomNo'];
+ date = json['Date'];
+ dayName = json['DayName'];
+ decimalDoctorRate = json['DecimalDoctorRate'];
+ doctorAvailability = json['DoctorAvailability'];
+ doctorID = json['DoctorID'];
+ doctorImageURL = json['DoctorImageURL'];
+ doctorProfile = json['DoctorProfile'];
+ doctorProfileInfo = json['DoctorProfileInfo'];
+ doctorRate = json['DoctorRate'];
+ doctorStarsRate = json['DoctorStarsRate'];
+ gender = json['Gender'];
+ genderDescription = json['GenderDescription'];
+ isAllowWaitList = json['IsAllowWaitList'];
+ isAppointmentAllowed = json['IsAppointmentAllowed'];
+ isDoctorAllowVedioCall = json['IsDoctorAllowVedioCall'];
+ isDoctorDummy = json['IsDoctorDummy'];
+ isDoctorHasPrePostImages = json['IsDoctorHasPrePostImages'];
+ isLiveCare = json['IsLiveCare'];
+ latitude = json['Latitude'];
+ longitude = json['Longitude'];
+ nationalityFlagURL = json['NationalityFlagURL'];
+ nationalityID = json['NationalityID'];
+ nationalityName = json['NationalityName'];
+ nearestFreeSlot = json['NearestFreeSlot'];
+ noOfPatientsRate = json['NoOfPatientsRate'];
+ originalClinicID = json['OriginalClinicID'];
+ personRate = json['PersonRate'];
+ projectDistanceInKiloMeters = json['ProjectDistanceInKiloMeters'];
+ qR = json['QR'];
+ qRString = json['QRString'];
+ rateNumber = json['RateNumber'];
+ serviceID = json['ServiceID'];
+ setupID = json['SetupID'];
+ speciality = json['Speciality'].cast();
+ workingHours = json['WorkingHours'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ClinicID'] = this.clinicID;
+ data['ClinicName'] = this.clinicName;
+ data['DoctorTitle'] = this.doctorTitle;
+ data['ID'] = this.iD;
+ data['Name'] = this.name;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['ActualDoctorRate'] = this.actualDoctorRate;
+ data['ClinicRoomNo'] = this.clinicRoomNo;
+ data['Date'] = this.date;
+ data['DayName'] = this.dayName;
+ data['DecimalDoctorRate'] = this.decimalDoctorRate;
+ data['DoctorAvailability'] = this.doctorAvailability;
+ data['DoctorID'] = this.doctorID;
+ data['DoctorImageURL'] = this.doctorImageURL;
+ data['DoctorProfile'] = this.doctorProfile;
+ data['DoctorProfileInfo'] = this.doctorProfileInfo;
+ data['DoctorRate'] = this.doctorRate;
+ data['DoctorStarsRate'] = this.doctorStarsRate;
+ data['Gender'] = this.gender;
+ data['GenderDescription'] = this.genderDescription;
+ data['IsAllowWaitList'] = this.isAllowWaitList;
+ data['IsAppointmentAllowed'] = this.isAppointmentAllowed;
+ data['IsDoctorAllowVedioCall'] = this.isDoctorAllowVedioCall;
+ data['IsDoctorDummy'] = this.isDoctorDummy;
+ data['IsDoctorHasPrePostImages'] = this.isDoctorHasPrePostImages;
+ data['IsLiveCare'] = this.isLiveCare;
+ data['Latitude'] = this.latitude;
+ data['Longitude'] = this.longitude;
+ data['NationalityFlagURL'] = this.nationalityFlagURL;
+ data['NationalityID'] = this.nationalityID;
+ data['NationalityName'] = this.nationalityName;
+ data['NearestFreeSlot'] = this.nearestFreeSlot;
+ data['NoOfPatientsRate'] = this.noOfPatientsRate;
+ data['OriginalClinicID'] = this.originalClinicID;
+ data['PersonRate'] = this.personRate;
+ data['ProjectDistanceInKiloMeters'] = this.projectDistanceInKiloMeters;
+ data['QR'] = this.qR;
+ data['QRString'] = this.qRString;
+ data['RateNumber'] = this.rateNumber;
+ data['ServiceID'] = this.serviceID;
+ data['SetupID'] = this.setupID;
+ data['Speciality'] = this.speciality;
+ data['WorkingHours'] = this.workingHours;
+ return data;
+ }
+}
+
+class DoctorsListTime {
+ List doctorsByTimeList = List();
+ String filterName = "";
+
+ DoctorsListTime({filterName, DoctorListByTimeModel doctor}) {
+ doctorsByTimeList.add(doctor);
+ this.filterName = filterName;
+ }
+}
diff --git a/lib/core/model/health_calcolator/get_doctor_by_time_request_model.dart b/lib/core/model/health_calcolator/get_doctor_by_time_request_model.dart
new file mode 100644
index 00000000..cf9b2004
--- /dev/null
+++ b/lib/core/model/health_calcolator/get_doctor_by_time_request_model.dart
@@ -0,0 +1,80 @@
+class DoctorListByTimeRequestModel {
+ int clinicID;
+ bool isGetNearAppointment;
+ bool continueDentalPlan;
+ bool isSearchAppointmnetByClinicID;
+ int patientID;
+ int latitude;
+ int longitude;
+ bool license;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ dynamic sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+
+ DoctorListByTimeRequestModel(
+ {this.clinicID,
+ this.isGetNearAppointment,
+ this.continueDentalPlan,
+ this.isSearchAppointmnetByClinicID,
+ this.patientID,
+ this.latitude,
+ this.longitude,
+ this.license,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID});
+
+ DoctorListByTimeRequestModel.fromJson(Map json) {
+ clinicID = json['ClinicID'];
+ isGetNearAppointment = json['IsGetNearAppointment'];
+ continueDentalPlan = json['ContinueDentalPlan'];
+ isSearchAppointmnetByClinicID = json['IsSearchAppointmnetByClinicID'];
+ patientID = json['PatientID'];
+ latitude = json['Latitude'];
+ longitude = json['Longitude'];
+ license = json['License'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ClinicID'] = this.clinicID;
+ data['IsGetNearAppointment'] = this.isGetNearAppointment;
+ data['ContinueDentalPlan'] = this.continueDentalPlan;
+ data['IsSearchAppointmnetByClinicID'] = this.isSearchAppointmnetByClinicID;
+ data['PatientID'] = this.patientID;
+ data['Latitude'] = this.latitude;
+ data['Longitude'] = this.longitude;
+ data['License'] = this.license;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ return data;
+ }
+}
diff --git a/lib/core/model/health_calcolator/get_doctor_list_calcolation_model.dart b/lib/core/model/health_calcolator/get_doctor_list_calcolation_model.dart
new file mode 100644
index 00000000..409cab60
--- /dev/null
+++ b/lib/core/model/health_calcolator/get_doctor_list_calcolation_model.dart
@@ -0,0 +1,64 @@
+class GetDoctorListModel {
+ int calcID;
+ int projectID;
+ int clinicID;
+ String clinicName;
+ int doctorID;
+ String doctorImageURL;
+ String doctorName;
+ String doctorTitle;
+ int gender;
+ String genderDescription;
+ String nationality;
+ String nationalityFlagURL;
+ String projectName;
+
+ GetDoctorListModel(
+ {this.calcID,
+ this.projectID,
+ this.clinicID,
+ this.clinicName,
+ this.doctorID,
+ this.doctorImageURL,
+ this.doctorName,
+ this.doctorTitle,
+ this.gender,
+ this.genderDescription,
+ this.nationality,
+ this.nationalityFlagURL,
+ this.projectName});
+
+ GetDoctorListModel.fromJson(Map json) {
+ calcID = json['CalcID'];
+ projectID = json['ProjectID'];
+ clinicID = json['ClinicID'];
+ clinicName = json['ClinicName'];
+ doctorID = json['DoctorID'];
+ doctorImageURL = json['DoctorImageURL'];
+ doctorName = json['DoctorName'];
+ doctorTitle = json['DoctorTitle'];
+ gender = json['Gender'];
+ genderDescription = json['GenderDescription'];
+ nationality = json['Nationality'];
+ nationalityFlagURL = json['NationalityFlagURL'];
+ projectName = json['ProjectName'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['CalcID'] = this.calcID;
+ data['ProjectID'] = this.projectID;
+ data['ClinicID'] = this.clinicID;
+ data['ClinicName'] = this.clinicName;
+ data['DoctorID'] = this.doctorID;
+ data['DoctorImageURL'] = this.doctorImageURL;
+ data['DoctorName'] = this.doctorName;
+ data['DoctorTitle'] = this.doctorTitle;
+ data['Gender'] = this.gender;
+ data['GenderDescription'] = this.genderDescription;
+ data['Nationality'] = this.nationality;
+ data['NationalityFlagURL'] = this.nationalityFlagURL;
+ data['ProjectName'] = this.projectName;
+ return data;
+ }
+}
diff --git a/lib/core/model/health_calcolator/get_doctor_list_calcolation_request_model.dart b/lib/core/model/health_calcolator/get_doctor_list_calcolation_request_model.dart
new file mode 100644
index 00000000..80002341
--- /dev/null
+++ b/lib/core/model/health_calcolator/get_doctor_list_calcolation_request_model.dart
@@ -0,0 +1,52 @@
+class GetDoctorListRequestModel {
+ int calculationID;
+ double versionID;
+ int channel;
+ int languageID;
+ String iPAdress;
+ String generalid;
+ int patientOutSA;
+ String sessionID;
+ bool isDentalAllowedBackend;
+ int deviceTypeID;
+
+ GetDoctorListRequestModel(
+ {this.calculationID,
+ this.versionID,
+ this.channel,
+ this.languageID,
+ this.iPAdress,
+ this.generalid,
+ this.patientOutSA,
+ this.sessionID,
+ this.isDentalAllowedBackend,
+ this.deviceTypeID});
+
+ GetDoctorListRequestModel.fromJson(Map json) {
+ calculationID = json['CalculationID'];
+ versionID = json['VersionID'];
+ channel = json['Channel'];
+ languageID = json['LanguageID'];
+ iPAdress = json['IPAdress'];
+ generalid = json['generalid'];
+ patientOutSA = json['PatientOutSA'];
+ sessionID = json['SessionID'];
+ isDentalAllowedBackend = json['isDentalAllowedBackend'];
+ deviceTypeID = json['DeviceTypeID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['CalculationID'] = this.calculationID;
+ data['VersionID'] = this.versionID;
+ data['Channel'] = this.channel;
+ data['LanguageID'] = this.languageID;
+ data['IPAdress'] = this.iPAdress;
+ data['generalid'] = this.generalid;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['SessionID'] = this.sessionID;
+ data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
+ data['DeviceTypeID'] = this.deviceTypeID;
+ return data;
+ }
+}
diff --git a/lib/core/model/prescriptions/prescription_report_inp.dart b/lib/core/model/prescriptions/prescription_report_inp.dart
new file mode 100644
index 00000000..b802337b
--- /dev/null
+++ b/lib/core/model/prescriptions/prescription_report_inp.dart
@@ -0,0 +1,124 @@
+class PrescriptionReportINP {
+ int patientID;
+ String patientName;
+ String patientAge;
+ String patientGender;
+ String address;
+ String phoneOffice;
+ String itemDescription;
+ int doseTimingID;
+ int frequencyID;
+ int routeID;
+ String clinic;
+ String doctorName;
+ String route;
+ String frequency;
+ String remarks;
+ String name;
+ int days;
+ String startDate;
+ String orderDate;
+ int doseDailyQuantity;
+ int itemID;
+ Null productImage;
+ String sKU;
+ String itemDescriptionN;
+ String routeN;
+ String frequencyN;
+ String imageSRCUrl;
+ String imageThumbUrl;
+
+ PrescriptionReportINP(
+ {this.patientID,
+ this.patientName,
+ this.patientAge,
+ this.patientGender,
+ this.address,
+ this.phoneOffice,
+ this.itemDescription,
+ this.doseTimingID,
+ this.frequencyID,
+ this.routeID,
+ this.clinic,
+ this.doctorName,
+ this.route,
+ this.frequency,
+ this.remarks,
+ this.name,
+ this.days,
+ this.startDate,
+ this.orderDate,
+ this.doseDailyQuantity,
+ this.itemID,
+ this.productImage,
+ this.sKU,
+ this.itemDescriptionN,
+ this.routeN,
+ this.frequencyN,
+ this.imageSRCUrl,
+ this.imageThumbUrl});
+
+ PrescriptionReportINP.fromJson(Map json) {
+ patientID = json['PatientID'];
+ patientName = json['PatientName'];
+ patientAge = json['PatientAge'];
+ patientGender = json['PatientGender'];
+ address = json['Address'];
+ phoneOffice = json['PhoneOffice'];
+ itemDescription = json['ItemDescription'];
+ doseTimingID = json['DoseTimingID'];
+ frequencyID = json['FrequencyID'];
+ routeID = json['RouteID'];
+ clinic = json['Clinic'];
+ doctorName = json['DoctorName'];
+ route = json['Route'];
+ frequency = json['Frequency'];
+ remarks = json['Remarks'];
+ name = json['Name'];
+ days = json['Days'];
+ startDate = json['StartDate'];
+ orderDate = json['OrderDate'];
+ doseDailyQuantity = json['DoseDailyQuantity'];
+ itemID = json['ItemID'];
+ productImage = json['ProductImage'];
+ sKU = json['SKU'];
+ itemDescriptionN = json['ItemDescriptionN'];
+ routeN = json['RouteN'];
+ frequencyN = json['FrequencyN'];
+ imageSRCUrl = json['ImageSRCUrl'];
+ imageThumbUrl = json['ImageThumbUrl'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['PatientID'] = this.patientID;
+ data['PatientName'] = this.patientName;
+ data['PatientAge'] = this.patientAge;
+ data['PatientGender'] = this.patientGender;
+ data['Address'] = this.address;
+ data['PhoneOffice'] = this.phoneOffice;
+ data['ItemDescription'] = this.itemDescription;
+ data['DoseTimingID'] = this.doseTimingID;
+ data['FrequencyID'] = this.frequencyID;
+ data['RouteID'] = this.routeID;
+ data['Clinic'] = this.clinic;
+ data['DoctorName'] = this.doctorName;
+ data['Route'] = this.route;
+ data['Frequency'] = this.frequency;
+ data['Remarks'] = this.remarks;
+ data['Name'] = this.name;
+ data['Days'] = this.days;
+ data['StartDate'] = this.startDate;
+ data['OrderDate'] = this.orderDate;
+ data['DoseDailyQuantity'] = this.doseDailyQuantity;
+ data['ItemID'] = this.itemID;
+ data['ProductImage'] = this.productImage;
+ data['SKU'] = this.sKU;
+ data['ItemDescriptionN'] = this.itemDescriptionN;
+ data['RouteN'] = this.routeN;
+ data['FrequencyN'] = this.frequencyN;
+ data['ImageSRCUrl'] = this.imageSRCUrl;
+ data['ImageThumbUrl'] = this.imageThumbUrl;
+ return data;
+ }
+}
diff --git a/lib/pages/AlHabibMedicalService/h2o/widgets/h20_buttom_navigation_bar.dart b/lib/pages/AlHabibMedicalService/h2o/widgets/h20_buttom_navigation_bar.dart
new file mode 100644
index 00000000..1948e1c8
--- /dev/null
+++ b/lib/pages/AlHabibMedicalService/h2o/widgets/h20_buttom_navigation_bar.dart
@@ -0,0 +1,58 @@
+import 'package:diplomaticquarterapp/pages/landing/home_page.dart';
+import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart';
+import 'package:flutter/material.dart';
+import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
+import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart';
+import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart';
+import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart';
+
+class H20BottomNavigationBar extends StatelessWidget {
+ H20BottomNavigationBar({Key key}) : super(key: key);
+
+ PageController pageController = PageController(keepPage: true);
+ int currentTab = 0;
+
+ @override
+ Widget build(BuildContext context) {
+ // TODO: implement build
+ return Scaffold(
+ body: PageView(
+ physics: NeverScrollableScrollPhysics(),
+ controller: pageController,
+ children: [
+ HomePage(
+ goToMyProfile: () {
+ _changeCurrentTab(1);
+ },
+ ),
+ MedicalProfilePage(),
+ BookingOptions(),
+ MyFamily(isAppbarVisible: false),
+ ToDo(isShowAppBar: false),
+ ], // Please do not remove the BookingOptions from this array
+ ),
+ bottomNavigationBar: BottomNavBar(
+ changeIndex: _changeCurrentTab,
+ index: currentTab,
+ ),
+ floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
+ floatingActionButton: FloatingButton(
+ elevation: true,
+ onTap: () {
+ _changeCurrentTab(2);
+ }),
+ );
+ }
+
+ _changeCurrentTab(int tab) {
+ // setState(() {
+ currentTab = tab;
+ if (tab != 0)
+ pageController.jumpToPage(tab);
+ else {
+ pageController.jumpToPage(tab);
+ }
+ // });
+ }
+}
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/doctor_list.dart b/lib/pages/AlHabibMedicalService/health_calculator/doctor_list.dart
new file mode 100644
index 00000000..61f75227
--- /dev/null
+++ b/lib/pages/AlHabibMedicalService/health_calculator/doctor_list.dart
@@ -0,0 +1,112 @@
+import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/health-calculator/Bariatrics-viewmodel.dart';
+import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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:rating_bar/rating_bar.dart';
+
+class DoctorList extends StatelessWidget {
+ const DoctorList({Key key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ allowAny: true,
+ onModelReady: (model) => model.getDoctorList(),
+ builder: (BuildContext context, BariatricsViewModel model, Widget child) => AppScaffold(
+ isShowDecPage: false,
+ isShowAppBar: true,
+ baseViewModel: model,
+ appBarTitle: "Doctors List",
+ description: TranslationBase.of(context).infoApprovals,
+ infoList: TranslationBase.of(context).infoApprovalPoints,
+ body: ListView.builder(
+ itemCount: model.doctorLists.length,
+ itemBuilder: (BuildContext context, int index) {
+ return Padding(
+ padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0),
+ child: Container(
+ //height: MediaQuery.of(context).size.height * 0.09,
+ decoration: BoxDecoration(color: Colors.white),
+
+ child: ExpansionTile(
+ title: Padding(
+ padding: EdgeInsets.all(21.0),
+ child: Texts(model.doctorLists[index].filterName),
+ ),
+ children: model.doctorLists[index].doctorsByTimeList
+ .map((doctor) => Card(
+ margin: EdgeInsets.fromLTRB(10.0, 16.0, 10.0, 8.0),
+ color: Colors.white,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ child: Container(
+ decoration: BoxDecoration(),
+ padding: EdgeInsets.all(7.0),
+ width: MediaQuery.of(context).size.width,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Expanded(
+ flex: 1,
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(100.0),
+ child: Image.network(doctor.doctorImageURL, fit: BoxFit.fill, height: 60.0, width: 60.0),
+ ),
+ ),
+ Expanded(
+ flex: 4,
+ child: Container(
+ width: MediaQuery.of(context).size.width * 0.55,
+ margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ if (doctor.doctorTitle != null)
+ Text(doctor.doctorTitle + " " + doctor.name, style: TextStyle(fontSize: 14.0, color: Colors.grey[700], letterSpacing: 1.0)),
+ Container(
+ margin: EdgeInsets.only(top: 3.0),
+ child: Text(doctor.clinicName != null ? doctor.clinicName : "", style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)),
+ ),
+ Container(
+ margin: EdgeInsets.only(top: 3.0),
+ child: Text(doctor.projectName, style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ RatingBar.readOnly(
+ initialRating: doctor.actualDoctorRate.toDouble(),
+ size: 20.0,
+ filledColor: Colors.yellow[700],
+ emptyColor: Colors.grey[500],
+ isHalfAllowed: true,
+ halfFilledIcon: Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star,
+ ),
+ Container(
+ child: Image.network(doctor.nationalityFlagURL, width: 25.0, height: 25.0),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ))
+ .toList(),
+ ),
+ ),
+ );
+ }),
+ ));
+ }
+}
diff --git a/lib/pages/medical/prescriptions/prescription_details_inp.dart b/lib/pages/medical/prescriptions/prescription_details_inp.dart
new file mode 100644
index 00000000..91f4a4c6
--- /dev/null
+++ b/lib/pages/medical/prescriptions/prescription_details_inp.dart
@@ -0,0 +1,310 @@
+import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
+import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_inp.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog.dart';
+import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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:provider/provider.dart';
+
+class PrescriptionDetailsPageINP extends StatelessWidget {
+ final PrescriptionReportINP prescriptionReport;
+
+ PrescriptionDetailsPageINP({Key key, this.prescriptionReport});
+
+ @override
+ Widget build(BuildContext context) {
+ return AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: TranslationBase.of(context).prescriptions,
+ body: SingleChildScrollView(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ 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: [
+ ClipRRect(
+ borderRadius: BorderRadius.all(Radius.circular(5)),
+ child: Image.network(
+ prescriptionReport.imageSRCUrl,
+ fit: BoxFit.cover,
+ width: 60,
+ height: 70,
+ ),
+ ),
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Center(
+ child: Texts(
+ prescriptionReport.itemDescription.isNotEmpty
+ ? prescriptionReport.itemDescription
+ : prescriptionReport.itemDescriptionN ?? ''),
+ ),
+ ),
+ )
+ ],
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.all(8),
+ child: Row(
+ children: [
+ Expanded(
+ child: InkWell(
+ onTap: () => Navigator.push(
+ context,
+ FadePage(
+ page: PharmacyForPrescriptionsPage(
+ itemID: prescriptionReport.itemID),
+ ),
+ ),
+ child: Center(
+ child: Column(
+ children: [
+ Container(
+ width: 50,
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.rectangle),
+ child: Column(
+ children: [
+ Icon(
+ Icons.pin_drop,
+ color: Colors.red[800],
+ size: 55,
+ ),
+ ],
+ ),
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ Texts(TranslationBase.of(context).availability)
+ ],
+ ),
+ )),
+ ),
+ _addReminderButton(context)
+ ],
+ ),
+ ),
+ Container(
+ color: Colors.white,
+ margin: EdgeInsets.only(top: 10, left: 10, right: 10),
+ child: Table(
+ border: TableBorder.symmetric(
+ inside: BorderSide(width: 0.5),
+ outside: BorderSide(width: 0.5)),
+ children: [
+ TableRow(
+ children: [
+ Container(
+ color: Colors.white,
+ height: 40,
+ width: double.infinity,
+ child: Center(
+ child: Texts(
+ TranslationBase.of(context).route,
+ fontSize: 14,
+ ))),
+ Container(
+ color: Colors.white,
+ height: 40,
+ width: double.infinity,
+ child: Center(
+ child: Texts(
+ TranslationBase.of(context).frequency,
+ fontSize: 14,
+ ))),
+ Container(
+ color: Colors.white,
+ height: 40,
+ width: double.infinity,
+ padding: EdgeInsets.symmetric(horizontal: 4),
+ child: Center(
+ child: Texts(
+ "${TranslationBase.of(context).dailyDoses}",
+ fontSize: 14,
+ ))),
+ Container(
+ color: Colors.white,
+ height: 40,
+ width: double.infinity,
+ child: Center(
+ child: Texts(
+ TranslationBase.of(context).duration,
+ fontSize: 14,
+ ))),
+ ],
+ ),
+ TableRow(
+ children: [
+ Container(
+ color: Colors.white,
+ height: 50,
+ width: double.infinity,
+ child: Center(
+ child: Text(prescriptionReport.routeN ?? ''))),
+ Container(
+ color: Colors.white,
+ height: 50,
+ width: double.infinity,
+ child: Center(
+ child:
+ Text(prescriptionReport.frequencyN ?? ''))),
+ Container(
+ color: Colors.white,
+ height: 50,
+ width: double.infinity,
+ child: Center(
+ child: Text(
+ '${prescriptionReport.doseDailyQuantity}'))),
+ Container(
+ color: Colors.white,
+ height: 50,
+ width: double.infinity,
+ child:
+ Center(child: Text('${prescriptionReport.days}')))
+ ],
+ ),
+ ],
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(top: 10, left: 10, right: 10),
+ width: double.infinity,
+ color: Colors.white,
+ padding: EdgeInsets.all(5),
+ child: Center(
+ child: Column(
+ children: [
+ Texts(TranslationBase.of(context).notes),
+ SizedBox(
+ height: 5,
+ ),
+ Divider(
+ height: 0.5,
+ color: Colors.grey[300],
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ Texts(prescriptionReport.remarks ?? ''),
+ ],
+ ),
+ ),
+ )
+ ],
+ ),
+ ),
+ );
+ }
+
+ Widget _addReminderButton(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
+
+ return GestureDetector(
+ onTap: () {
+ DateTime startDate = DateTime.now();
+ DateTime endDate = DateTime(startDate.year, startDate.month,
+ startDate.day + prescriptionReport.days);
+
+ print(prescriptionReport);
+ showGeneralDialog(
+ barrierColor: Colors.black.withOpacity(0.5),
+ transitionBuilder: (context, a1, a2, widget) {
+ final curvedValue =
+ Curves.easeInOutBack.transform(a1.value) - 1.0;
+ return Transform(
+ transform:
+ Matrix4.translationValues(0.0, curvedValue * 200, 0.0),
+ child: Opacity(
+ opacity: a1.value,
+ child: ReminderDialog(
+ eventId: prescriptionReport.itemID.toString(),
+ title: "Prescription Reminder",
+ description:
+ "${prescriptionReport.itemDescriptionN} ${prescriptionReport.frequencyN} ${prescriptionReport.routeN} ",
+ startDate:
+ "/Date(${startDate.millisecondsSinceEpoch}+0300)/",
+ endDate: "/Date(${endDate.millisecondsSinceEpoch}+0300)/",
+ location: prescriptionReport.remarks,
+ ),
+ ),
+ );
+ },
+ transitionDuration: Duration(milliseconds: 500),
+ barrierDismissible: true,
+ barrierLabel: '',
+ context: context,
+ pageBuilder: (context, animation1, animation2) {});
+ },
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Container(
+ // height: 100.0,
+ margin: EdgeInsets.all(7.0),
+ padding: EdgeInsets.only(bottom: 4.0),
+ decoration: BoxDecoration(boxShadow: [
+ BoxShadow(
+ color: Colors.grey[400], blurRadius: 2.0, spreadRadius: 0.0)
+ ], borderRadius: BorderRadius.circular(10), color: Colors.white),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Container(
+ margin: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 0.0),
+ child: Text("add",
+ overflow: TextOverflow.clip,
+ style: TextStyle(
+ color: new Color(0xffB8382C),
+ letterSpacing: 1.0,
+ fontSize: 18.0)),
+ ),
+ Container(
+ margin: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0),
+ child: Text("reminder",
+ overflow: TextOverflow.clip,
+ style: TextStyle(
+ color: Colors.black,
+ letterSpacing: 1.0,
+ fontSize: 15.0)),
+ ),
+ Container(
+ alignment: projectViewModel.isArabic
+ ? Alignment.bottomLeft
+ : Alignment.bottomRight,
+ margin: projectViewModel.isArabic
+ ? EdgeInsets.fromLTRB(10.0, 7.0, 0.0, 8.0)
+ : EdgeInsets.fromLTRB(0.0, 7.0, 10.0, 8.0),
+ child: Image.asset(
+ "assets/images/new-design/reminder_icon.png",
+ width: 45.0,
+ height: 45.0),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}