Merge branch 'diplomatic-quarter-live' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into sultan

dq_and_master
Sultan Khan 5 years ago
commit c813deea29

@ -1 +1 @@
a30437b5671472a3d6a8672edcfc504b f4a819c27119d0f472892c1088ad1ca3

@ -483,7 +483,7 @@ const Map localizedValues = {
"LabOrders": {"en": "Lab Orders", "ar": "تحاليل المختبر"}, "LabOrders": {"en": "Lab Orders", "ar": "تحاليل المختبر"},
"BillNo": {"en": "Bill No :", "ar": "رقم الفاتورة"}, "BillNo": {"en": "Bill No :", "ar": "رقم الفاتورة"},
"Prescriptions": {"en": "Prescriptions", "ar": "الوصفات الطبية"}, "Prescriptions": {"en": "Prescriptions", "ar": "الوصفات الطبية"},
"History": {"en": "History", "ar": "السجل"}, "History": {"en": "History", "ar": "السجلات"},
"OrderNo": {"en": "Order No", "ar": "رقم الطلب"}, "OrderNo": {"en": "Order No", "ar": "رقم الطلب"},
"OrderDetails": {"en": "Order Details", "ar": "تفاصيل الطلب"}, "OrderDetails": {"en": "Order Details", "ar": "تفاصيل الطلب"},
"VitalSign": {"en": "Vital Sign", "ar": "العلامة حيوية"}, "VitalSign": {"en": "Vital Sign", "ar": "العلامة حيوية"},
@ -522,12 +522,9 @@ const Map localizedValues = {
"PaymentOnline": {"en": "Service", "ar": "الالكتروني"}, "PaymentOnline": {"en": "Service", "ar": "الالكتروني"},
"OnlineCheckIn": {"en": "Online Check-In", "ar": "مدفوعات معلقة"}, "OnlineCheckIn": {"en": "Online Check-In", "ar": "مدفوعات معلقة"},
"MyBalances": {"en": "My Balances", "ar": "رصيدي"}, "MyBalances": {"en": "My Balances", "ar": "رصيدي"},
"BalanceAmount": {"en": "Balance Amount", "ar": "رصيدالحساب"}, "BalanceAmount": {"en": "Wallet Amount", "ar": "مبلغ المحفظة"},
"TotalBalance": {"en": "Total Balance", "ar": "الرصيد الكلي"}, "TotalBalance": {"en": "Total Amount", "ar": "المبلغ الإجمالي"},
"CreateAdvancedPayment": { "CreateAdvancedPayment": {"en": "Recharge Wallet", "ar": "إعادة شحن المحفظة"},
"en": "Create Advanced Payment",
"ar": "إنشاء دفعة مقدمة"
},
"AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"}, "AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"},
"AdvancePaymentLabel": { "AdvancePaymentLabel": {
"en": "en":
@ -1048,5 +1045,69 @@ const Map localizedValues = {
"update-succ": { "update-succ": {
"en": "Successfully updated profile", "en": "Successfully updated profile",
"ar": "تم تحديث البيانات بنجاح" "ar": "تم تحديث البيانات بنجاح"
} },
"dental-complains": {"en": "Symptoms", "ar": "الأعراض"},
"empty-result": {
"en": "There is no search results found",
"ar": "لايوجد نتائج"
},
"no-booked-appointment": {
"en": "No booked appointments",
"ar": "لا يوجد مواعيد محجوزة"
},
"no-confirmed-appointment": {
"en": "No confirmed appointments",
"ar": "لا توجد مواعيد مؤكدة"
},
"no-arrived-appointment": {
"en": "No arrived appointments",
"ar": "لا يوجد مواعيد"
},
"upcoming-empty": {
"en": "You do not have any Todo actions yet.",
"ar": "ليس لديك أي إجراءات الآن."
},
"upcoming-timeLeft": {
"en": "time left for appointment",
"ar": "الوقت المتبقي للموعد"
},
"covid-test-all-services": {
"en": "Covid-19 Drive-Thru Test",
"ar": "فحص كورونا من داخل السيارة"
},
"pharmacy": {"en": "Pharmacy", "ar": "الصيدلية"},
"ereferral": {"en": "E-Referral", "ar": "طلب التحويل"},
"child-vaccine": {"en": "Child Vaccines", "ar": "تطعيمات الأطفال"},
"calculators": {"en": "Health Calculators", "ar": "الحاسبات الصحية"},
"converters": {"en": "Health Converter", "ar": "تحويل القياسات"},
"h2o": {"en": "Water Tracker", "ar": "حساب كمية الماء"},
"v-tour": {"en": "Virtual Tour", "ar": "جولة إفتراضية"},
"hmg-news": {"en": "HMG News", "ar": "أخبار المجموعة"},
"blood-d": {"en": "Blood Donation", "ar": "تبرع بالدم"},
"symptomCheckerTitle": {"en": "Symptom Checker", "ar": "مدقق الأعراض"},
"latest-news": {"en": "Latest News", "ar": "أحدث الأخبار"},
"our-location": {"en": "Our Locations", "ar": "موقعنا"},
"pharmacies": {"en": "Pharmacies", "ar": "الصيدليات"},
"hospitals": {"en": "Hospitals", "ar": "المستشفيات"},
"wallet": {"en": "Wallet", "ar": "محفظة نقود"},
"hmg": {"en": "Al Habib", "ar": "الحبيب"},
"requested": {"en": "Requested", "ar": "مطلوب"},
"ready": {"en": "Ready", "ar": "جاهز"},
"completed": {"en": "Completed", "ar": "مكتمل"},
"cancelled": {"en": "Cancelled", "ar": "ملغى"},
"request-medical-report": {
"en": "Request medical report",
"ar": "طلب تقرير طبي"
},
"insur-cards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"},
'labResult': {"en": "Lab results", "ar": "نتائج التحاليل المخبرية"},
'details': {'en': 'Details', 'ar': 'التفاصيل'},
"age": {"en": "Age", "ar": "العمر"},
"active-insurence": {"en": "Active", "ar": "نشطة"},
"not-active": {"en": "Not Active", "ar": "غير نشط"},
"card-detail": {"en": "Insurance Details", "ar": "منافعك التامينية"},
"Dr": {"en": "Dr. ", "ar": "الدكتور."},
}; };

@ -1,9 +1,9 @@
class LabResult { class LabResult {
String description; String description;
Null femaleInterpretativeData; dynamic femaleInterpretativeData;
int gender; int gender;
int lineItemNo; int lineItemNo;
Null maleInterpretativeData; dynamic maleInterpretativeData;
String notes; String notes;
String packageID; String packageID;
int patientID; int patientID;
@ -13,11 +13,11 @@ class LabResult {
String sampleCollectedOn; String sampleCollectedOn;
String sampleReceivedOn; String sampleReceivedOn;
String setupID; String setupID;
Null superVerifiedOn; dynamic superVerifiedOn;
String testCode; String testCode;
String uOM; String uOM;
String verifiedOn; String verifiedOn;
Null verifiedOnDateTime; dynamic verifiedOnDateTime;
LabResult( LabResult(
{this.description, {this.description,

@ -139,7 +139,7 @@ class BaseAppClient {
parsed['SMSLoginRequired'] == true) { parsed['SMSLoginRequired'] == true) {
onSuccess(parsed, statusCode); onSuccess(parsed, statusCode);
} else if (!parsed['IsAuthenticated']) { } else if (!parsed['IsAuthenticated']) {
// await logout(); await logout();
//helpers.showErrorToast('Your session expired Please login agian'); //helpers.showErrorToast('Your session expired Please login agian');
} else { } else {

@ -32,6 +32,7 @@ class LabsService extends BaseService {
List<PatientLabSpecialResult> patientLabSpecialResult = List(); List<PatientLabSpecialResult> patientLabSpecialResult = List();
List<LabResult> labResultList = List(); List<LabResult> labResultList = List();
List<LabResult> labOrdersResultsList = List();
Future getLaboratoryResult( Future getLaboratoryResult(
{String projectID, {String projectID,
@ -77,6 +78,28 @@ class LabsService extends BaseService {
}, body: body); }, body: body);
} }
Future getPatientLabOrdersResults({PatientLabOrders patientLabOrder,String procedure}) async {
hasError = false;
Map<String, dynamic> body = Map();
body['InvoiceNo'] = patientLabOrder.invoiceNo;
body['OrderNo'] = patientLabOrder.orderNo;
body['isDentalAllowedBackend'] = false;
body['SetupID'] = patientLabOrder.setupID;
body['ProjectID'] = patientLabOrder.projectID;
body['ClinicID'] = patientLabOrder.clinicID;
body['Procedure'] = procedure;
await baseAppClient.post(GET_Patient_LAB_RESULT,
onSuccess: (dynamic response, int statusCode) {
labOrdersResultsList.clear();
response['ListPLR'].forEach((lab) {
labOrdersResultsList.add(LabResult.fromJson(lab));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
}
RequestSendLabReportEmail _requestSendLabReportEmail = RequestSendLabReportEmail _requestSendLabReportEmail =
RequestSendLabReportEmail(); RequestSendLabReportEmail();

@ -1,14 +1,20 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart'; import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
import '../../locator.dart'; import '../../locator.dart';
class DashboardViewModel extends BaseViewModel { class DashboardViewModel extends BaseViewModel {
VitalSignService _vitalSignService = locator<VitalSignService>(); VitalSignService _vitalSignService = locator<VitalSignService>();
String get weightKg => _vitalSignService.weightKg;
String get heightCm => _vitalSignService.heightCm; String get weightKg => _vitalSignService.weightKg;
String get heightCm => _vitalSignService.heightCm;
String bloadType = ""; String bloadType = "";
// ToDoCountProviderModel toDoProvider =
// Provider.of<ToDoCountProviderModel>(AppGlobal.context);
getPatientRadOrders() async { getPatientRadOrders() async {
if (isLogin && _vitalSignService.weightKg.isEmpty) { if (isLogin && _vitalSignService.weightKg.isEmpty) {
setState(ViewState.Busy); setState(ViewState.Busy);
@ -17,7 +23,21 @@ class DashboardViewModel extends BaseViewModel {
error = _vitalSignService.error; error = _vitalSignService.error;
setState(ViewState.Error); setState(ViewState.Error);
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
// getToDoCount();
} }
} }
// getToDoCount() {
// toDoProvider.setState(0);
// ClinicListService service = new ClinicListService();
// service.getActiveAppointmentNo(AppGlobal.context).then((res) {
// print(res['AppointmentActiveNumber']);
// if (res['MessageStatus'] == 1) {
// toDoProvider.setState(res['AppointmentActiveNumber']);
// } else {}
// }).catchError((err) {
// print(err);
// });
// }
} }

@ -12,6 +12,9 @@ class LabsViewModel extends BaseViewModel {
FilterType filterType = FilterType.Clinic; FilterType filterType = FilterType.Clinic;
LabsService _labsService = locator<LabsService>(); LabsService _labsService = locator<LabsService>();
List<LabResult> get labOrdersResultsList => _labsService.labOrdersResultsList;
List<PatientLabOrdersList> _patientLabOrdersListClinic = List(); List<PatientLabOrdersList> _patientLabOrdersListClinic = List();
List<PatientLabOrdersList> _patientLabOrdersListHospital = List(); List<PatientLabOrdersList> _patientLabOrdersListHospital = List();
@ -105,18 +108,15 @@ class LabsViewModel extends BaseViewModel {
getPatientLabResult({PatientLabOrders patientLabOrder}) async { getPatientLabResult({PatientLabOrders patientLabOrder}) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _labsService.getPatientLabResult( await _labsService.getPatientLabResult(patientLabOrder: patientLabOrder);
patientLabOrder: patientLabOrder
);
if (_labsService.hasError) { if (_labsService.hasError) {
error = _labsService.error; error = _labsService.error;
setState(ViewState.Error); setState(ViewState.Error);
} else { } else {
_labsService.labResultList.forEach((element) { _labsService.labResultList.forEach((element) {
List<LabResultList> patientLabOrdersClinic = List<LabResultList> patientLabOrdersClinic = labResultLists
labResultLists .where(
.where((elementClinic) => (elementClinic) => elementClinic.filterName == element.testCode)
elementClinic.filterName == element.testCode)
.toList(); .toList();
if (patientLabOrdersClinic.length != 0) { if (patientLabOrdersClinic.length != 0) {
@ -124,16 +124,26 @@ class LabsViewModel extends BaseViewModel {
.patientLabResultList .patientLabResultList
.add(element); .add(element);
} else { } else {
labResultLists.add(LabResultList( labResultLists
filterName: element.testCode, .add(LabResultList(filterName: element.testCode, lab: element));
lab: element));
} }
}); });
setState(ViewState.Idle); setState(ViewState.Idle);
} }
} }
getPatientLabOrdersResults({PatientLabOrders patientLabOrder,String procedure}) async {
setState(ViewState.Busy);
await _labsService.getPatientLabOrdersResults(patientLabOrder: patientLabOrder,procedure: procedure);
if (_labsService.hasError) {
error = _labsService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
sendLabReportEmail({PatientLabOrders patientLabOrder}) async { sendLabReportEmail({PatientLabOrders patientLabOrder}) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _labsService.sendLabReportEmail(patientLabOrder: patientLabOrder); await _labsService.sendLabReportEmail(patientLabOrder: patientLabOrder);

@ -25,7 +25,7 @@ class GetAllSharedRecordsByStatusResponse {
dynamic successMsgN; dynamic successMsgN;
dynamic doctorInformationList; dynamic doctorInformationList;
List<GetAllSharedRecordsByStatusList> getAllPendingRecordsList; List<GetAllSharedRecordsByStatusList> getAllPendingRecordsList;
List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList; List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList = List();
List<GetAllSharedRecordsByStatusList> getResponseFileList; List<GetAllSharedRecordsByStatusList> getResponseFileList;
bool isHMGPatient; bool isHMGPatient;
bool isLoginSuccessfully; bool isLoginSuccessfully;
@ -92,7 +92,7 @@ class GetAllSharedRecordsByStatusResponse {
this.successMsgN, this.successMsgN,
this.doctorInformationList, this.doctorInformationList,
this.getAllPendingRecordsList, this.getAllPendingRecordsList,
this.getAllSharedRecordsByStatusList, this.getAllSharedRecordsByStatusList ,
this.getResponseFileList, this.getResponseFileList,
this.isHMGPatient, this.isHMGPatient,
this.isLoginSuccessfully, this.isLoginSuccessfully,

@ -48,6 +48,7 @@ class _AllHabibMedicalServiceState extends State<AllHabibMedicalService> {
AuthenticatedUser authUser = new AuthenticatedUser(); AuthenticatedUser authUser = new AuthenticatedUser();
LocationUtils locationUtils; LocationUtils locationUtils;
var weather = '--'; var weather = '--';
@override @override
void initState() { void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
@ -201,7 +202,7 @@ class _AllHabibMedicalServiceState extends State<AllHabibMedicalService> {
), ),
imageLocation: imageLocation:
'assets/images/new-design/family_menu_icon_red.png', 'assets/images/new-design/family_menu_icon_red.png',
title: 'My Family', title: TranslationBase.of(context).family,
), ),
ServicesContainer( ServicesContainer(
onTap: () => Navigator.push( onTap: () => Navigator.push(
@ -230,20 +231,23 @@ class _AllHabibMedicalServiceState extends State<AllHabibMedicalService> {
"https://hmgwebservices.com/vt_mobile/html/index.html"), "https://hmgwebservices.com/vt_mobile/html/index.html"),
imageLocation: imageLocation:
'assets/images/new-design/virtual_tour_icon.png', 'assets/images/new-design/virtual_tour_icon.png',
title: 'Virtual Tour', title: TranslationBase.of(context).vTour,
), ),
ServicesContainer( ServicesContainer(
onTap: () { onTap: () {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => MyWebView( builder: (BuildContext context) => MyWebView(
title: "HMG News", title: TranslationBase.of(context).hmgNews,
selectedUrl: selectedUrl:
"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live", "https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
))); ),
),
);
}, },
imageLocation: imageLocation:
'assets/images/new-design/twitter_dashboard_icon.png', 'assets/images/new-design/twitter_dashboard_icon.png',
title: 'Latest News', title: TranslationBase.of(context).latestNews,
), ),
ServicesContainer( ServicesContainer(
onTap: () => Navigator.push( onTap: () => Navigator.push(
@ -253,7 +257,7 @@ class _AllHabibMedicalServiceState extends State<AllHabibMedicalService> {
), ),
), ),
imageLocation: 'assets/images/new-design/find_us_icon.png', imageLocation: 'assets/images/new-design/find_us_icon.png',
title: 'Find Us', title: TranslationBase.of(context).findUs,
), ),
], ],
), ),

@ -27,7 +27,6 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:giffy_dialog/giffy_dialog.dart'; import 'package:giffy_dialog/giffy_dialog.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
//import '../../../core/model/my_balance/AdvanceModel.dart'; //import '../../../core/model/my_balance/AdvanceModel.dart';
import 'confirm_payment_page.dart'; import 'confirm_payment_page.dart';

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart';
import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart';
import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
@ -10,6 +11,7 @@ import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
@ -18,7 +20,6 @@ import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'dialogs/ConfirmSMSDialog.dart'; import 'dialogs/ConfirmSMSDialog.dart';
import 'new_text_Field.dart'; import 'new_text_Field.dart';
@ -159,16 +160,16 @@ class ConfirmPaymentPage extends StatelessWidget {
label: TranslationBase.of(context).confirm.toUpperCase(), label: TranslationBase.of(context).confirm.toUpperCase(),
disabled: model.state == ViewState.Busy, disabled: model.state == ViewState.Busy,
onTap: () { onTap: () {
GifLoaderDialogUtils.showMyDialog(context);
model model
.sendActivationCodeForAdvancePayment( .sendActivationCodeForAdvancePayment(
patientID: int.parse(advanceModel.fileNumber), patientID: int.parse(advanceModel.fileNumber),
projectID: advanceModel.hospitalsModel.iD) projectID: advanceModel.hospitalsModel.iD)
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (model.state != ViewState.ErrorLocal && if (model.state != ViewState.ErrorLocal &&
model.state != ViewState.Error) showSMSDialog(); model.state != ViewState.Error) showSMSDialog();
}).showProgressBar( });
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
}, },
), ),
), ),
@ -248,12 +249,14 @@ class ConfirmPaymentPage extends StatelessWidget {
checkPaymentStatus(AppoitmentAllHistoryResultList appo) { checkPaymentStatus(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(AppGlobal.context);
service service
.checkPaymentStatus( .checkPaymentStatus(
Utils.getAppointmentTransID( Utils.getAppointmentTransID(
appo.projectID, appo.clinicID, appo.appointmentNo), appo.projectID, appo.clinicID, appo.appointmentNo),
AppGlobal.context) AppGlobal.context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
print("Printing Payment Status Reponse!!!!"); print("Printing Payment Status Reponse!!!!");
print(res); print(res);
String paymentInfo = res['Response_Message']; String paymentInfo = res['Response_Message'];
@ -263,18 +266,21 @@ class ConfirmPaymentPage extends StatelessWidget {
AppToast.showErrorToast(message: res['Response_Message']); AppToast.showErrorToast(message: res['Response_Message']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
String paymentReference = res['Fort_id'].toString(); String paymentReference = res['Fort_id'].toString();
GifLoaderDialogUtils.showMyDialog(AppGlobal.context);
service service
.createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], res['Fort_id'], .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], res['Fort_id'],
res['PaymentMethod'], AppGlobal.context) res['PaymentMethod'], AppGlobal.context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']);
addAdvancedNumberRequest( addAdvancedNumberRequest(
res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(),
@ -282,24 +288,28 @@ class ConfirmPaymentPage extends StatelessWidget {
appo.appointmentNo.toString(), appo.appointmentNo.toString(),
appo); appo);
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
addAdvancedNumberRequest(String advanceNumber, String paymentReference, addAdvancedNumberRequest(String advanceNumber, String paymentReference,
String appointmentID, AppoitmentAllHistoryResultList appo) { String appointmentID, AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(AppGlobal.context);
service service
.addAdvancedNumberRequest( .addAdvancedNumberRequest(
advanceNumber, paymentReference, appointmentID, AppGlobal.context) advanceNumber, paymentReference, appointmentID, AppGlobal.context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
print(res); print(res);
navigateToHome(AppGlobal.context); navigateToHome(AppGlobal.context);
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Future navigateToHome(context) async { Future navigateToHome(context) async {

@ -8,13 +8,13 @@ import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobi
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class ConfirmSMSDialog extends StatefulWidget { class ConfirmSMSDialog extends StatefulWidget {
final String phoneNumber; final String phoneNumber;
@ -112,32 +112,31 @@ class _ConfirmSMSDialogState extends State<ConfirmSMSDialog> {
height: 40, height: 40,
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
child: Stack( child: Stack(
children: [ children: [
Center( Center(
child: Texts( child: Texts(
'SMS', 'SMS',
color: Colors.white, color: Colors.white,
textAlign: TextAlign.center, textAlign: TextAlign.center,
),
),
Positioned(child: Container(
child: InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.white),
child: Icon(
Icons.clear,
color: Colors.grey[900],
)),
), ),
), ),
left: projectViewModel.isArabic? 2:0, Positioned(
right: projectViewModel.isArabic? 0:2, child: Container(
child: InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.white),
child: Icon(
Icons.clear,
color: Colors.grey[900],
)),
),
),
left: projectViewModel.isArabic ? 2 : 0,
right: projectViewModel.isArabic ? 0 : 2,
) )
], ],
), ),
), ),
Image.asset( Image.asset(
@ -334,15 +333,14 @@ class _ConfirmSMSDialogState extends State<ConfirmSMSDialog> {
} }
void submit(MyBalanceViewModel model) { void submit(MyBalanceViewModel model) {
GifLoaderDialogUtils.showMyDialog(context);
if (verifyAccountForm.currentState.validate()) { if (verifyAccountForm.currentState.validate()) {
final activationCode = final activationCode =
digit1.text + digit2.text + digit3.text + digit4.text; digit1.text + digit2.text + digit3.text + digit4.text;
model model
.checkActivationCodeForAdvancePayment(activationCode: activationCode) .checkActivationCodeForAdvancePayment(activationCode: activationCode)
.then((value) {})
.showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6))
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context);
Navigator.pop(context, true); Navigator.pop(context, true);
}); });
} }

@ -2,9 +2,11 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -14,8 +16,8 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'BookSuccess.dart'; import 'BookSuccess.dart';
@ -43,6 +45,8 @@ class BookConfirm extends StatefulWidget {
} }
class _BookConfirmState extends State<BookConfirm> { class _BookConfirmState extends State<BookConfirm> {
ToDoCountProviderModel toDoProvider;
@override @override
void initState() { void initState() {
widget.authUser = new AuthenticatedUser(); widget.authUser = new AuthenticatedUser();
@ -54,6 +58,7 @@ class _BookConfirmState extends State<BookConfirm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).bookAppo, appBarTitle: TranslationBase.of(context).bookAppo,
isShowAppBar: true, isShowAppBar: true,
@ -320,7 +325,7 @@ class _BookConfirmState extends State<BookConfirm> {
Container( Container(
margin: EdgeInsets.only(top: 5.0), margin: EdgeInsets.only(top: 5.0),
child: Text( child: Text(
"Gender: " + TranslationBase.of(context).gender + ": " +
widget.authUser.genderDescription, widget.authUser.genderDescription,
style: TextStyle( style: TextStyle(
fontSize: 12.0, fontSize: 12.0,
@ -330,7 +335,7 @@ class _BookConfirmState extends State<BookConfirm> {
Container( Container(
margin: EdgeInsets.only(top: 5.0, bottom: 3.0), margin: EdgeInsets.only(top: 5.0, bottom: 3.0),
child: Text( child: Text(
"Age: " + widget.authUser.age.toString(), TranslationBase.of(context).age + ": " + widget.authUser.age.toString(),
style: TextStyle( style: TextStyle(
fontSize: 12.0, fontSize: 12.0,
color: Colors.grey[600], color: Colors.grey[600],
@ -421,9 +426,10 @@ class _BookConfirmState extends State<BookConfirm> {
AppToast.showSuccessToast(message: "Appointment Booked Successfully"); AppToast.showSuccessToast(message: "Appointment Booked Successfully");
print(res['AppointmentNo']); print(res['AppointmentNo']);
Future.delayed(new Duration(milliseconds: 1800), () { Future.delayed(new Duration(milliseconds: 500), () {
getPatientShare(context, res['AppointmentNo'], docObject.clinicID, getPatientShare(context, res['AppointmentNo'], docObject.clinicID,
docObject.projectID, docObject); docObject.projectID, docObject);
getToDoCount();
}); });
} else { } else {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
@ -471,9 +477,10 @@ class _BookConfirmState extends State<BookConfirm> {
AppToast.showSuccessToast(message: "Appointment Booked Successfully"); AppToast.showSuccessToast(message: "Appointment Booked Successfully");
print(res['AppointmentNo']); print(res['AppointmentNo']);
Future.delayed(new Duration(milliseconds: 1800), () { Future.delayed(new Duration(milliseconds: 500), () {
getLiveCareAppointmentPatientShare(context, res['AppointmentNo'], getLiveCareAppointmentPatientShare(context, res['AppointmentNo'],
docObject.clinicID, docObject.projectID, docObject); docObject.clinicID, docObject.projectID, docObject);
getToDoCount();
}); });
} else { } else {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
@ -499,10 +506,23 @@ class _BookConfirmState extends State<BookConfirm> {
dialog.showAlertDialog(context); dialog.showAlertDialog(context);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); }
getToDoCount() {
toDoProvider.setState(0);
ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber']);
} else {}
}).catchError((err) {
print(err);
});
} }
getPatientShare(context, String appointmentNo, int clinicID, int projectID, getPatientShare(context, String appointmentNo, int clinicID, int projectID,

@ -14,7 +14,6 @@ import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'QRCode.dart'; import 'QRCode.dart';
@ -349,36 +348,37 @@ class _BookSuccessState extends State<BookSuccess> {
confirmAppointment(AppoitmentAllHistoryResultList appo) { confirmAppointment(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.confirmAppointment(appo.appointmentNo, appo.clinicID, appo.projectID, .confirmAppointment(appo.appointmentNo, appo.clinicID, appo.projectID,
appo.isLiveCareAppointment, context) appo.isLiveCareAppointment, context)
.then((res) { .then((res) {
if (res['MessageStatus'] == 1) { GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); if (res['MessageStatus'] == 1) {
} else { AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); if (appo.isLiveCareAppointment) {
} insertLiveCareVIDARequest(appo);
}) } else {
.catchError((err) { navigateToHome(context);
print(err); }
}) } else {
.showProgressBar( AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) }
.then((value) { }).catchError((err) {
if (appo.isLiveCareAppointment) { GifLoaderDialogUtils.hideDialog(context);
insertLiveCareVIDARequest(appo); AppToast.showErrorToast(message: err);
} else { print(err);
navigateToHome(context); });
}
});
} }
insertLiveCareVIDARequest(AppoitmentAllHistoryResultList appo) { insertLiveCareVIDARequest(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.insertVIDARequest(appo.appointmentNo, appo.clinicID, appo.projectID, .insertVIDARequest(appo.appointmentNo, appo.clinicID, appo.projectID,
appo.serviceID, appo.doctorID, context) appo.serviceID, appo.doctorID, context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
navigateToHome(context); navigateToHome(context);
@ -386,9 +386,10 @@ class _BookSuccessState extends State<BookSuccess> {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Widget _getPayNowAppo() { Widget _getPayNowAppo() {
@ -633,6 +634,7 @@ class _BookSuccessState extends State<BookSuccess> {
} }
getApplePayAPQ(AppoitmentAllHistoryResultList appo) { getApplePayAPQ(AppoitmentAllHistoryResultList appo) {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service
.checkPaymentStatus( .checkPaymentStatus(
@ -640,6 +642,7 @@ class _BookSuccessState extends State<BookSuccess> {
appo.projectID, appo.clinicID, appo.appointmentNo), appo.projectID, appo.clinicID, appo.appointmentNo),
context) context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
print("Printing Payment Status Reponse!!!!"); print("Printing Payment Status Reponse!!!!");
print(res); print(res);
String paymentInfo = res['Response_Message']; String paymentInfo = res['Response_Message'];
@ -649,9 +652,10 @@ class _BookSuccessState extends State<BookSuccess> {
AppToast.showErrorToast(message: res['Response_Message']); AppToast.showErrorToast(message: res['Response_Message']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) {

@ -52,11 +52,10 @@ class _BookingOptionsState extends State<BookingOptions> {
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: CardCommon( child: CardCommon(
image: 'assets/images/new-design/search_by_clinic.png', image: 'assets/images/new-design/search_by_clinic.png',
text: TranslationBase.of(context).clinic, text: TranslationBase.of(context).clinic,
subText: TranslationBase.of(context).name, subText: TranslationBase.of(context).name,
type: 0, type: 0),
),
), ),
Expanded( Expanded(
child: CardCommon( child: CardCommon(

@ -2,12 +2,13 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Appointments/DentalChiefComplaintsModel.dart'; import 'package:diplomaticquarterapp/models/Appointments/DentalChiefComplaintsModel.dart';
import 'package:diplomaticquarterapp/models/Appointments/SearchInfoModel.dart'; import 'package:diplomaticquarterapp/models/Appointments/SearchInfoModel.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DentalComplaintCard.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DentalComplaintCard.dart';
import 'package:diplomaticquarterapp/pages/livecare/widgets/clinic_card.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class DentalComplaints extends StatefulWidget { class DentalComplaints extends StatefulWidget {
SearchInfo searchInfo; SearchInfo searchInfo;
@ -35,7 +36,8 @@ class _DentalComplaintsState extends State<DentalComplaints> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: "Symptoms", appBarTitle: TranslationBase.of(context).dentalComplaints,
isShowDecPage: false,
body: Container( body: Container(
margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0), margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0),
child: ListView.builder( child: ListView.builder(
@ -59,12 +61,14 @@ class _DentalComplaintsState extends State<DentalComplaints> {
} }
getChiefComplaintsList() { getChiefComplaintsList() {
GifLoaderDialogUtils.showMyDialog(context);
getLanguageID(); getLanguageID();
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service service
.getChiefComplaintsList( .getChiefComplaintsList(
widget.searchInfo.ClinicID, widget.searchInfo.ProjectID, context) widget.searchInfo.ClinicID, widget.searchInfo.ProjectID, context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
print(res['List_DentalChiefComplain']); print(res['List_DentalChiefComplain']);
setState(() { setState(() {
@ -73,10 +77,13 @@ class _DentalComplaintsState extends State<DentalComplaints> {
}); });
print(complaintsList.length); print(complaintsList.length);
}); });
} else {} } else {
}
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
} }

@ -53,17 +53,6 @@ class _DoctorProfileState extends State<DoctorProfile>
length: 2, length: 2,
vsync: this, vsync: this,
initialIndex: widget.isOpenAppt == true ? 1 : 0); initialIndex: widget.isOpenAppt == true ? 1 : 0);
// event.controller.stream.listen((p) {
// if (p['clinic_id'] != null &&
// p['doctor_id'] != null &&
// p['project_id'] != null) {
// setState(() {
// // need to take the data from here
// // dropdownValue = p['clinic_id'];
// });
// }
// });
_tabController = new TabController(length: 2, vsync: this); _tabController = new TabController(length: 2, vsync: this);
widget.authUser = new AuthenticatedUser(); widget.authUser = new AuthenticatedUser();
widget.doctor.speciality = widget.docProfileList.specialty; widget.doctor.speciality = widget.docProfileList.specialty;
@ -164,7 +153,7 @@ class _DoctorProfileState extends State<DoctorProfile>
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
"(" + "(" +
widget.doctor.noOfPatientsRate.toString() + widget.docProfileList.noOfPatientsRate.toString() +
" " + " " +
TranslationBase.of(context).reviews + TranslationBase.of(context).reviews +
")", ")",
@ -275,209 +264,214 @@ class _DoctorProfileState extends State<DoctorProfile>
child: Opacity( child: Opacity(
opacity: a1.value, opacity: a1.value,
child: Dialog( child: Dialog(
child: Container( child: Column(
height: 400.0, mainAxisSize: MainAxisSize.min,
width: MediaQuery.of(context).size.width * 0.8, children: [
color: Colors.white, Container(
child: Column( // height: 400.0,
children: [ width: MediaQuery.of(context).size.width * 0.8,
Container( color: Colors.white,
alignment: Alignment.center, child: Column(
width: MediaQuery.of(context).size.width, children: [
color: Theme.of(context).primaryColor, Container(
margin: EdgeInsets.only(bottom: 5.0), alignment: Alignment.center,
padding: EdgeInsets.all(10.0), width: MediaQuery.of(context).size.width,
child: Text(TranslationBase.of(context).doctorRating, color: Theme.of(context).primaryColor,
style: TextStyle( margin: EdgeInsets.only(bottom: 5.0),
fontSize: 22.0, color: Colors.white))), padding: EdgeInsets.all(10.0),
Container( child: Text(TranslationBase.of(context).doctorRating,
margin: EdgeInsets.only(top: 0.0), style: TextStyle(
child: Text( fontSize: 22.0, color: Colors.white))),
this Container(
.widget margin: EdgeInsets.only(top: 0.0),
.doctor child: Text(
.actualDoctorRate this
.ceilToDouble() .widget
.toString(), .doctor
style: TextStyle( .actualDoctorRate
fontSize: 32.0, color: Colors.black))), .ceilToDouble()
Container( .toString(),
margin: EdgeInsets.only(top: 5.0), style: TextStyle(
alignment: Alignment.center, fontSize: 32.0, color: Colors.black))),
child: RatingBar.readOnly( Container(
initialRating: margin: EdgeInsets.only(top: 5.0),
this.widget.doctor.actualDoctorRate.toDouble(), alignment: Alignment.center,
size: 35.0, child: RatingBar.readOnly(
filledColor: Colors.yellow[700], initialRating:
emptyColor: Colors.grey[500], this.widget.doctor.actualDoctorRate.toDouble(),
isHalfAllowed: true, size: 35.0,
halfFilledIcon: Icons.star_half, filledColor: Colors.yellow[700],
filledIcon: Icons.star, emptyColor: Colors.grey[500],
emptyIcon: Icons.star, isHalfAllowed: true,
), halfFilledIcon: Icons.star_half,
), filledIcon: Icons.star,
Container( emptyIcon: Icons.star,
margin: EdgeInsets.only(top: 10.0),
child: Text(
this.widget.doctor.noOfPatientsRate.toString() +
" " +
TranslationBase.of(context).reviews,
style: TextStyle(
fontSize: 14.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).excellent,
style: TextStyle(
fontSize: 13.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[0].patientNumber),
height: 6.0,
child: Container(
color: Colors.green[700],
),
),
), ),
], ),
), Container(
),
Container(
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(TranslationBase.of(context).v_good,
style: TextStyle(
fontSize: 13.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
child: SizedBox( child: Text(
width: getRatingWidth( this.widget.doctor.noOfPatientsRate.toString() +
doctorDetailsList[1].patientNumber), " " +
height: 6.0, TranslationBase.of(context).reviews,
child: Container( style: TextStyle(
color: Color(0xffB7B723), fontSize: 14.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).excellent,
style: TextStyle(
fontSize: 13.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[0].patientNumber),
height: 6.0,
child: Container(
color: Colors.green[700],
),
),
), ),
), ],
), ),
], ),
), Container(
), child: Row(
Container( children: [
child: Row( Container(
children: [ width: 100.0,
Container( margin: EdgeInsets.only(
width: 100.0, top: 10.0, left: 15.0, right: 15.0),
margin: EdgeInsets.only( child: Text(TranslationBase.of(context).v_good,
top: 10.0, left: 15.0, right: 15.0), style: TextStyle(
child: Text(TranslationBase.of(context).good, fontSize: 13.0, color: Colors.black))),
style: TextStyle( Container(
fontSize: 13.0, color: Colors.black))), margin: EdgeInsets.only(top: 10.0),
Container( child: SizedBox(
margin: EdgeInsets.only(top: 10.0), width: getRatingWidth(
child: SizedBox( doctorDetailsList[1].patientNumber),
width: getRatingWidth( height: 6.0,
doctorDetailsList[2].patientNumber), child: Container(
height: 6.0, color: Color(0xffB7B723),
child: Container( ),
color: Color(0xffEBA727), ),
), ),
), ],
), ),
], ),
), Container(
), child: Row(
Container( children: [
child: Row( Container(
children: [ width: 100.0,
Container( margin: EdgeInsets.only(
width: 100.0, top: 10.0, left: 15.0, right: 15.0),
margin: EdgeInsets.only( child: Text(TranslationBase.of(context).good,
top: 10.0, left: 15.0, right: 15.0), style: TextStyle(
child: Text(TranslationBase.of(context).average, fontSize: 13.0, color: Colors.black))),
style: TextStyle( Container(
fontSize: 13.0, color: Colors.black))), margin: EdgeInsets.only(top: 10.0),
Container( child: SizedBox(
margin: EdgeInsets.only(top: 10.0), width: getRatingWidth(
child: SizedBox( doctorDetailsList[2].patientNumber),
width: getRatingWidth( height: 6.0,
doctorDetailsList[3].patientNumber), child: Container(
height: 6.0, color: Color(0xffEBA727),
child: Container( ),
color: Color(0xffEB7227), ),
), ),
), ],
), ),
], ),
), Container(
), child: Row(
Container( children: [
child: Row( Container(
children: [ width: 100.0,
Container( margin: EdgeInsets.only(
width: 100.0, top: 10.0, left: 15.0, right: 15.0),
margin: EdgeInsets.only( child: Text(TranslationBase.of(context).average,
top: 10.0, left: 15.0, right: 15.0), style: TextStyle(
child: Text( fontSize: 13.0, color: Colors.black))),
TranslationBase.of(context).below_average, Container(
style: TextStyle( margin: EdgeInsets.only(top: 10.0),
fontSize: 13.0, color: Colors.black))), child: SizedBox(
Container( width: getRatingWidth(
margin: EdgeInsets.only(top: 10.0), doctorDetailsList[3].patientNumber),
child: SizedBox( height: 6.0,
width: getRatingWidth( child: Container(
doctorDetailsList[4].patientNumber), color: Color(0xffEB7227),
height: 6.0, ),
child: Container( ),
color: Color(0xffE20C0C),
), ),
), ],
), ),
], ),
), Container(
), child: Row(
Container( children: [
margin: EdgeInsets.only(top: 40.0), child: Divider()), Container(
Container( width: 100.0,
margin: EdgeInsets.only(top: 0.0), margin: EdgeInsets.only(
child: Align( top: 10.0, left: 15.0, right: 15.0),
alignment: FractionalOffset.bottomCenter, child: Text(
child: ButtonTheme( TranslationBase.of(context).below_average,
shape: RoundedRectangleBorder( style: TextStyle(
borderRadius: BorderRadius.circular(10.0), fontSize: 13.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[4].patientNumber),
height: 6.0,
child: Container(
color: Color(0xffE20C0C),
),
),
),
],
), ),
minWidth: MediaQuery.of(context).size.width, ),
height: 40.0, Container(
child: RaisedButton( margin: EdgeInsets.only(top: 40.0), child: Divider()),
elevation: 0.0, Container(
color: Colors.white, margin: EdgeInsets.only(top: 0.0),
textColor: Colors.red, child: Align(
hoverColor: Colors.transparent, alignment: FractionalOffset.bottomCenter,
focusColor: Colors.transparent, child: ButtonTheme(
highlightColor: Colors.transparent, shape: RoundedRectangleBorder(
disabledColor: new Color(0xFFbcc2c4), borderRadius: BorderRadius.circular(10.0),
onPressed: () { ),
Navigator.of(context).pop(); minWidth: MediaQuery.of(context).size.width,
}, height: 40.0,
child: Text(TranslationBase.of(context).cancel, child: RaisedButton(
style: TextStyle(fontSize: 18.0)), elevation: 0.0,
color: Colors.white,
textColor: Colors.red,
hoverColor: Colors.transparent,
focusColor: Colors.transparent,
highlightColor: Colors.transparent,
disabledColor: new Color(0xFFbcc2c4),
onPressed: () {
Navigator.of(context).pop();
},
child: Text(TranslationBase.of(context).cancel,
style: TextStyle(fontSize: 18.0)),
),
),
), ),
), ),
), ],
), ),
], ),
), ],
), ),
), ),
), ),
@ -491,10 +485,7 @@ class _DoctorProfileState extends State<DoctorProfile>
} }
double getRatingWidth(int patientNumber) { double getRatingWidth(int patientNumber) {
print(patientNumber); var width = (patientNumber / this.widget.docProfileList.noOfPatientsRate) * 100;
print(this.widget.doctor.noOfPatientsRate);
var width = (patientNumber / this.widget.doctor.noOfPatientsRate) * 100;
print(width);
return width; return width;
} }

@ -10,11 +10,11 @@ import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsLis
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class QRCode extends StatefulWidget { class QRCode extends StatefulWidget {
PatientShareResponse patientShareResponse; PatientShareResponse patientShareResponse;
@ -235,6 +235,7 @@ class _QRCodeState extends State<QRCode> {
okText: TranslationBase.of(context).confirm, okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps, cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () { okFunction: () {
GifLoaderDialogUtils.showMyDialog(context);
service service
.sendAppointmentQREmail( .sendAppointmentQREmail(
widget.authUser.emailAddress, widget.authUser.emailAddress,
@ -247,15 +248,15 @@ class _QRCodeState extends State<QRCode> {
widget.patientShareResponse.doctorSpeciality), widget.patientShareResponse.doctorSpeciality),
context) context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res); print(res);
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
}, },
cancelFunction: () => {}); cancelFunction: () => {});
dialog.showAlertDialog(context); dialog.showAlertDialog(context);

@ -1,18 +1,16 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByClinic.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByClinic.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByDoctor.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByDoctor.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/arrow_back.dart'; import 'package:diplomaticquarterapp/widgets/others/arrow_back.dart';
import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
class Search extends StatefulWidget { class Search extends StatefulWidget {
final int type; final int type;
final List clnicIds; final List clnicIds;
Search({this.type = 0, this.clnicIds}); Search({this.type = 0, this.clnicIds});
@override @override
_SearchState createState() => _SearchState(); _SearchState createState() => _SearchState();
} }

@ -27,6 +27,7 @@ class _SearchResultsState extends State<SearchResults> {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).bookAppo, appBarTitle: TranslationBase.of(context).bookAppo,
isShowAppBar: true, isShowAppBar: true,
isShowDecPage: false,
body: Container( body: Container(
margin: EdgeInsets.all(10.0), margin: EdgeInsets.all(10.0),
child: SingleChildScrollView( child: SingleChildScrollView(

@ -380,6 +380,7 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
}); });
} }

@ -13,6 +13,7 @@ class DoctorInformation extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
Card( Card(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -106,6 +107,7 @@ class DoctorInformation extends StatelessWidget {
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 0.0, 10.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 0.0, 10.0, 5.0),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
_getNormalText(docProfileList.doctorProfileInfo) _getNormalText(docProfileList.doctorProfileInfo)
], ],
@ -123,7 +125,6 @@ class DoctorInformation extends StatelessWidget {
return Text(text, return Text(text,
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
fontFamily: 'Open-Sans',
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
letterSpacing: 0.5, letterSpacing: 0.5,
color: Colors.grey[800])); color: Colors.grey[800]));
@ -133,9 +134,9 @@ class DoctorInformation extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.only(top: 5.0), margin: EdgeInsets.only(top: 5.0),
child: Text(text, child: Text(text,
maxLines: 16,
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
fontFamily: 'Open-Sans',
letterSpacing: 0.5, letterSpacing: 0.5,
color: Colors.grey[700])), color: Colors.grey[700])),
); );
@ -151,7 +152,7 @@ class DoctorInformation extends StatelessWidget {
Text(text.trim(), Text(text.trim(),
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
fontFamily: 'Open-Sans',
letterSpacing: 0.5, letterSpacing: 0.5,
color: Colors.grey[700])), color: Colors.grey[700])),
Container( Container(

@ -13,7 +13,6 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class SearchByClinic extends StatefulWidget { class SearchByClinic extends StatefulWidget {
final List clnicIds; final List clnicIds;
@ -137,7 +136,8 @@ class _SearchByClinicState extends State<SearchByClinic> {
margin: EdgeInsets.only(top: 15.0), margin: EdgeInsets.only(top: 15.0),
child: DropdownButtonHideUnderline( child: DropdownButtonHideUnderline(
child: DropdownButton<String>( child: DropdownButton<String>(
hint: new Text("Select Project"), hint:
new Text(TranslationBase.of(context).selectHospital),
value: projectDropdownValue, value: projectDropdownValue,
items: projectsList.map((item) { items: projectsList.map((item) {
return new DropdownMenuItem<String>( return new DropdownMenuItem<String>(

@ -4,7 +4,6 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import '../SearchResults.dart'; import '../SearchResults.dart';
@ -129,9 +128,12 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
navigateToSearchResults( navigateToSearchResults(
context, doctorsList, _patientDoctorAppointmentListHospital); context, doctorsList, _patientDoctorAppointmentListHospital);
} else { } else {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}); });
} }

@ -1,12 +1,16 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class CardCommon extends StatelessWidget { class CardCommon extends StatelessWidget {
var languageID;
final image; final image;
final text; final text;
final subText; final subText;
final type; final type;
const CardCommon(
CardCommon(
{@required this.image, {@required this.image,
@required this.text, @required this.text,
@required this.subText, @required this.subText,
@ -14,6 +18,7 @@ class CardCommon extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
navigateToSearch(context, this.type); navigateToSearch(context, this.type);
@ -43,8 +48,12 @@ class CardCommon extends StatelessWidget {
color: Colors.black, letterSpacing: 1.0, fontSize: 15.0)), color: Colors.black, letterSpacing: 1.0, fontSize: 15.0)),
), ),
Container( Container(
alignment: Alignment.bottomRight, alignment: projectViewModel.isArabic
margin: EdgeInsets.fromLTRB(0.0, 0.0, 10.0, 8.0), ? Alignment.bottomLeft
: Alignment.bottomRight,
margin: projectViewModel.isArabic
? EdgeInsets.fromLTRB(10.0, 0.0, 00.0, 8.0)
: EdgeInsets.fromLTRB(0.0, 0.0, 10.0, 8.0),
child: Image.asset(this.image, width: 60.0, height: 60.0), child: Image.asset(this.image, width: 60.0, height: 60.0),
), ),
], ],

@ -3,8 +3,9 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class DentalComplaintCard extends StatefulWidget { class DentalComplaintCard extends StatefulWidget {
@ -69,14 +70,15 @@ class _DentalComplaintCardState extends State<DentalComplaintCard> {
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital = List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital =
List(); List();
GifLoaderDialogUtils.showMyDialog(context);
ClinicListService service = new ClinicListService(); ClinicListService service = new ClinicListService();
service service
.getChiefComplaintDoctorList(widget.listDentalChiefComplain.iD, .getChiefComplaintDoctorList(widget.listDentalChiefComplain.iD,
widget.listDentalChiefComplain.projectID, context) widget.listDentalChiefComplain.projectID, context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
print(res['List_DentalDoctorChiefComplaintMapping']); print(res['ErrorEndUserMessage']);
setState(() { setState(() {
doctorsList.clear(); doctorsList.clear();
res['List_DentalDoctorChiefComplaintMapping'].forEach((v) { res['List_DentalDoctorChiefComplaintMapping'].forEach((v) {
@ -107,16 +109,21 @@ class _DentalComplaintCardState extends State<DentalComplaintCard> {
patientDoctorAppointment: element)); patientDoctorAppointment: element));
} }
}); });
navigateToSearchResults( if (doctorsList.length != 0) {
context, doctorsList, _patientDoctorAppointmentListHospital); navigateToSearchResults(
context, doctorsList, _patientDoctorAppointmentListHospital);
} else {
AppToast.showErrorToast(message: TranslationBase.of(context).emptyResult);
}
}); });
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Future navigateToSearchResults( Future navigateToSearchResults(

@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import '../DoctorProfile.dart'; import '../DoctorProfile.dart';

@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/viewModels/contactus/findus_view_model
import 'package:diplomaticquarterapp/pages/ContactUs/findus/hospitrals_page.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/findus/hospitrals_page.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/findus/pharmacies_page.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/findus/pharmacies_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.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/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -39,7 +40,7 @@ class _FindUsPageState extends State<FindUsPage>
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: 'Locations', appBarTitle: TranslationBase.of(context).ourLocation,
baseViewModel: model, baseViewModel: model,
body: Scaffold( body: Scaffold(
extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
@ -90,13 +91,13 @@ class _FindUsPageState extends State<FindUsPage>
Container( Container(
width: MediaQuery.of(context).size.width * 0.30, width: MediaQuery.of(context).size.width * 0.30,
child: Center( child: Center(
child: Texts(' Hospitals '), child: Texts(TranslationBase.of(context).hospitals),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.30, width: MediaQuery.of(context).size.width * 0.30,
child: Center( child: Center(
child: Texts(' Pharmacies '), child: Texts(TranslationBase.of(context).pharmacies),
), ),
), ),
], ],

@ -9,13 +9,13 @@ import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.da
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:table_calendar/table_calendar.dart'; import 'package:table_calendar/table_calendar.dart';
class CovidTimeSlots extends StatefulWidget { class CovidTimeSlots extends StatefulWidget {
@ -481,6 +481,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
insertAppointmentCovidTest(context, DoctorList docObject) { insertAppointmentCovidTest(context, DoctorList docObject) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
AppoitmentAllHistoryResultList appo; AppoitmentAllHistoryResultList appo;
service service
.insertAppointment( .insertAppointment(
@ -491,7 +492,7 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
CovidTimeSlots.selectedDate, CovidTimeSlots.selectedDate,
context) context)
.then((res) { .then((res) {
print(res); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: "Appointment Booked Successfully"); AppToast.showSuccessToast(message: "Appointment Booked Successfully");
Future.delayed(new Duration(milliseconds: 1800), () { Future.delayed(new Duration(milliseconds: 1800), () {
@ -521,17 +522,19 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
dialog.showAlertDialog(context); dialog.showAlertDialog(context);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
cancelAppointment(DoctorList docObject, AppoitmentAllHistoryResultList appo, cancelAppointment(DoctorList docObject, AppoitmentAllHistoryResultList appo,
BuildContext context) { BuildContext context) {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service.cancelAppointment(appo, context).then((res) { service.cancelAppointment(appo, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
Future.delayed(new Duration(milliseconds: 1500), () { Future.delayed(new Duration(milliseconds: 1500), () {
insertAppointmentCovidTest(context, docObject); insertAppointmentCovidTest(context, docObject);
@ -540,28 +543,27 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
getPatientShare(context, String appointmentNo, int clinicID, int projectID, getPatientShare(context, String appointmentNo, int clinicID, int projectID,
DoctorList docObject) { DoctorList docObject) {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service
.getPatientShare(appointmentNo, clinicID, projectID, context) .getPatientShare(appointmentNo, clinicID, projectID, context)
.then((res) { .then((res) {
print(res); GifLoaderDialogUtils.hideDialog(context);
widget.patientShareResponse = new PatientShareResponse.fromJson(res); widget.patientShareResponse = new PatientShareResponse.fromJson(res);
}) navigateToPaymentAlert();
.catchError((err) { }).catchError((err) {
print(err); GifLoaderDialogUtils.hideDialog(context);
}) AppToast.showErrorToast(message: err);
.showProgressBar( print(err);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) });
.then((value) {
navigateToPaymentAlert();
});
} }
navigateToPaymentAlert() { navigateToPaymentAlert() {
@ -573,8 +575,10 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
} }
getCovidFreeSlots(BuildContext context, int projectID) { getCovidFreeSlots(BuildContext context, int projectID) {
GifLoaderDialogUtils.showMyDialog(context);
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
service.getCovidFreeSlots(context, projectID).then((res) { service.getCovidFreeSlots(context, projectID).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res['COVID19_FreeTimeSlots']); print(res['COVID19_FreeTimeSlots']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
if (res['COVID19_FreeTimeSlots'].length != 0) { if (res['COVID19_FreeTimeSlots'].length != 0) {
@ -595,8 +599,9 @@ class _CovidTimeSlotsState extends State<CovidTimeSlots>
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
} }

@ -3,11 +3,12 @@ import 'package:diplomaticquarterapp/models/CovidDriveThru/DriveThroughTestingCe
import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-payment-details.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-payment-details.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart'; import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart'; import 'package:maps_launcher/maps_launcher.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class CovidDrivethruLocation extends StatefulWidget { class CovidDrivethruLocation extends StatefulWidget {
@override @override
@ -258,37 +259,38 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
CovidPaymentInfoResponse covidPaymentInfoResponse = CovidPaymentInfoResponse covidPaymentInfoResponse =
new CovidPaymentInfoResponse(); new CovidPaymentInfoResponse();
GifLoaderDialogUtils.showMyDialog(context);
service service
.getCovidPaymentInformation(context, int.parse(projectID)) .getCovidPaymentInformation(context, int.parse(projectID))
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson( covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson(
res['COVID19_PatientShare']); res['COVID19_PatientShare']);
print(covidPaymentInfoResponse.procedureNameField);
}); });
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CovidPaymentDetails(
covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID),
)));
} else {} } else {}
}) })
.catchError((err) { .catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
})
.showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6))
.then((value) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CovidPaymentDetails(
covidPaymentInfoResponse: covidPaymentInfoResponse,
projectID: int.parse(projectID),
)));
}); });
} }
getProjectsList(BuildContext context) { getProjectsList(BuildContext context) {
CovidDriveThruService service = new CovidDriveThruService(); CovidDriveThruService service = new CovidDriveThruService();
GifLoaderDialogUtils.showMyDialog(context);
service.getCovidProjectsList(context).then((res) { service.getCovidProjectsList(context).then((res) {
print(res); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
print(res); print(res);
setState(() { setState(() {
@ -298,8 +300,9 @@ class _CovidDrivethruLocationState extends State<CovidDrivethruLocation> {
}); });
} else {} } else {}
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
} }

@ -1,11 +1,17 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/BookConfirm.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookConfirm.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/components/DocAvailableAppointments.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/DocAvailableAppointments.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
import 'widgets/AppointmentActions.dart'; import 'widgets/AppointmentActions.dart';
@ -26,6 +32,8 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static TabController _tabController; static TabController _tabController;
List<DoctorRateDetails> doctorDetailsList = List();
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 2, vsync: this); _tabController = new TabController(length: 2, vsync: this);
@ -34,38 +42,38 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
@override @override
void dispose() { void dispose() {
// TODO: implement dispose
super.dispose(); super.dispose();
_tabController.dispose(); _tabController.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
appBarTitle: widget.appo.doctorNameObj, appBarTitle: widget.appo.doctorNameObj,
isShowAppBar: true, isShowAppBar: true,
bottomSheet: AppointmentDetails.showFooterButton bottomSheet: AppointmentDetails.showFooterButton
? Container( ? Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: 50.0, height: 50.0,
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
child: ButtonTheme( child: ButtonTheme(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
), ),
minWidth: MediaQuery.of(context).size.width * 0.7, minWidth: MediaQuery.of(context).size.width * 0.7,
height: 45.0, height: 45.0,
child: RaisedButton( child: RaisedButton(
color: new Color(0xFF60686b), color: new Color(0xFF60686b),
textColor: Colors.white, textColor: Colors.white,
disabledTextColor: Colors.white, disabledTextColor: Colors.white,
disabledColor: new Color(0xFFbcc2c4), disabledColor: new Color(0xFFbcc2c4),
onPressed: goToBookConfirm, onPressed: goToBookConfirm,
child: Text(TranslationBase.of(context).bookNow, child: Text(TranslationBase.of(context).bookNow,
style: TextStyle(fontSize: 18.0)), style: TextStyle(fontSize: 18.0)),
), ),
), ),
) )
: null, : null,
body: Container( body: Container(
color: new Color(0xFFf6f6f6), color: new Color(0xFFf6f6f6),
@ -88,7 +96,8 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
), ),
), ),
Container( Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), margin:
EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
widget.appo.doctorTitle + widget.appo.doctorTitle +
@ -103,7 +112,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
Container( Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
alignment: Alignment.center, alignment: Alignment.center,
child: Text(widget.appo.clinicName, child: Text(getDoctorSpeciality(widget.appo.doctorSpeciality),
style: TextStyle( style: TextStyle(
fontSize: 12.0, fontSize: 12.0,
color: Colors.grey[900], color: Colors.grey[900],
@ -123,19 +132,37 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
emptyIcon: Icons.star, emptyIcon: Icons.star,
), ),
), ),
InkWell(
onTap: () {
getDoctorRatingsDetails();
},
child: Container(
margin: EdgeInsets.only(top: 5.0),
alignment: Alignment.center,
child: Text(
"(" +
widget.appo.noOfPatientsRate.toString() +
" " +
TranslationBase.of(context).reviews +
")",
style: TextStyle(
fontSize: 14.0,
color: Colors.blue[800],
letterSpacing: 1.0,
decoration: TextDecoration.underline,
)),
),
),
Container( Container(
margin: EdgeInsets.only(top: 5.0),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(DateUtil.getWeekDayMonthDayYearDateFormatted(
"(" + DateUtil.convertStringToDate(
widget.appo.noOfPatientsRate.toString() + widget.appo.appointmentDate),
" Reviews)", projectViewModel.isArabic ? "ar" : "en")),
style: TextStyle( ),
fontSize: 14.0, Container(
color: Colors.blue[800], alignment: Alignment.center,
letterSpacing: 1.0, child: Text(widget.appo.startTime),
decoration: TextDecoration.underline,
)),
), ),
Container( Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
@ -171,8 +198,14 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
child: TabBarView( child: TabBarView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
children: [ children: [
AppointmentActions(appo: widget.appo, tabController: _tabController, enableFooterButton: enableFooterButton), AppointmentActions(
DocAvailableAppointments(doctor: getDoctorObject(), isLiveCareAppointment: widget.appo.isLiveCareAppointment) appo: widget.appo,
tabController: _tabController,
enableFooterButton: enableFooterButton),
DocAvailableAppointments(
doctor: getDoctorObject(),
isLiveCareAppointment:
widget.appo.isLiveCareAppointment)
], ],
controller: _tabController, controller: _tabController,
), ),
@ -208,7 +241,292 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
selectedTime: DocAvailableAppointments.selectedTime))); selectedTime: DocAvailableAppointments.selectedTime)));
} }
getDoctorRatingsDetails() {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
service.getDoctorsRatingDetails(widget.appo.doctorID, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) {
doctorDetailsList.clear();
res['DoctorRatingDetailsList'].forEach((v) {
doctorDetailsList.add(new DoctorRateDetails.fromJson(v));
});
showRatingDialog(doctorDetailsList);
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err);
});
}
void showRatingDialog(List<DoctorRateDetails> doctorDetailsList) {
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: Dialog(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
// height: 400.0,
width: MediaQuery.of(context).size.width * 0.8,
color: Colors.white,
child: Column(
children: [
Container(
alignment: Alignment.center,
width: MediaQuery.of(context).size.width,
color: Theme.of(context).primaryColor,
margin: EdgeInsets.only(bottom: 5.0),
padding: EdgeInsets.all(10.0),
child: Text(
TranslationBase.of(context).doctorRating,
style: TextStyle(
fontSize: 22.0, color: Colors.white))),
Container(
margin: EdgeInsets.only(top: 0.0),
child: Text(
this
.widget
.appo
.actualDoctorRate
.ceilToDouble()
.toString(),
style: TextStyle(
fontSize: 32.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 5.0),
alignment: Alignment.center,
child: RatingBar.readOnly(
initialRating:
this.widget.appo.actualDoctorRate.toDouble(),
size: 35.0,
filledColor: Colors.yellow[700],
emptyColor: Colors.grey[500],
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star,
),
),
Container(
margin: EdgeInsets.only(top: 10.0),
child: Text(
this.widget.appo.noOfPatientsRate.toString() +
" " +
TranslationBase.of(context).reviews,
style: TextStyle(
fontSize: 14.0, color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).excellent,
style: TextStyle(
fontSize: 13.0,
color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[0].patientNumber),
height: 6.0,
child: Container(
color: Colors.green[700],
),
),
),
],
),
),
Container(
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).v_good,
style: TextStyle(
fontSize: 13.0,
color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[1].patientNumber),
height: 6.0,
child: Container(
color: Color(0xffB7B723),
),
),
),
],
),
),
Container(
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).good,
style: TextStyle(
fontSize: 13.0,
color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[2].patientNumber),
height: 6.0,
child: Container(
color: Color(0xffEBA727),
),
),
),
],
),
),
Container(
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context).average,
style: TextStyle(
fontSize: 13.0,
color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[3].patientNumber),
height: 6.0,
child: Container(
color: Color(0xffEB7227),
),
),
),
],
),
),
Container(
child: Row(
children: [
Container(
width: 100.0,
margin: EdgeInsets.only(
top: 10.0, left: 15.0, right: 15.0),
child: Text(
TranslationBase.of(context)
.below_average,
style: TextStyle(
fontSize: 13.0,
color: Colors.black))),
Container(
margin: EdgeInsets.only(top: 10.0),
child: SizedBox(
width: getRatingWidth(
doctorDetailsList[4].patientNumber),
height: 6.0,
child: Container(
color: Color(0xffE20C0C),
),
),
),
],
),
),
Container(
margin: EdgeInsets.only(top: 40.0),
child: Divider()),
Container(
margin: EdgeInsets.only(top: 0.0),
child: Align(
alignment: FractionalOffset.bottomCenter,
child: ButtonTheme(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
minWidth: MediaQuery.of(context).size.width,
height: 40.0,
child: RaisedButton(
elevation: 0.0,
color: Colors.white,
textColor: Colors.red,
hoverColor: Colors.transparent,
focusColor: Colors.transparent,
highlightColor: Colors.transparent,
disabledColor: new Color(0xFFbcc2c4),
onPressed: () {
Navigator.of(context).pop();
},
child: Text(
TranslationBase.of(context).cancel,
style: TextStyle(fontSize: 18.0)),
),
),
),
),
],
),
),
],
),
),
),
);
},
transitionDuration: Duration(milliseconds: 500),
barrierDismissible: true,
barrierLabel: '',
context: context,
pageBuilder: (context, animation1, animation2) {});
}
double getRatingWidth(int patientNumber) {
var width = (patientNumber / this.widget.appo.noOfPatientsRate) * 100;
return width;
}
String getDate(String date) {
DateTime dateObj = DateUtil.convertStringToDate(date);
return DateUtil.getWeekDay(dateObj.weekday) +
", " +
dateObj.day.toString() +
" " +
DateUtil.getMonth(dateObj.month) +
" " +
dateObj.year.toString();
}
String getDoctorSpeciality(List<String> docSpecial) {
String docSpeciality = "";
docSpecial.forEach((v) {
docSpeciality = docSpeciality + v + " ";
});
return docSpeciality;
}
DoctorList getDoctorObject() { DoctorList getDoctorObject() {
DoctorList docObj = new DoctorList(); DoctorList docObj = new DoctorList();

@ -47,10 +47,19 @@ class _MyAppointmentsState extends State<MyAppointments>
void initState() { void initState() {
_tabController = new TabController(length: 3, vsync: this); _tabController = new TabController(length: 3, vsync: this);
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
if (Provider.of<ProjectViewModel>(context, listen: false).isLogin) getPatientAppointmentHistory(); if (Provider.of<ProjectViewModel>(context, listen: false).isLogin)
getPatientAppointmentHistory();
}); });
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/0.png')); imagesInfo.add(ImagesInfo(
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/1.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/1.png')); imageEn:
'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/0.png'));
imagesInfo.add(ImagesInfo(
imageEn:
'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/1.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/1.png'));
super.initState(); super.initState();
} }
@ -108,14 +117,14 @@ class _MyAppointmentsState extends State<MyAppointments>
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
setState(() { setState(() {
isDataLoaded = true;
if (res['AppoimentAllHistoryResultList'].length != 0) { if (res['AppoimentAllHistoryResultList'].length != 0) {
isDataLoaded = true;
res['AppoimentAllHistoryResultList'].forEach((v) { res['AppoimentAllHistoryResultList'].forEach((v) {
widget.appoList widget.appoList
.add(new AppoitmentAllHistoryResultList.fromJson(v)); .add(new AppoitmentAllHistoryResultList.fromJson(v));
}); });
sortAppointmentList(); sortAppointmentList();
openAppointmentsTab();
isDataLoaded = true;
} else {} } else {}
}); });
} else { } else {
@ -224,6 +233,7 @@ class _MyAppointmentsState extends State<MyAppointments>
filterName: element.clinicName, filterName: element.clinicName,
patientDoctorAppointment: element)); patientDoctorAppointment: element));
} }
openAppointmentsTab();
}); });
} }
@ -290,7 +300,7 @@ class _MyAppointmentsState extends State<MyAppointments>
"assets/images/new-design/noAppointmentIcon.png"), "assets/images/new-design/noAppointmentIcon.png"),
Container( Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
child: Text("No Booked Appointments", child: Text(TranslationBase.of(context).noBookedAppo,
style: TextStyle( style: TextStyle(
fontSize: 16.0, fontSize: 16.0,
)), )),
@ -345,8 +355,7 @@ class _MyAppointmentsState extends State<MyAppointments>
Image.asset("assets/images/new-design/noAppointmentIcon.png"), Image.asset("assets/images/new-design/noAppointmentIcon.png"),
Container( Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
child: Text( child: Text(TranslationBase.of(context).noConfirmedAppo,
TranslationBase.of(context).noConfirmedAppointments,
style: TextStyle( style: TextStyle(
fontSize: 16.0, fontSize: 16.0,
)), )),
@ -400,15 +409,16 @@ class _MyAppointmentsState extends State<MyAppointments>
Image.asset("assets/images/new-design/noAppointmentIcon.png"), Image.asset("assets/images/new-design/noAppointmentIcon.png"),
Container( Container(
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
child: child: Text(TranslationBase.of(context).noArrivedAppo,
Text(TranslationBase.of(context).noArrivedAppointments, style: TextStyle(
style: TextStyle( fontSize: 16.0,
fontSize: 16.0, )),
)),
), ),
], ],
), ),
), ),
); );
} }
} }

@ -2,11 +2,11 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.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/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class VisitTicket extends StatefulWidget { class VisitTicket extends StatefulWidget {
List<DoctorList> appoList = []; List<DoctorList> appoList = [];
@ -48,9 +48,10 @@ class _VisitTicketState extends State<VisitTicket> {
} }
getPatientAppointmentCurfewHistory(BuildContext context) { getPatientAppointmentCurfewHistory(BuildContext context) {
loading(true);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service.getPatientAppointmentHistory(true, context).then((res) { service.getPatientAppointmentHistory(true, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res['AppoimentAllHistoryResultList']); print(res['AppoimentAllHistoryResultList']);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
@ -61,20 +62,13 @@ class _VisitTicketState extends State<VisitTicket> {
}); });
} else {} } else {}
}); });
loading(false);
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
loading(false);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
loading(false);
}).showProgressBar(text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
}
loading(bool flag) {
setState(() {
isLoading = flag;
}); });
} }
} }

@ -40,7 +40,7 @@ class ArrivedButtons {
"caller": "insertComplaint" "caller": "insertComplaint"
}, },
{ {
"title": TranslationBase.of(AppGlobal.context).insurance, "title": TranslationBase.of(AppGlobal.context).insuranceApproval,
"subtitle": TranslationBase.of(AppGlobal.context).insuranceSubtitle, "subtitle": TranslationBase.of(AppGlobal.context).insuranceSubtitle,
"icon": "assets/images/new-design/insurance_approvals_icon.png", "icon": "assets/images/new-design/insurance_approvals_icon.png",
"caller": "Insurance" "caller": "Insurance"
@ -58,4 +58,4 @@ class ArrivedButtons {
"caller": "Survey" "caller": "Survey"
} }
]; ];
} }

@ -1,7 +1,9 @@
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart';
import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart'; import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/appoDetailsButtons.dart'; import 'package:diplomaticquarterapp/models/Appointments/appoDetailsButtons.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/ArrivedButtons.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/ArrivedButtons.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AskDocRequestTypeModel.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AskDocRequestTypeModel.dart';
@ -17,6 +19,7 @@ import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.d
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_page.dart'; import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_page.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -24,6 +27,7 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class AppointmentActions extends StatefulWidget { class AppointmentActions extends StatefulWidget {
@ -44,6 +48,8 @@ class AppointmentActions extends StatefulWidget {
class _AppointmentActionsState extends State<AppointmentActions> { class _AppointmentActionsState extends State<AppointmentActions> {
List<AppoDetailsButton> appoButtonsList = []; List<AppoDetailsButton> appoButtonsList = [];
ToDoCountProviderModel toDoProvider;
@override @override
void initState() { void initState() {
_getAppointmentActionButtons(); _getAppointmentActionButtons();
@ -52,8 +58,12 @@ class _AppointmentActionsState extends State<AppointmentActions> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
final double itemHeight = ((size.height - kToolbarHeight - 24) * 0.455) / 2; final double itemHeight = projectViewModel.isArabic
? ((size.height - kToolbarHeight - 24) * 0.47) / 2
: ((size.height - kToolbarHeight - 24) * 0.4) / 2;
final double itemWidth = size.width / 2; final double itemWidth = size.width / 2;
return Container( return Container(
@ -72,51 +82,62 @@ class _AppointmentActionsState extends State<AppointmentActions> {
onTap: () { onTap: () {
_handleButtonClicks(e); _handleButtonClicks(e);
}, },
child: Container( child: Column(
// height: 100.0, mainAxisSize: MainAxisSize.min,
margin: EdgeInsets.all(7.0), children: [
decoration: BoxDecoration( Container(
boxShadow: [ // height: 100.0,
BoxShadow( margin: EdgeInsets.all(7.0),
color: Colors.grey[400], padding: EdgeInsets.only(bottom: 4.0),
blurRadius: 2.0, decoration: BoxDecoration(
spreadRadius: 0.0) boxShadow: [
], BoxShadow(
borderRadius: BorderRadius.circular(10), color: Colors.grey[400],
color: Colors.white), blurRadius: 2.0,
child: Column( spreadRadius: 0.0)
crossAxisAlignment: CrossAxisAlignment.start, ],
mainAxisSize: MainAxisSize.min, borderRadius: BorderRadius.circular(10),
children: <Widget>[ color: Colors.white),
Container( child: Column(
margin: crossAxisAlignment: CrossAxisAlignment.start,
EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 0.0), mainAxisSize: MainAxisSize.min,
child: Text(e.title, children: <Widget>[
overflow: TextOverflow.clip, Container(
style: TextStyle( margin:
color: new Color(0xFF40ACC9), EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 0.0),
letterSpacing: 1.0, child: Text(e.title,
fontSize: 18.0)), overflow: TextOverflow.clip,
), style: TextStyle(
Container( color: new Color(0xFF40ACC9),
margin: letterSpacing: 1.0,
EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0), fontSize: 18.0)),
child: Text(e.subtitle, ),
overflow: TextOverflow.clip, Container(
style: TextStyle( margin:
color: Colors.black, EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0),
letterSpacing: 1.0, child: Text(e.subtitle,
fontSize: 15.0)), overflow: TextOverflow.clip,
), style: TextStyle(
Container( color: Colors.black,
alignment: Alignment.bottomRight, letterSpacing: 1.0,
margin: fontSize: 15.0)),
EdgeInsets.fromLTRB(0.0, 10.0, 10.0, 7.0), ),
child: Image.asset(e.icon, Container(
width: 40.0, height: 40.0), 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(e.icon,
width: 45.0, height: 45.0),
),
],
), ),
], ),
), ],
), ),
)) ))
.toList(), .toList(),
@ -357,6 +378,7 @@ class _AppointmentActionsState extends State<AppointmentActions> {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
print(res); print(res);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
getToDoCount();
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop(); Navigator.of(context).pop();
} else { } else {
@ -368,6 +390,19 @@ class _AppointmentActionsState extends State<AppointmentActions> {
}); });
} }
getToDoCount() {
toDoProvider.setState(0);
ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber']);
} else {}
}).catchError((err) {
print(err);
});
}
openAppointmentRadiology() { openAppointmentRadiology() {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
@ -402,12 +437,11 @@ class _AppointmentActionsState extends State<AppointmentActions> {
navigateToMedicinePrescriptionReport( navigateToMedicinePrescriptionReport(
prescriptionReportEnhList, res['ListPRM']); prescriptionReportEnhList, res['ListPRM']);
} else { } else {
AppToast.showErrorToast(message: "Sorry there is no data"); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
print(err); // AppToast.showErrorToast(message: err);
AppToast.showErrorToast(message: err);
}); });
} }

@ -1,6 +1,12 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/current_remaining_time.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
import '../AppointmentDetails.dart'; import '../AppointmentDetails.dart';
@ -19,6 +25,7 @@ class AppointmentCard extends StatefulWidget {
class _ApointmentCardState extends State<AppointmentCard> { class _ApointmentCardState extends State<AppointmentCard> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return InkWell( return InkWell(
onTap: () { onTap: () {
navigateToAppointmentDetails(context, widget.appo); navigateToAppointmentDetails(context, widget.appo);
@ -42,7 +49,7 @@ class _ApointmentCardState extends State<AppointmentCard> {
fit: BoxFit.fill, height: 60.0, width: 60.0), fit: BoxFit.fill, height: 60.0, width: 60.0),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.57, width: MediaQuery.of(context).size.width * 0.61,
margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0), margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -73,7 +80,12 @@ class _ApointmentCardState extends State<AppointmentCard> {
), ),
Container( Container(
margin: EdgeInsets.only(top: 3.0, bottom: 3.0), margin: EdgeInsets.only(top: 3.0, bottom: 3.0),
child: Text(getDate(widget.appo.appointmentDate).trim(), child: Text(
DateUtil.getWeekDayMonthDayYearDateFormatted(
DateUtil.convertStringToDate(
widget.appo.appointmentDate),
projectViewModel.isArabic ? "ar" : "en")
.trim(),
style: TextStyle( style: TextStyle(
fontSize: 12.0, fontSize: 12.0,
color: Colors.grey[600], color: Colors.grey[600],
@ -97,13 +109,38 @@ class _ApointmentCardState extends State<AppointmentCard> {
Container( Container(
transform: transform:
Matrix4.translationValues(15.0, -40.0, 0.0), Matrix4.translationValues(15.0, -40.0, 0.0),
child: Image.asset( child: projectViewModel.isArabic
"assets/images/new-design/arrow.png", ? Image.asset(
width: 25.0, "assets/images/new-design/arrow_menu_black-ar.png",
height: 25.0), width: 25.0,
height: 25.0)
: Image.asset(
"assets/images/new-design/arrow_menu_black-en.png",
width: 25.0,
height: 25.0),
), ),
], ],
), ),
(widget.appo.patientStatusType == AppointmentType.BOOKED ||
widget.appo.patientStatusType ==
AppointmentType.CONFIRMED)
? Container(
child: CountdownTimer(
endTime: DateTime.now().millisecondsSinceEpoch +
(widget.appo.remaniningHoursTocanPay * 1000) *
60,
widgetBuilder: (_, CurrentRemainingTime time) {
return Text(
'${time.days}:${time.hours}:${time.min}:${time.sec} ' +
TranslationBase.of(context)
.upcomingTimeLeft,
style: TextStyle(
fontSize: 12.0,
color: Color(0xff40ACC9)));
},
),
)
: Container(),
], ],
), ),
), ),

@ -4,7 +4,7 @@ import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResu
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -16,7 +16,10 @@ class PrescriptionReportPage extends StatefulWidget {
dynamic listPres; dynamic listPres;
AppoitmentAllHistoryResultList appo; AppoitmentAllHistoryResultList appo;
PrescriptionReportPage({@required this.prescriptionReportEnhList, @required this.listPres, @required this.appo}); PrescriptionReportPage(
{@required this.prescriptionReportEnhList,
@required this.listPres,
@required this.appo});
@override @override
_PrescriptionReportState createState() => _PrescriptionReportState(); _PrescriptionReportState createState() => _PrescriptionReportState();
@ -113,12 +116,18 @@ class _PrescriptionReportState extends State<PrescriptionReportPage> {
sendPrescriptionReportEmail() { sendPrescriptionReportEmail() {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service.sendPrescriptionEmail(widget.appo.appointmentDate, widget.appo.setupID, widget.listPres, context).then((res) { GifLoaderDialogUtils.showMyDialog(context);
service
.sendPrescriptionEmail(widget.appo.appointmentDate, widget.appo.setupID,
widget.listPres, context)
.then((res) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: 'A copy has been sent to the e-mail'); AppToast.showSuccessToast(message: 'A copy has been sent to the e-mail');
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
}).showProgressBar(text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); });
} }
navigateToPrescriptionDetails(PrescriptionReportEnh prescriptionReportEnh) { navigateToPrescriptionDetails(PrescriptionReportEnh prescriptionReportEnh) {

@ -19,6 +19,8 @@ import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/current_remaining_time.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
@ -60,7 +62,7 @@ class _ToDoState extends State<ToDo> {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).todoList, appBarTitle: TranslationBase.of(context).todoList,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
isShowAppBar: true, isShowAppBar: false,
description: TranslationBase.of(context).infoTodo, description: TranslationBase.of(context).infoTodo,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
@ -208,6 +210,28 @@ class _ToDoState extends State<ToDo> {
), ),
], ],
), ),
Container(
child: CountdownTimer(
endTime: DateTime.now()
.millisecondsSinceEpoch +
(widget.appoList[index]
.remaniningHoursTocanPay *
1000) *
60,
widgetBuilder:
(_, CurrentRemainingTime time) {
return Text(
'${time.days}:${time.hours}:${time.min}:${time.sec} ' +
TranslationBase.of(
context)
.upcomingTimeLeft,
style: TextStyle(
fontSize: 12.0,
color:
Color(0xff40ACC9)));
},
),
),
], ],
), ),
), ),
@ -503,6 +527,7 @@ class _ToDoState extends State<ToDo> {
widget.appoList.forEach((element) { widget.appoList.forEach((element) {
print(element.isLiveCareAppointment); print(element.isLiveCareAppointment);
print(element.nextAction); print(element.nextAction);
print(element.remaniningHoursTocanPay);
}); });
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
@ -510,7 +535,7 @@ class _ToDoState extends State<ToDo> {
}).catchError((err) { }).catchError((err) {
print(err); print(err);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err); err != null ?? AppToast.showErrorToast(message: err);
}); });
} }

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -20,10 +21,19 @@ class InsuranceApproval extends StatefulWidget {
class _InsuranceApprovalState extends State<InsuranceApproval> { class _InsuranceApprovalState extends State<InsuranceApproval> {
List<ImagesInfo> imagesInfo = List(); List<ImagesInfo> imagesInfo = List();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/ar/0.png')); imagesInfo.add(ImagesInfo(
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/en/1.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/ar/1.png')); imageEn:
'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/ar/0.png'));
imagesInfo.add(ImagesInfo(
imageEn:
'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/en/1.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/apporvals/ar/1.png'));
return BaseView<InsuranceViewModel>( return BaseView<InsuranceViewModel>(
onModelReady: widget.appointmentNo != null onModelReady: widget.appointmentNo != null
? (model) => ? (model) =>
@ -63,10 +73,10 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
), ),
if (model.insuranceApproval.length > 0) if (model.insuranceApproval.length > 0)
Container( Container(
width: SizeConfig.widthMultiplier * 18.0, width: 60,
height: SizeConfig.heightMultiplier * 2.8, height: 35,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xffC5272D), color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.circular(19.0)), borderRadius: BorderRadius.circular(19.0)),
child: Center( child: Center(
child: Text( child: Text(
@ -92,29 +102,21 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
model.insuranceApproval[index] model.insuranceApproval[index].patientDescription == "In Patient"
.patientDescription ==
"In Patient"
? Container( ? Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xffB8372C), color: Theme.of(context).primaryColor,
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius.circular(
16.0)), 16.0)),
width: 95.0, width: 115.0,
padding: padding:
EdgeInsets.only(left: 11.5), EdgeInsets.only(left: 11.5),
child: Text( child: Center(
model.insuranceApproval[index] child: Texts(
.patientDescription == TranslationBase.of(context).inPatient,
null color: Colors.white,
? '' ),
: model
.insuranceApproval[
index]
.patientDescription,
style: TextStyle(
color: Colors.white),
), ),
) )
: Container( : Container(
@ -123,20 +125,14 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius.circular(
16.0)), 16.0)),
width: 95.0, width: 115.0,
padding: padding:
EdgeInsets.only(left: 11.5), EdgeInsets.only(left: 11.5),
child: Text( child: Center(
model.insuranceApproval[index] child: Texts(
.patientDescription == TranslationBase.of(context).outpatient,
null color: Colors.white,
? '' ),
: model
.insuranceApproval[
index]
.patientDescription,
style: TextStyle(
color: Colors.white),
), ),
), ),
Padding( Padding(

@ -20,18 +20,23 @@ import '../base/base_view.dart';
class InsuranceCard extends StatefulWidget { class InsuranceCard extends StatefulWidget {
int appointmentNo; int appointmentNo;
InsuranceCard({this.appointmentNo}); InsuranceCard({this.appointmentNo});
@override @override
_InsuranceCardState createState() => _InsuranceCardState(); _InsuranceCardState createState() => _InsuranceCardState();
} }
class _InsuranceCardState extends State<InsuranceCard> { class _InsuranceCardState extends State<InsuranceCard> {
InsuranceCardService _insuranceCardService = locator<InsuranceCardService>(); InsuranceCardService _insuranceCardService = locator<InsuranceCardService>();
List<ImagesInfo> imagesInfo = List(); List<ImagesInfo> imagesInfo = List();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png')); imagesInfo.add(ImagesInfo(
imageEn:
'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png'));
return BaseView<InsuranceViewModel>( return BaseView<InsuranceViewModel>(
onModelReady: (model) => model.getInsurance(), onModelReady: (model) => model.getInsurance(),
@ -79,16 +84,16 @@ class _InsuranceCardState extends State<InsuranceCard> {
padding: EdgeInsets.all(14), padding: EdgeInsets.all(14),
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
border: Border.all(color: Colors.grey,width: 0.2), border: Border.all(
borderRadius: BorderRadius.all(Radius.circular(2)), color: Colors.grey, width: 0.2),
boxShadow: [ borderRadius:
BoxShadow( BorderRadius.all(Radius.circular(2)),
color: Colors.white70, boxShadow: [
), BoxShadow(
color: Colors.white70,
] ),
), ]),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -103,28 +108,34 @@ class _InsuranceCardState extends State<InsuranceCard> {
thickness: 0.5, thickness: 0.5,
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment:
CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
Text( Text(
TranslationBase.of(context).category + TranslationBase.of(context).category +
model.insurance[index].subCategoryDesc, model.insurance[index]
.subCategoryDesc,
style: TextStyle(fontSize: 18.5), style: TextStyle(fontSize: 18.5),
), ),
Text( Text(
TranslationBase.of(context).expirationDate + TranslationBase.of(context)
convertDateFormat( .expirationDate +
model.insurance[index].cardValidTo), convertDateFormat(model
.insurance[index].cardValidTo),
style: TextStyle(fontSize: 18.5), style: TextStyle(fontSize: 18.5),
), ),
Text( Text(
TranslationBase.of(context).patientCard + TranslationBase.of(context)
model.insurance[index].patientCardID, .patientCard +
model
.insurance[index].patientCardID,
style: TextStyle(fontSize: 18.5), style: TextStyle(fontSize: 18.5),
), ),
Text( Text(
TranslationBase.of(context).policyNumber + TranslationBase.of(context)
model .policyNumber +
.insurance[index].insurancePolicyNumber, model.insurance[index]
.insurancePolicyNumber,
style: TextStyle(fontSize: 18.5), style: TextStyle(fontSize: 18.5),
), ),
], ],
@ -132,16 +143,18 @@ class _InsuranceCardState extends State<InsuranceCard> {
Column( Column(
children: <Widget>[ children: <Widget>[
model.insurance[index].isActive == true model.insurance[index].isActive == true
? Text('Active', ? Texts(
style: TextStyle( TranslationBase.of(context)
.activeInsurence,
color: Colors.green, color: Colors.green,
fontWeight: FontWeight.w900, fontWeight: FontWeight.w900,
fontSize: 17.9)) fontSize: 17.9)
: Text('Not Active', : Texts(
style: TextStyle( TranslationBase.of(context)
.notActive,
color: Colors.red, color: Colors.red,
fontWeight: FontWeight.w900, fontWeight: FontWeight.w900,
fontSize: 17.9)) fontSize: 17.9)
], ],
), ),
SizedBox( SizedBox(
@ -151,7 +164,9 @@ class _InsuranceCardState extends State<InsuranceCard> {
Container( Container(
color: Colors.transparent, color: Colors.transparent,
child: SecondaryButton( child: SecondaryButton(
onTap:()=>{ getDetails(model.insurance[index])}, onTap: () => {
getDetails(model.insurance[index])
},
label: TranslationBase.of(context).seeDetails, label: TranslationBase.of(context).seeDetails,
textColor: Colors.white, textColor: Colors.white,
), ),
@ -160,8 +175,6 @@ class _InsuranceCardState extends State<InsuranceCard> {
], ],
), ),
), ),
], ],
), ),
], ],
@ -191,13 +204,13 @@ class _InsuranceCardState extends State<InsuranceCard> {
return newDate.toString(); return newDate.toString();
} }
getDetails(data){
getDetails(data) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
_insuranceCardService.getInsuranceDetails(data).then((value) => { _insuranceCardService.getInsuranceDetails(data).then((value) => {
GifLoaderDialogUtils.hideDialog(context), GifLoaderDialogUtils.hideDialog(context),
Navigator.push(context, Navigator.push(context,
FadePage(page: InsuranceCardDetails(data:value[0]['CheckList']))) FadePage(page: InsuranceCardDetails(data: value[0]['CheckList'])))
});
});
} }
} }

@ -1,35 +1,29 @@
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_html/flutter_html.dart';
import 'package:html/dom.dart' as dom; import 'package:html/dom.dart' as dom;
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class InsuranceCardDetails extends StatefulWidget { class InsuranceCardDetails extends StatelessWidget {
final String data; final String data;
InsuranceCardDetails({this.data}); InsuranceCardDetails({this.data});
@override
_InsuranceCardInsuranceCardDetailsState createState() => _InsuranceCardInsuranceCardDetailsState();
}
//TODO fix it
class _InsuranceCardInsuranceCardDetailsState extends State<InsuranceCardDetails> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return return AppScaffold(
AppScaffold( isShowAppBar: true,
isShowAppBar: true, appBarTitle: TranslationBase.of(context).cardDetail,
body: Center(
body: Center( child: SingleChildScrollView(
child: SingleChildScrollView(
child: Html( child: Html(
data:widget.data, data: data,
) ),
) ),
), ),
); );
} }
} }

@ -1,14 +1,11 @@
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
import 'package:rating_bar/rating_bar.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
class InsuranceUpdate extends StatefulWidget { class InsuranceUpdate extends StatefulWidget {
@override @override
@ -30,12 +27,13 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
_tabController.dispose(); _tabController.dispose();
} }
//TODO implement update card
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<InsuranceViewModel>( return BaseView<InsuranceViewModel>(
onModelReady: (model) => model.getInsuranceUpdated(), onModelReady: (model) => model.getInsuranceUpdated(),
builder: (BuildContext context, InsuranceViewModel model, Widget child) => builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
AppScaffold( AppScaffold(
appBarTitle: 'Insurance Cards', appBarTitle: TranslationBase.of(context).insurCards,
isShowAppBar: true, isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
body: Scaffold( body: Scaffold(
@ -63,7 +61,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
controller: _tabController, controller: _tabController,
isScrollable: true, isScrollable: true,
indicatorWeight: 4.0, indicatorWeight: 4.0,
indicatorColor: Colors.red, indicatorColor: Theme.of(context).primaryColor,
labelColor: Theme.of(context).primaryColor, labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.symmetric( labelPadding: EdgeInsets.symmetric(
horizontal: 13.0, vertical: 2.0), horizontal: 13.0, vertical: 2.0),
@ -72,13 +70,14 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
Container( Container(
width: MediaQuery.of(context).size.width * 0.35, width: MediaQuery.of(context).size.width * 0.35,
child: Center( child: Center(
child: Texts('Card'), child: Texts(TranslationBase.of(context)
.updateInsuranceSubtitle),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.35, width: MediaQuery.of(context).size.width * 0.35,
child: Center( child: Center(
child: Texts('History'), child: Texts(TranslationBase.of(context).history),
), ),
), ),
], ],
@ -97,83 +96,103 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
controller: _tabController, controller: _tabController,
children: <Widget>[ children: <Widget>[
Container( Container(
child: ListView.builder( child: model.getAllSharedRecordsByStatusResponse
itemCount: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.length, .getAllSharedRecordsByStatusList !=
itemBuilder: (BuildContext context, int index) { null
return Container( ? ListView.builder(
margin: EdgeInsets.all(10.0), itemCount: model.getAllSharedRecordsByStatusResponse
child: Card( .getAllSharedRecordsByStatusList.length,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), itemBuilder: (BuildContext context, int index) {
color: Colors.white, return Container(
shape: RoundedRectangleBorder( margin: EdgeInsets.all(10.0),
borderRadius: BorderRadius.circular(10), child: Card(
), margin:
child: Container( EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
width: MediaQuery.of(context).size.width, color: Colors.white,
padding: EdgeInsets.all(10.0), shape: RoundedRectangleBorder(
child: Row( borderRadius: BorderRadius.circular(10),
crossAxisAlignment: CrossAxisAlignment.start, ),
mainAxisSize: MainAxisSize.max, child: Container(
children: <Widget>[ width: MediaQuery.of(context).size.width,
Expanded( padding: EdgeInsets.all(10.0),
flex: 3, child: Row(
child: Container( crossAxisAlignment:
margin: EdgeInsets.only( CrossAxisAlignment.start,
top: 2.0, left: 10.0, right: 20.0), mainAxisSize: MainAxisSize.max,
child: Column( children: <Widget>[
crossAxisAlignment: Expanded(
CrossAxisAlignment.start, flex: 3,
children: <Widget>[ child: Container(
Text( margin: EdgeInsets.only(
model.getAllSharedRecordsByStatusResponse top: 2.0,
.getAllSharedRecordsByStatusList[ left: 10.0,
index].patientName, right: 20.0),
style: TextStyle( child: Column(
fontSize: 14.0, crossAxisAlignment:
color: Colors.black, CrossAxisAlignment.start,
fontWeight: FontWeight.w500, children: <Widget>[
letterSpacing: 1.0)), Texts(
Text( model
'File No.' + .getAllSharedRecordsByStatusResponse
model.getAllSharedRecordsByStatusResponse .getAllSharedRecordsByStatusList[
.getAllSharedRecordsByStatusList[ index]
index].patientID.toString(), .patientName,
style: TextStyle( fontSize: 14,
fontSize: 14.0, color: Colors.black,
color: Colors.black, fontWeight: FontWeight.w500,
fontWeight: FontWeight.w500, ),
letterSpacing: 1.0)), SizedBox(
], height: 8,
),
Texts(
TranslationBase.of(context)
.fileno +
": " +
model
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList[
index]
.patientID
.toString(),
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.w500,
)
],
),
),
), ),
), if (false)
), Expanded(
Expanded( flex: 2,
flex: 2, child: Container(
child: Container( // height: MediaQuery.of(context).size.height * 0.12,
// height: MediaQuery.of(context).size.height * 0.12, margin: EdgeInsets.only(top: 2.0),
margin: EdgeInsets.only(top: 2.0), child: Column(
child: Column( children: <Widget>[
children: <Widget>[ Container(
Container( child: SecondaryButton(
child: SecondaryButton( label: TranslationBase.of(
label: 'Update', context)
small: true, .updateInsurance,
textColor: Colors.white, small: true,
// color: Colors.grey, textColor: Colors.white,
// color: Colors.grey,
),
//height: 45,
// width:90
),
],
), ),
//height: 45,
// width:90
), ),
], )
), ],
), ),
) ),
],
), ),
), );
), })
); : Container(),
}),
), ),
Container( Container(
child: ListView.builder( child: ListView.builder(
@ -210,35 +229,40 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text("TAMER FANASHEH ", Texts(
style: TextStyle( model.user.firstName +
fontSize: 14.0, " " +
color: Colors.black, model.user.lastName,
fontWeight: fontSize: 14,
FontWeight.w500, fontWeight: FontWeight.w500,
letterSpacing: 1.0)), color: Colors.black,
Text( ),
'File No.' + SizedBox(
model height: 8,
.insuranceUpdate[ ),
index] Texts(
.patientID TranslationBase.of(context)
.toString(), .fileno +
style: TextStyle( ": " +
fontSize: 14.0, model
color: Colors.black, .insuranceUpdate[
fontWeight: index]
FontWeight.w500, .patientID
letterSpacing: 1.0)), .toString(),
Text( fontSize: 14,
model.insuranceUpdate[index] fontWeight: FontWeight.w500,
.createdOn, color: Colors.black,
style: TextStyle( ),
fontSize: 14.0, SizedBox(
color: Colors.black, height: 8,
fontWeight: ),
FontWeight.w500, Texts(
letterSpacing: 1.0)), model.insuranceUpdate[index]
.createdOn,
fontSize: 14,
fontWeight: FontWeight.w500,
color: Colors.black,
),
], ],
), ),
), ),
@ -246,7 +270,6 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
Expanded( Expanded(
flex: 1, flex: 1,
child: Container( child: Container(
// height: MediaQuery.of(context).size.height * 0.12,
margin: EdgeInsets.only(top: 20.0), margin: EdgeInsets.only(top: 20.0),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -257,15 +280,13 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
top: 13.5, left: 2.0), top: 13.5, left: 2.0),
child: Text( child: Texts(
model model.insuranceUpdate[index]
.insuranceUpdate[ .statusDescription,
index] textAlign: TextAlign.center,
.statusDescription, fontSize: 12,
textAlign: color: Colors.black,
TextAlign.center, ),
style: TextStyle(
fontSize: 12.0)),
), ),
], ],
), ),

@ -191,7 +191,7 @@ class _HomePageState extends State<HomePage> {
) )
: Container( : Container(
width: double.infinity, width: double.infinity,
height: projectViewModel.isArabic ? 180 : 150, height: projectViewModel.isArabic ? 180 : 160,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle, shape: BoxShape.rectangle,

@ -3,12 +3,11 @@ import 'package:diplomaticquarterapp/pages/livecare/widgets/LiveCarePendingReque
import 'package:diplomaticquarterapp/pages/livecare/widgets/clinic_list.dart'; import 'package:diplomaticquarterapp/pages/livecare/widgets/clinic_list.dart';
import 'package:diplomaticquarterapp/pages/livecare/widgets/livecare_logs.dart'; import 'package:diplomaticquarterapp/pages/livecare/widgets/livecare_logs.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'livecare_type_select.dart';
class LiveCareHome extends StatefulWidget { class LiveCareHome extends StatefulWidget {
static bool showFooterButton = true; static bool showFooterButton = true;
@ -93,40 +92,37 @@ class _LiveCareHomeState extends State<LiveCareHome>
hasLiveCareRequest = false; hasLiveCareRequest = false;
}); });
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
PatientERVirtualHistoryResponse patientERVirtualHistoryResponse = PatientERVirtualHistoryResponse patientERVirtualHistoryResponse =
new PatientERVirtualHistoryResponse(); new PatientERVirtualHistoryResponse();
service service.getLivecareHistory(context).then((res) {
.getLivecareHistory(context) GifLoaderDialogUtils.hideDialog(context);
.then((res) { setState(() {
setState(() { print(res['ErRequestHistoryList'].length);
print(res['ErRequestHistoryList'].length); if (res['ErRequestHistoryList'].length != 0) {
if (res['ErRequestHistoryList'].length != 0) { patientERVirtualHistoryResponse =
patientERVirtualHistoryResponse = PatientERVirtualHistoryResponse.fromJson(res);
PatientERVirtualHistoryResponse.fromJson(res); erRequestHistoryList =
erRequestHistoryList = patientERVirtualHistoryResponse.erRequestHistoryList;
patientERVirtualHistoryResponse.erRequestHistoryList;
if (patientERVirtualHistoryResponse if (patientERVirtualHistoryResponse
.erRequestHistoryList[0].callStatus < .erRequestHistoryList[0].callStatus <
4) { 4) {
pendingERRequestHistoryList = pendingERRequestHistoryList =
patientERVirtualHistoryResponse.erRequestHistoryList[0]; patientERVirtualHistoryResponse.erRequestHistoryList[0];
hasLiveCareRequest = true; hasLiveCareRequest = true;
} else { } else {
hasLiveCareRequest = false; hasLiveCareRequest = false;
} }
} }
}); });
}) setState(() {
.catchError((err) { isDataLoaded = true;
print(err); });
}) }).catchError((err) {
.showProgressBar( GifLoaderDialogUtils.hideDialog(context);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) AppToast.showErrorToast(message: err);
.then((value) { print(err);
setState(() { });
isDataLoaded = true;
});
});
} }
} }

@ -5,11 +5,11 @@ import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class LiveCareHistoryCard extends StatefulWidget { class LiveCareHistoryCard extends StatefulWidget {
ErRequestHistoryList erRequestHistoryList; ErRequestHistoryList erRequestHistoryList;
@ -177,6 +177,7 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
sendInvoiceEmail(context) { sendInvoiceEmail(context) {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.sendLiveCareInvoiceEmail( .sendLiveCareInvoiceEmail(
widget.erRequestHistoryList.appointmentNo.toString(), widget.erRequestHistoryList.appointmentNo.toString(),
@ -184,12 +185,13 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
authUser.emailAddress, authUser.emailAddress,
context) context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: "LiveCare invoice sent successfully"); AppToast.showSuccessToast(message: "LiveCare invoice sent successfully");
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
getAuthenticatedUser() async { getAuthenticatedUser() async {

@ -3,9 +3,9 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/PatientERVirtualHistoryR
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class LiveCarePendingRequest extends StatefulWidget { class LiveCarePendingRequest extends StatefulWidget {
ErRequestHistoryList pendingERRequestHistoryList; ErRequestHistoryList pendingERRequestHistoryList;
@ -149,19 +149,19 @@ class _LiveCarePendingRequestState extends State<LiveCarePendingRequest> {
cancelLiveCareRequest() { cancelLiveCareRequest() {
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.cancelLiveCareRequest(widget.pendingERRequestHistoryList.vCID, context) .cancelLiveCareRequest(widget.pendingERRequestHistoryList.vCID, context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast( AppToast.showSuccessToast(
message: "LiveCare request cancelled successfully"); message: "LiveCare request cancelled successfully");
widget.getLiveCareHistory();
}) })
.catchError((err) { .catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
})
.showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6))
.then((value) {
widget.getLiveCareHistory();
}); });
} }
} }

@ -2,8 +2,8 @@ import 'package:diplomaticquarterapp/models/LiveCare/ClinicsServiceTimingsRespon
import 'package:diplomaticquarterapp/models/LiveCare/LiveCareClinicsListResponse.dart'; import 'package:diplomaticquarterapp/models/LiveCare/LiveCareClinicsListResponse.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'ClinicTimingsDialog.dart'; import 'ClinicTimingsDialog.dart';
@ -90,9 +90,11 @@ class _State extends State<ClinicCard> {
getClinicTimings(PatientERGetClinicsList patientERGetClinicsList) { getClinicTimings(PatientERGetClinicsList patientERGetClinicsList) {
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.getLivecareClinicTiming(patientERGetClinicsList.serviceID, context) .getLivecareClinicTiming(patientERGetClinicsList.serviceID, context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
clinicsServiceTimingsResponse = clinicsServiceTimingsResponse =
@ -129,8 +131,9 @@ class _State extends State<ClinicCard> {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
} }

@ -17,13 +17,13 @@ import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class ClinicList extends StatefulWidget { class ClinicList extends StatefulWidget {
final Function getLiveCareHistory; final Function getLiveCareHistory;
@ -79,31 +79,27 @@ class _clinic_listState extends State<ClinicList> {
void startLiveCare() { void startLiveCare() {
bool isError = false; bool isError = false;
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
ERAppointmentFeesResponse erAppointmentFeesResponse = ERAppointmentFeesResponse erAppointmentFeesResponse =
new ERAppointmentFeesResponse(); new ERAppointmentFeesResponse();
service service.getERAppointmentFees(selectedClinicID, context).then((res) {
.getERAppointmentFees(selectedClinicID, context) GifLoaderDialogUtils.hideDialog(context);
.then((res) { if (res['HasAppointment'] == true) {
if (res['HasAppointment'] == true) { isError = true;
isError = true; showLiveCareCancelDialog(res['ErrorEndUserMessage'], res);
showLiveCareCancelDialog(res['ErrorEndUserMessage'], res); } else {
} else { erAppointmentFeesResponse = ERAppointmentFeesResponse.fromJson(res);
erAppointmentFeesResponse = ERAppointmentFeesResponse.fromJson(res); isError = false;
isError = false; }
} if (!isError)
}) getERAppointmentTime(
.catchError((err) { erAppointmentFeesResponse.getERAppointmentFeesList);
print(err); }).catchError((err) {
isError = true; GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err); print(err);
}) isError = true;
.showProgressBar( AppToast.showErrorToast(message: err);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) });
.then((value) {
if (!isError)
getERAppointmentTime(
erAppointmentFeesResponse.getERAppointmentFeesList);
});
} }
showLiveCareCancelDialog(String msg, res) { showLiveCareCancelDialog(String msg, res) {
@ -112,8 +108,7 @@ class _clinic_listState extends State<ClinicList> {
confirmMessage: msg, confirmMessage: msg,
okText: TranslationBase.of(context).confirm, okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps, cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => okFunction: () => {cancelAppointment(res)},
{cancelAppointment(res)},
cancelFunction: () => {}); cancelFunction: () => {});
dialog.showAlertDialog(context); dialog.showAlertDialog(context);
} }
@ -132,38 +127,37 @@ class _clinic_listState extends State<ClinicList> {
appo.appointmentDate = res['AppointmentDate']; appo.appointmentDate = res['AppointmentDate'];
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service.cancelAppointment(appo, context).then((res) {
.cancelAppointment(appo, context) GifLoaderDialogUtils.hideDialog(context);
.then((res) { print(res);
print(res); if (res['MessageStatus'] == 1) {
if (res['MessageStatus'] == 1) { AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); startLiveCare();
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}) }).catchError((err) {
.catchError((err) { GifLoaderDialogUtils.hideDialog(context);
print(err); AppToast.showErrorToast(message: err);
}) print(err);
.showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6))
.then((value) {
startLiveCare();
});
} }
getERAppointmentTime(GetERAppointmentFeesList getERAppointmentFeesList) { getERAppointmentTime(GetERAppointmentFeesList getERAppointmentFeesList) {
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service.getERAppointmentTime(selectedClinicID, context).then((res) { service.getERAppointmentTime(selectedClinicID, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res); print(res);
showLiveCarePaymentDialog( showLiveCarePaymentDialog(
getERAppointmentFeesList, res['WatingtimeInteger']); getERAppointmentFeesList, res['WatingtimeInteger']);
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
showLiveCarePaymentDialog( showLiveCarePaymentDialog(
@ -320,12 +314,14 @@ class _clinic_listState extends State<ClinicList> {
checkPaymentStatus(AppoitmentAllHistoryResultList appo) { checkPaymentStatus(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.checkPaymentStatus( .checkPaymentStatus(
Utils.getAppointmentTransID( Utils.getAppointmentTransID(
appo.projectID, appo.clinicID, appo.appointmentNo), appo.projectID, appo.clinicID, appo.appointmentNo),
context) context)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
print("Printing Payment Status Reponse!!!!"); print("Printing Payment Status Reponse!!!!");
print(res); print(res);
String paymentInfo = res['Response_Message']; String paymentInfo = res['Response_Message'];
@ -336,27 +332,27 @@ class _clinic_listState extends State<ClinicList> {
AppToast.showErrorToast(message: res['Response_Message']); AppToast.showErrorToast(message: res['Response_Message']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
addNewCallForPatientER(String clientRequestID) { addNewCallForPatientER(String clientRequestID) {
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.addNewCallForPatientER(selectedClinicID, clientRequestID, context) .addNewCallForPatientER(selectedClinicID, clientRequestID, context)
.then((res) { .then((res) {
AppToast.showSuccessToast( GifLoaderDialogUtils.hideDialog(context);
message: "New Call has been added successfully"); AppToast.showSuccessToast(
}) message: "New Call has been added successfully");
.catchError((err) { widget.getLiveCareHistory();
print(err); }).catchError((err) {
}) GifLoaderDialogUtils.hideDialog(context);
.showProgressBar( AppToast.showErrorToast(message: err);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) print(err);
.then((value) { });
widget.getLiveCareHistory();
});
} }
getLanguageID() async { getLanguageID() async {
@ -366,7 +362,9 @@ class _clinic_listState extends State<ClinicList> {
getLiveCareClinicsList() { getLiveCareClinicsList() {
isDataLoaded = false; isDataLoaded = false;
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service.getLivecareClinics(context).then((res) { service.getLivecareClinics(context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res['PatientER_GetClinicsList'].length); print(res['PatientER_GetClinicsList'].length);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
@ -384,15 +382,18 @@ class _clinic_listState extends State<ClinicList> {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
getLiveCareScheduleClinicsList() { getLiveCareScheduleClinicsList() {
isDataLoaded = false; isDataLoaded = false;
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
service.getLiveCareScheduledClinics(context).then((res) { service.getLiveCareScheduledClinics(context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res['ClinicsHaveScheduleList'].length); print(res['ClinicsHaveScheduleList'].length);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
@ -411,9 +412,10 @@ class _clinic_listState extends State<ClinicList> {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
openLiveCareSelectionDialog() { openLiveCareSelectionDialog() {
@ -605,13 +607,13 @@ class _clinic_listState extends State<ClinicList> {
void startScheduleLiveCare() { void startScheduleLiveCare() {
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
LiveCareService service = new LiveCareService(); LiveCareService service = new LiveCareService();
GifLoaderDialogUtils.showMyDialog(context);
List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital = List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital =
List(); List();
service service
.getLiveCareScheduledDoctorList(context, selectedClinicID) .getLiveCareScheduledDoctorList(context, selectedClinicID)
.then((res) { .then((res) {
print(res['DoctorByClinicIDList']); GifLoaderDialogUtils.hideDialog(context);
print(res['DoctorByClinicIDList'].length);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
if (res['DoctorByClinicIDList'].length != 0) { if (res['DoctorByClinicIDList'].length != 0) {
@ -650,9 +652,10 @@ class _clinic_listState extends State<ClinicList> {
context, doctorsList, _patientDoctorAppointmentListHospital); context, doctorsList, _patientDoctorAppointmentListHospital);
} else {} } else {}
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Future navigateToSearchResults( Future navigateToSearchResults(

@ -20,13 +20,11 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.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:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class Login extends StatefulWidget { class Login extends StatefulWidget {
@override @override

@ -1,7 +1,5 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/ask_doctor/request_type.dart'; import 'package:diplomaticquarterapp/pages/medical/ask_doctor/request_type.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
@ -12,7 +10,6 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class AskDoctorPage extends StatelessWidget { class AskDoctorPage extends StatelessWidget {
@override @override

@ -11,6 +11,7 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
@ -19,7 +20,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import '../../../core/model/my_balance/AdvanceModel.dart'; import '../../../core/model/my_balance/AdvanceModel.dart';
import 'confirm_payment_page.dart'; import 'confirm_payment_page.dart';
@ -56,7 +56,11 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
void initState() { void initState() {
super.initState(); super.initState();
getAuthUser(); getAuthUser();
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png')); imagesInfo.add(ImagesInfo(
imageEn:
'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png'));
} }
@override @override
@ -107,13 +111,13 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
if (beneficiaryType == BeneficiaryType.MyFamilyFiles) if (beneficiaryType == BeneficiaryType.MyFamilyFiles)
InkWell( InkWell(
onTap: () { onTap: () {
GifLoaderDialogUtils.showMyDialog(context);
model.getFamilyFiles().then((value) { model.getFamilyFiles().then((value) {
GifLoaderDialogUtils.hideDialog(context);
confirmSelectFamilyDialog(model confirmSelectFamilyDialog(model
.getAllSharedRecordsByStatusResponse .getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList); .getAllSharedRecordsByStatusList);
}).showProgressBar( });
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
@ -145,17 +149,16 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
if (beneficiaryType == BeneficiaryType.OtherAccount) if (beneficiaryType == BeneficiaryType.OtherAccount)
InkWell( InkWell(
onTap: () { onTap: () {
if (_fileTextController.text.isNotEmpty) if (_fileTextController.text.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context);
model model
.getPatientInfoByPatientID( .getPatientInfoByPatientID(
id: _fileTextController.text) id: _fileTextController.text)
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context);
confirmSelectPatientDialog(model.patientInfoList); confirmSelectPatientDialog(model.patientInfoList);
}).showProgressBar( });
text: "Loading", } else
backgroundColor:
Colors.blue.withOpacity(0.6));
else
AppToast.showErrorToast( AppToast.showErrorToast(
message: 'Please Enter The File Number'); message: 'Please Enter The File Number');
}, },
@ -268,10 +271,11 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
advanceModel.amount = amount; advanceModel.amount = amount;
advanceModel.mobileNumber = mobileNum; advanceModel.mobileNumber = mobileNum;
advanceModel.patientName = patientName; advanceModel.patientName = patientName;
GifLoaderDialogUtils.showMyDialog(context);
model model
.getPatientInfoByPatientIDAndMobileNumber(advanceModel) .getPatientInfoByPatientIDAndMobileNumber(advanceModel)
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (model.state != ViewState.Error && if (model.state != ViewState.Error &&
model.state != ViewState.ErrorLocal) { model.state != ViewState.ErrorLocal) {
Utils.hideKeyboard(context); Utils.hideKeyboard(context);
@ -295,9 +299,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
}, },
); );
} }
}).showProgressBar( });
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
}, },
), ),
)), )),

@ -19,7 +19,6 @@ import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'dialogs/ConfirmSMSDialog.dart'; import 'dialogs/ConfirmSMSDialog.dart';
import 'new_text_Field.dart'; import 'new_text_Field.dart';
@ -165,16 +164,16 @@ class ConfirmPaymentPage extends StatelessWidget {
label: TranslationBase.of(context).confirm.toUpperCase(), label: TranslationBase.of(context).confirm.toUpperCase(),
disabled: model.state == ViewState.Busy, disabled: model.state == ViewState.Busy,
onTap: () { onTap: () {
GifLoaderDialogUtils.showMyDialog(context);
model model
.sendActivationCodeForAdvancePayment( .sendActivationCodeForAdvancePayment(
patientID: int.parse(advanceModel.fileNumber), patientID: int.parse(advanceModel.fileNumber),
projectID: advanceModel.hospitalsModel.iD) projectID: advanceModel.hospitalsModel.iD)
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (model.state != ViewState.ErrorLocal && if (model.state != ViewState.ErrorLocal &&
model.state != ViewState.Error) showSMSDialog(); model.state != ViewState.Error) showSMSDialog();
}).showProgressBar( });
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
}, },
), ),
), ),

@ -57,7 +57,7 @@ class MyBalancePage extends StatelessWidget {
color: Colors.white, color: Colors.white,
), ),
Texts( Texts(
'${model.totalAdvanceBalanceAmount ?? 0} SAR', '${model.totalAdvanceBalanceAmount ?? 0} '+ TranslationBase.of(context).sar,
color: Colors.white, color: Colors.white,
bold: true, bold: true,
), ),
@ -81,12 +81,13 @@ class MyBalancePage extends StatelessWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts(model.patientAdvanceBalanceAmountList[index]
.projectDescription),
Texts( Texts(
'${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} SAR', '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} '+TranslationBase.of(context).sar,
bold: true, bold: true,
), ),
Texts(model.patientAdvanceBalanceAmountList[index]
.projectDescription),
], ],
), ),
), ),

@ -2,7 +2,7 @@ import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/laboratory_result_widget.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/LabResult/laboratory_result_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

@ -81,11 +81,11 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
padding: EdgeInsets.symmetric(vertical: 5.0), padding: EdgeInsets.symmetric(vertical: 5.0),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
if(model.isLogin) if (model.isLogin)
Container( Container(
width: double.infinity, width: double.infinity,
height: 55, height: 55,
), ),
Row( Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
@ -112,29 +112,63 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
.myAppointmentsList, .myAppointmentsList,
hasBadge: true, hasBadge: true,
), ),
Positioned( projectViewModel.isArabic
right: 0.0, ? Positioned(
child: Badge( left: 0.0,
toAnimate: false, child: Badge(
position: toAnimate: false,
BadgePosition.topEnd(), shape:
shape: BadgeShape.circle, BadgeShape.circle,
badgeColor: Color(0xFF40ACC9) badgeColor: Color(
.withOpacity(1.0), 0xFF40ACC9)
borderRadius: .withOpacity(1.0),
BorderRadius.circular(8), borderRadius:
badgeContent: Container( BorderRadius
padding: .circular(8),
EdgeInsets.all(2.0), badgeContent: Container(
child: Text( padding:
appoCountProvider.count EdgeInsets.all(
.toString(), 2.0),
style: TextStyle( child: Text(
color: Colors.white, appoCountProvider
fontSize: 16.0)), .count
), .toString(),
), style: TextStyle(
), color: Colors
.white,
fontSize:
16.0)),
),
),
)
: Positioned(
right: 0.0,
child: Badge(
toAnimate: false,
shape:
BadgeShape.circle,
badgeColor: Color(
0xFF40ACC9)
.withOpacity(1.0),
borderRadius:
BorderRadius
.circular(8),
badgeContent: Container(
padding:
EdgeInsets.all(
2.0),
child: Text(
appoCountProvider
.count
.toString(),
style: TextStyle(
color: Colors
.white,
fontSize:
16.0)),
),
),
),
]) ])
: MedicalProfileItem( : MedicalProfileItem(
title: TranslationBase.of(context) title: TranslationBase.of(context)
@ -156,7 +190,8 @@ class _MedicalProfilePageState extends State<MedicalProfilePage> {
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).lab, title: TranslationBase.of(context).lab,
imagePath: 'lab_result_icon.png', imagePath: 'lab_result_icon.png',
subTitle: TranslationBase.of(context).labSubtitle, subTitle: TranslationBase.of(context)
.labSubtitle,
), ),
), ),
), ),

@ -105,22 +105,29 @@ class PrescriptionDetailsPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
height: 30, height: 30,
width: double.infinity, width: double.infinity,
child: Center(child: Texts(TranslationBase.of(context).way))), child: Center(
child: Texts(TranslationBase.of(context).way))),
Container( Container(
color: Colors.white, color: Colors.white,
height: 30, height: 30,
width: double.infinity, width: double.infinity,
child: Center(child: Texts(TranslationBase.of(context).average))), child: Center(
child:
Texts(TranslationBase.of(context).average))),
Container( Container(
color: Colors.white, color: Colors.white,
height: 30, height: 30,
width: double.infinity, width: double.infinity,
child: Center(child: Texts(TranslationBase.of(context).dailyDoses))), child: Center(
child: Texts(
TranslationBase.of(context).dailyDoses))),
Container( Container(
color: Colors.white, color: Colors.white,
height: 30, height: 30,
width: double.infinity, width: double.infinity,
child: Center(child: Texts(TranslationBase.of(context).period))), child: Center(
child:
Texts(TranslationBase.of(context).period))),
], ],
), ),
TableRow( TableRow(
@ -136,7 +143,8 @@ class PrescriptionDetailsPage extends StatelessWidget {
height: 50, height: 50,
width: double.infinity, width: double.infinity,
child: Center( child: Center(
child: Text(prescriptionReport.frequencyN?? ''))), child:
Text(prescriptionReport.frequencyN ?? ''))),
Container( Container(
color: Colors.white, color: Colors.white,
height: 50, height: 50,
@ -174,7 +182,7 @@ class PrescriptionDetailsPage extends StatelessWidget {
SizedBox( SizedBox(
height: 5, height: 5,
), ),
Texts(prescriptionReport.remarks), Texts(prescriptionReport.remarks ?? ''),
], ],
), ),
), ),

@ -83,7 +83,7 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage>
controller: _tabController, controller: _tabController,
indicatorWeight: 5.0, indicatorWeight: 5.0,
indicatorSize: TabBarIndicatorSize.label, indicatorSize: TabBarIndicatorSize.label,
indicatorColor: Colors.red[800], indicatorColor: Theme.of(context).primaryColor,
labelColor: Theme.of(context).primaryColor, labelColor: Theme.of(context).primaryColor,
labelPadding: labelPadding:
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0), EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),

@ -37,7 +37,7 @@ class PrescriptionsPage extends StatelessWidget {
leading: Radio( leading: Radio(
value: FilterType.Clinic, value: FilterType.Clinic,
groupValue: prescriptionsViewModel.filterType, groupValue: prescriptionsViewModel.filterType,
activeColor: Colors.red[800], activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) { onChanged: (FilterType value) {
prescriptionsViewModel.setFilterType(value); prescriptionsViewModel.setFilterType(value);
}, },
@ -55,7 +55,7 @@ class PrescriptionsPage extends StatelessWidget {
leading: Radio( leading: Radio(
value: FilterType.Hospital, value: FilterType.Hospital,
groupValue: prescriptionsViewModel.filterType, groupValue: prescriptionsViewModel.filterType,
activeColor: Colors.red[800], activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) { onChanged: (FilterType value) {
prescriptionsViewModel.setFilterType(value); prescriptionsViewModel.setFilterType(value);
}, },

@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/radiology_view_mode
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.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:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -27,17 +28,32 @@ class RadiologyDetailsPage extends StatelessWidget {
baseViewModel: model, baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Text('${finalRadiology.reportData}',textAlign: TextAlign.center,), Text(
'${finalRadiology.reportData}',
textAlign: TextAlign.center,
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts(
'${finalRadiology.reportData}',
textAlign: TextAlign.start,
fontSize: 17,
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.2,
)
], ],
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
width: double.infinity, width: double.infinity,
height: MediaQuery.of(context).size.height * 0.2,
color: Colors.grey[100], color: Colors.grey[100],
child: Column( child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
Divider(), Divider(),
Container( Container(

@ -86,32 +86,32 @@ class _HomeReportPageState extends State<HomeReportPage>
controller: _tabController, controller: _tabController,
indicatorWeight: 5.0, indicatorWeight: 5.0,
indicatorSize: TabBarIndicatorSize.label, indicatorSize: TabBarIndicatorSize.label,
indicatorColor: Colors.red[800], indicatorColor: Theme.of(context).primaryColor,
labelColor: Theme.of(context).primaryColor, labelColor: Theme.of(context).primaryColor,
unselectedLabelColor: Colors.grey[800], unselectedLabelColor: Colors.grey[800],
tabs: [ tabs: [
Container( Container(
width: MediaQuery.of(context).size.width * 0.22, width: MediaQuery.of(context).size.width * 0.22,
child: Center( child: Center(
child: Texts('Requested'), child: Texts(TranslationBase.of(context).requested),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.22, width: MediaQuery.of(context).size.width * 0.22,
child: Center( child: Center(
child: Texts('Ready'), child: Texts(TranslationBase.of(context).ready),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.22, width: MediaQuery.of(context).size.width * 0.22,
child: Center( child: Center(
child: Texts('Completed'), child: Texts(TranslationBase.of(context).completed),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.22, width: MediaQuery.of(context).size.width * 0.22,
child: Center( child: Center(
child: Texts('Cancelled'), child: Texts(TranslationBase.of(context).cancelled),
), ),
), ),
], ],
@ -152,7 +152,7 @@ class _HomeReportPageState extends State<HomeReportPage>
height: 90, height: 90,
margin: EdgeInsets.all(8.0), margin: EdgeInsets.all(8.0),
child: Button( child: Button(
label: 'Resend order & deliver', label: TranslationBase.of(context).requestMedicalReport,
backgroundColor: Colors.grey[800], backgroundColor: Colors.grey[800],
onTap: () => Navigator.push( onTap: () => Navigator.push(
context, context,

@ -3,9 +3,9 @@ import 'dart:io';
import 'package:carousel_slider/carousel_slider.dart'; import 'package:carousel_slider/carousel_slider.dart';
import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/health_data_list.dart'; import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/health_data_list.dart';
import 'package:diplomaticquarterapp/services/smartwatch_integration/SmartWatchIntegrationService.dart'; import 'package:diplomaticquarterapp/services/smartwatch_integration/SmartWatchIntegrationService.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class SmartWatchInstructions extends StatefulWidget { class SmartWatchInstructions extends StatefulWidget {
@ -796,7 +796,9 @@ class _SmartWatchInstructionsState extends State<SmartWatchInstructions> {
getLastPatientRecord(BuildContext context) { getLastPatientRecord(BuildContext context) {
SmartWatchIntegrationService service = new SmartWatchIntegrationService(); SmartWatchIntegrationService service = new SmartWatchIntegrationService();
GifLoaderDialogUtils.showMyDialog(context);
service.getLastPatientRecord(context).then((res) { service.getLastPatientRecord(context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
print(res['Med_GetPatientLastRecordList']); print(res['Med_GetPatientLastRecordList']);
setState(() { setState(() {
@ -807,9 +809,9 @@ class _SmartWatchInstructionsState extends State<SmartWatchInstructions> {
}); });
} else {} } else {}
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
_openHealthDataList() { _openHealthDataList() {

@ -115,12 +115,12 @@ class PaymentService extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Texts(
'My Balances', TranslationBase.of(context).hmg,
color: HexColor('#B61422'), color: HexColor('#B61422'),
bold: true, bold: true,
), ),
Texts( Texts(
TranslationBase.of(context).payment, TranslationBase.of(context).wallet,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),

@ -42,9 +42,9 @@ class _SplashScreenState extends State<SplashScreen> {
var data = await sharedPref.getObject(USER_PROFILE); var data = await sharedPref.getObject(USER_PROFILE);
if (data != null) { if (data != null) {
AuthenticatedUser userData = AuthenticatedUser.fromJson(data); AuthenticatedUser userData = AuthenticatedUser.fromJson(data);
Provider.of<ProjectViewModel>(context, listen: false).isLogin = true; // Provider.of<ProjectViewModel>(context, listen: false).isLogin = true;
authenticatedUserObject.isLogin = true; //authenticatedUserObject.isLogin = true;
authenticatedUserObject.user = userData; //authenticatedUserObject.user = userData;
} }
} }

@ -19,6 +19,21 @@ class DateUtil {
return DateTime.now(); return DateTime.now();
} }
static DateTime convertStringToDateTime(String date) {
if (date != null) {
try {
var dateT = date.split('/');
var year = dateT[2].substring(0,4);
return DateTime(int.parse(year),int.parse(dateT[1]),int.parse(dateT[0]));
} catch (e) {
print(e);
}
return DateTime.now();
} else
return DateTime.now();
}
static String convertDateToString(DateTime date) { static String convertDateToString(DateTime date) {
const start = "/Date("; const start = "/Date(";
const end = "+0300)"; const end = "+0300)";

@ -58,8 +58,8 @@ class LocationUtils {
void setLocation(Position position) { void setLocation(Position position) {
print(position); print(position);
this.sharedPref.setDouble(USER_LAT, position.latitude); this.sharedPref.setDouble(USER_LAT, position.latitude ?? 0.0);
this.sharedPref.setDouble(USER_LONG, position.longitude); this.sharedPref.setDouble(USER_LONG, position.longitude ?? 0.0);
} }
void setZeroLocation() { void setZeroLocation() {

@ -948,6 +948,58 @@ class TranslationBase {
String get familyInfo => localizedValues['family-info'][locale.languageCode]; String get familyInfo => localizedValues['family-info'][locale.languageCode];
String get profileUpdate => String get profileUpdate =>
localizedValues['update-succ'][locale.languageCode]; localizedValues['update-succ'][locale.languageCode];
String get dentalComplaints =>
localizedValues['dental-complains'][locale.languageCode];
String get emptyResult =>
localizedValues['empty-result'][locale.languageCode];
String get noBookedAppo =>
localizedValues['no-booked-appointment'][locale.languageCode];
String get noConfirmedAppo =>
localizedValues['no-confirmed-appointment'][locale.languageCode];
String get noArrivedAppo =>
localizedValues['no-arrived-appointment'][locale.languageCode];
String get upcomingEmpty =>
localizedValues['upcoming-empty'][locale.languageCode];
String get upcomingTimeLeft =>
localizedValues['upcoming-timeLeft'][locale.languageCode];
String get covidTestAllServices =>
localizedValues['covid-test-all-services'][locale.languageCode];
String get pharmacy => localizedValues['pharmacy'][locale.languageCode];
String get ereferral => localizedValues['ereferral'][locale.languageCode];
String get childVaccine =>
localizedValues['child-vaccine'][locale.languageCode];
String get calculators => localizedValues['calculators'][locale.languageCode];
String get converters => localizedValues['converters'][locale.languageCode];
String get h2o => localizedValues['h2o'][locale.languageCode];
String get vTour => localizedValues['v-tour'][locale.languageCode];
String get hmgNews => localizedValues['hmg-news'][locale.languageCode];
String get bloodD => localizedValues['blood-d'][locale.languageCode];
String get symptomCheckerTitle =>
localizedValues['symptomCheckerTitle'][locale.languageCode];
String get latestNews => localizedValues['latest-news'][locale.languageCode];
String get ourLocation =>
localizedValues['our-location'][locale.languageCode];
String get pharmacies => localizedValues['pharmacies'][locale.languageCode];
String get hospitals => localizedValues['hospitals'][locale.languageCode];
String get wallet => localizedValues['wallet'][locale.languageCode];
String get hmg => localizedValues['hmg'][locale.languageCode];
String get requested => localizedValues['requested'][locale.languageCode];
String get ready => localizedValues['ready'][locale.languageCode];
String get completed => localizedValues['completed'][locale.languageCode];
String get cancelled => localizedValues['cancelled'][locale.languageCode];
String get requestMedicalReport =>
localizedValues['request-medical-report'][locale.languageCode];
String get insurCards => localizedValues['insur-cards'][locale.languageCode];
String get labResult => localizedValues['labResult'][locale.languageCode];
String get details => localizedValues['details'][locale.languageCode];
String get age => localizedValues['age'][locale.languageCode];
String get activeInsurence =>
localizedValues['active-insurence'][locale.languageCode];
String get notActive => localizedValues['not-active'][locale.languageCode];
String get cardDetail => localizedValues['card-detail'][locale.languageCode];
String get dr => localizedValues['Dr'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -10,8 +10,9 @@ import 'bottom_navigation_item.dart';
class BottomNavBar extends StatefulWidget { class BottomNavBar extends StatefulWidget {
final ValueChanged<int> changeIndex; final ValueChanged<int> changeIndex;
final int index ; final int index;
BottomNavBar({Key key, this.changeIndex,this.index}) : super(key: key);
BottomNavBar({Key key, this.changeIndex, this.index}) : super(key: key);
@override @override
_BottomNavBarState createState() => _BottomNavBarState(); _BottomNavBarState createState() => _BottomNavBarState();
@ -52,29 +53,28 @@ class _BottomNavBarState extends State<BottomNavBar> {
currentIndex: 1, currentIndex: 1,
name: TranslationBase.of(context).medicalProfile, name: TranslationBase.of(context).medicalProfile,
), ),
if(widget.index == 0) if (widget.index == 0)
Expanded( Expanded(
child: SizedBox( child: SizedBox(
height: 50, height: 50,
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
SizedBox(height: 22), SizedBox(height: 22),
], ],
), ),
), ),
), ),
if(widget.index != 0) if (widget.index != 0)
BottomNavigationItem( BottomNavigationItem(
icon: EvaIcons.calendar, icon: EvaIcons.calendar,
activeIcon: EvaIcons.calendar, activeIcon: EvaIcons.calendar,
changeIndex: _changeIndex, changeIndex: _changeIndex,
index: _index, index: _index,
currentIndex: 2, currentIndex: 2,
name: TranslationBase.of(context).bookAppo, name: TranslationBase.of(context).bookAppo,
), ),
BottomNavigationItem( BottomNavigationItem(
icon: DQIcons.family, icon: DQIcons.family,
activeIcon: DQIcons.family, activeIcon: DQIcons.family,

@ -62,3 +62,10 @@ class TimeSeriesSales {
TimeSeriesSales(this.time, this.sales); TimeSeriesSales(this.time, this.sales);
} }
class TimeSeriesSales2 {
final DateTime time;
final double sales;
TimeSeriesSales2(this.time, this.sales);
}

@ -0,0 +1,42 @@
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/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'lab_result_chart_and_detials.dart';
class FlowChartPage extends StatelessWidget {
final PatientLabOrders patientLabOrder;
final String filterName;
FlowChartPage({this.patientLabOrder, this.filterName});
@override
Widget build(BuildContext context) {
return BaseView<LabsViewModel>(
onModelReady: (model) => model.getPatientLabOrdersResults(
patientLabOrder: patientLabOrder, procedure: filterName),
builder: (context, model, w) => AppScaffold(
isShowAppBar: true,
appBarTitle: filterName,
baseViewModel: model,
body: SingleChildScrollView(
child: model.labOrdersResultsList.isNotEmpty
? Container(
child: LabResultChartAndDetails(
name: filterName,
labResult: model.labOrdersResultsList,
),
)
: Container(
child: Center(
child: Texts('no Data'),
),
),
),
),
);
}
}

@ -1,18 +1,23 @@
import 'package:diplomaticquarterapp/core/model/labs/lab_result.dart'; import 'package:diplomaticquarterapp/core/model/labs/lab_result.dart';
import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../text.dart'; import '../../text.dart';
import 'FlowChartPage.dart';
class LabResultWidget extends StatelessWidget { class LabResultWidget extends StatelessWidget {
final String filterName ; final String filterName ;
final List<LabResult> patientLabResultList; final List<LabResult> patientLabResultList;
final PatientLabOrders patientLabOrder;
LabResultWidget({Key key, this.filterName, this.patientLabResultList}) : super(key: key); LabResultWidget({Key key, this.filterName, this.patientLabResultList, this.patientLabOrder}) : super(key: key);
ProjectViewModel projectViewModel; ProjectViewModel projectViewModel;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -30,7 +35,15 @@ class LabResultWidget extends StatelessWidget {
Texts(filterName), Texts(filterName),
InkWell( InkWell(
onTap: () { onTap: () {
//TODO model.getPatientLabResult(patientLabOrder: widget.patientLabOrder); Navigator.push(
context,
FadePage(
page: FlowChartPage(
filterName: filterName,
patientLabOrder: patientLabOrder,
),
),
);
}, },
child: Texts( child: Texts(
TranslationBase.of(context).showMoreBtn, TranslationBase.of(context).showMoreBtn,

@ -0,0 +1,111 @@
import 'package:diplomaticquarterapp/core/model/labs/lab_result.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class LabResultDetailsWidget extends StatefulWidget {
final List<LabResult> labResult;
LabResultDetailsWidget({
this.labResult,
});
@override
_VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState();
}
class _VitalSignDetailsWidgetState extends State<LabResultDetailsWidget> {
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
border: Border.all(color: Colors.grey, width: 1),
),
margin: EdgeInsets.all(20),
child: Container(
color: Colors.transparent,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Table(
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
children: fullData(),
),
],
),
),
);
}
List<TableRow> fullData() {
List<TableRow> tableRow = [];
tableRow.add(TableRow(children: [
Container(
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
),
),
child: Center(
child: Texts(
TranslationBase.of(context).date,
color: Colors.white,
),
),
height: 60,
),
),
Container(
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topRight: Radius.circular(10.0),
),
),
child: Center(
child: Texts(TranslationBase.of(context).labResult, color: Colors.white),
),
height: 60),
)
]));
widget.labResult.forEach((vital) {
tableRow.add(TableRow(children: [
Container(
child: Container(
padding: EdgeInsets.all(10),
color: Colors.white,
child: Center(
child: Texts(
'${vital.verifiedOn}',
textAlign: TextAlign.center,
),
),
),
),
Container(
child: Container(
padding: EdgeInsets.all(10),
color: Colors.white,
child: Center(
child: Texts(
'${vital.resultValue}',
textAlign: TextAlign.center,
),
),
),
),
]));
});
return tableRow;
}
}

@ -0,0 +1,74 @@
import 'package:diplomaticquarterapp/core/model/labs/lab_result.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'Lab_Result_details_wideget.dart';
class LabResultChartAndDetails extends StatelessWidget {
LabResultChartAndDetails({
Key key,
@required this.labResult,
@required this.name,
}) : super(key: key);
final List<LabResult> labResult;
final String name;
List<TimeSeriesSales> _timeSeriesData = [];
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
AppExpandableNotifier(
headerWidget: AppTimeSeriesChart(
seriesList: generateData(),
chartName: name,
startDate: DateUtil.convertStringToDateTime(labResult[0].sampleCollectedOn),
endDate: DateTime.now(),
),
bodyWidget: LabResultDetailsWidget(
labResult: labResult,
),
),
],
);
}
generateData() {
if (labResult.length > 0) {
int x =0;
labResult.forEach(
(element) {
try {
var resultValueDouble =double.parse(element.resultValue);
var resultValueInt = resultValueDouble.toInt();
_timeSeriesData.add(
TimeSeriesSales(
DateUtil.convertStringToDateTime(element.sampleCollectedOn),
resultValueInt,
),
);
} catch (e) {
print(e);
}
},
);
}
return [
new charts.Series<TimeSeriesSales, DateTime>(
id: 'Sales',
colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
domainFn: (TimeSeriesSales sales, _) => sales.time,
measureFn: (TimeSeriesSales sales, _) => sales.sales,
data: _timeSeriesData,
)
];
}
}

@ -12,7 +12,7 @@ import 'package:flutter_html/flutter_html.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../text.dart'; import '../../text.dart';
import 'LabResultWidget.dart'; import 'LabResultWidget.dart';
class LaboratoryResultWidget extends StatefulWidget { class LaboratoryResultWidget extends StatefulWidget {
@ -232,6 +232,7 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
...List.generate( ...List.generate(
model.labResultLists.length, model.labResultLists.length,
(index) => LabResultWidget( (index) => LabResultWidget(
patientLabOrder: widget.patientLabOrder,
filterName: model filterName: model
.labResultLists[index].filterName, .labResultLists[index].filterName,
patientLabResultList: model patientLabResultList: model

@ -96,7 +96,7 @@ class DoctorCard extends StatelessWidget {
Expanded( Expanded(
flex: 1, flex: 1,
child: LargeAvatar( child: LargeAvatar(
name: name, name:name,
url: profileUrl, url: profileUrl,
), ),
), ),
@ -108,7 +108,7 @@ class DoctorCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts( Texts(
name, TranslationBase.of(context).dr+" "+ name,
bold: true, bold: true,
), ),
Texts( Texts(

@ -17,7 +17,6 @@ import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../config/size_config.dart'; import '../../config/size_config.dart';

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:expandable/expandable.dart'; import 'package:expandable/expandable.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -59,7 +60,7 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
Padding( Padding(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Text( child: Text(
widget.title ?? 'Details', widget.title ?? TranslationBase.of(context).details,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2, fontSize: SizeConfig.textMultiplier * 2,

@ -59,11 +59,13 @@ class AppScaffold extends StatelessWidget {
this.isShowDecPage = true, this.isShowDecPage = true,
this.isBottomBar, this.isBottomBar,
this.image, this.image,
this.infoList, this.imagesInfo}); this.infoList,
this.imagesInfo});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.context = context; AppGlobal.context = context;
ProjectViewModel projectViewModel = Provider.of<ProjectViewModel>(context);
return Scaffold( return Scaffold(
backgroundColor: Theme.of(context).scaffoldBackgroundColor, backgroundColor: Theme.of(context).scaffoldBackgroundColor,
@ -75,13 +77,15 @@ class AppScaffold extends StatelessWidget {
headline6: headline6:
TextStyle(color: Colors.white, fontWeight: FontWeight.bold), TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
), ),
title: Texts( title: Text(
authenticatedUserObject.isLogin || !isShowDecPage authenticatedUserObject.isLogin || !isShowDecPage
? appBarTitle.toUpperCase() ? appBarTitle.toUpperCase()
: TranslationBase.of(context).serviceInformationTitle, : TranslationBase.of(context).serviceInformationTitle,
color: Colors.white, style: TextStyle(
bold: true, fontWeight: FontWeight.bold,
), color: Colors.white,
fontFamily:
projectViewModel.isArabic ? 'Cairo' : 'WorkSans')),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return ArrowBack(); return ArrowBack();
@ -129,13 +133,17 @@ class AppScaffold extends StatelessWidget {
infoList: infoList, infoList: infoList,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
) )
: baseViewModel != null : baseViewModel != null
? NetworkBaseView( ? NetworkBaseView(
child: buildBodyWidget(), child: buildBodyWidget(),
baseViewModel: baseViewModel, baseViewModel: baseViewModel,
) )
: buildBodyWidget(), : buildBodyWidget(),
bottomSheet: (Provider.of<ProjectViewModel>(context, listen: false).isLogin || !isShowDecPage)?bottomSheet:null, bottomSheet:
(Provider.of<ProjectViewModel>(context, listen: false).isLogin ||
!isShowDecPage)
? bottomSheet
: null,
//floatingActionButton: floatingActionButton ?? floatingActionButton, //floatingActionButton: floatingActionButton ?? floatingActionButton,
// bottomNavigationBar: // bottomNavigationBar:
// this.isBottomBar == true ? BottomBarSearch() : SizedBox() // this.isBottomBar == true ? BottomBarSearch() : SizedBox()

@ -1,53 +1,41 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:convert'; import 'dart:math';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/DoctorProfile.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/DoctorProfile.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart'; import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import 'package:diplomaticquarterapp/pages/medical/my_admissions_page.dart';
import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart'; import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart'; import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart'; import 'package:flutter_tts/flutter_tts.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_error.dart';
import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_recognition_result.dart';
import 'package:speech_to_text/speech_to_text.dart'; import 'package:speech_to_text/speech_to_text.dart';
import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart';
import 'dart:math';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
class BottomBarSearch extends StatefulWidget { class BottomBarSearch extends StatefulWidget {
@override @override
@ -76,6 +64,7 @@ class _SearchBot extends State<BottomBarSearch> {
bool _isInit = true; bool _isInit = true;
TextEditingController searchController = TextEditingController(); TextEditingController searchController = TextEditingController();
@override @override
void initState() { void initState() {
requestPermissions(); requestPermissions();
@ -432,10 +421,12 @@ class _SearchBot extends State<BottomBarSearch> {
List<String> arr = []; List<String> arr = [];
List<String> arrDistance = []; List<String> arrDistance = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.getDoctorsList(clinicId, projectId, false, context, .getDoctorsList(clinicId, projectId, false, context,
doctorId: doctorId, doctorName: doctorName) doctorId: doctorId, doctorName: doctorName)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
if (res['SearchDoctorsByTime_IsVoiceCommandList'] != null && if (res['SearchDoctorsByTime_IsVoiceCommandList'] != null &&
@ -483,9 +474,10 @@ class _SearchBot extends State<BottomBarSearch> {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Future navigateToDoctorProfile(context, docObject, docProfile, Future navigateToDoctorProfile(context, docObject, docProfile,

@ -40,6 +40,7 @@ import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -55,7 +56,6 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/DoctorProfile.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class FloatingSearchButton extends StatefulWidget { class FloatingSearchButton extends StatefulWidget {
@ -734,10 +734,12 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
List<String> arr = []; List<String> arr = [];
List<String> arrDistance = []; List<String> arrDistance = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
service service
.getDoctorsList(clinicId, projectId, isNearest, context, .getDoctorsList(clinicId, projectId, isNearest, context,
doctorId: doctorId, doctorName: doctorName) doctorId: doctorId, doctorName: doctorName)
.then((res) { .then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
if (res['SearchDoctorsByTime_IsVoiceCommandList'] != null && if (res['SearchDoctorsByTime_IsVoiceCommandList'] != null &&
@ -785,9 +787,10 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
}).catchError((err) { }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
print(err); print(err);
}).showProgressBar( });
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
Future navigateToDoctorProfile(context, docObject, docProfile, Future navigateToDoctorProfile(context, docObject, docProfile,

@ -106,8 +106,6 @@ dependencies:
#Circular progress bar for reverse timer #Circular progress bar for reverse timer
circular_countdown_timer: ^0.0.5 circular_countdown_timer: ^0.0.5
smart_progress_bar: ^0.1.6
#Just Audio to play ringing for incoming video call #Just Audio to play ringing for incoming video call
just_audio: ^0.3.4 just_audio: ^0.3.4
@ -138,11 +136,14 @@ dependencies:
device_calendar: ^3.1.0 device_calendar: ^3.1.0
#Handle Geolocation #Handle Geolocation
geolocator: ^6.0.0+1 geolocator: ^6.1.10
screen: ^0.0.5 screen: ^0.0.5
#google maps places #google maps places
google_maps_place_picker: ^1.0.0 google_maps_place_picker: ^1.0.0
#countdown timer for Upcoming List
flutter_countdown_timer: ^1.4.0
#Dependencies for video call implementation #Dependencies for video call implementation
native_device_orientation: ^0.3.0 native_device_orientation: ^0.3.0

Loading…
Cancel
Save