diff --git a/lib/config/config.dart b/lib/config/config.dart index 91cc2eda..8ce2bdf2 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -49,6 +49,13 @@ const GET_PATIENT_AppointmentHistory = const GET_PATIENT_VITAL_SIGN = 'Services/Doctors.svc/REST/Doctor_GetPatientVitalSign'; +///Er Nearest +const GET_NEAREST_HOSPITAL= + 'Services/Patients.svc/REST/Patient_GetProjectAvgERWaitingTime'; + + + + ///Reports const REPORTS = 'Services/Doctors.svc/REST/GetPatientMedicalReportStatusInfo'; const INSERT_REQUEST_FOR_MEDICAL_REPORT = diff --git a/lib/core/model/er_service/projectavgerwaitingtime.dart b/lib/core/model/er/projectavgerwaitingtime.dart similarity index 97% rename from lib/core/model/er_service/projectavgerwaitingtime.dart rename to lib/core/model/er/projectavgerwaitingtime.dart index 7d5f8ca4..f999d46f 100644 --- a/lib/core/model/er_service/projectavgerwaitingtime.dart +++ b/lib/core/model/er/projectavgerwaitingtime.dart @@ -3,7 +3,7 @@ class ProjectAvgERWaitingTime { int projectID; int avgTimeInMinutes; String avgTimeInHHMM; - double distanceInKilometers; + int distanceInKilometers; String latitude; String longitude; String phoneNumber; diff --git a/lib/core/service/er/er_service.dart b/lib/core/service/er/er_service.dart new file mode 100644 index 00000000..779efdc1 --- /dev/null +++ b/lib/core/service/er/er_service.dart @@ -0,0 +1,39 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/model/er/projectavgerwaitingtime.dart'; +import '../base_service.dart'; + +class ErService extends BaseService { + List projectAvgERWaitingTimeModelList = List(); + Map body = Map(); + String Latitude = ""; + String Longitude = ""; + String PhoneNumber = ""; + + Future getProjectAvgERWaitingTimeOrders({int id, int projectID}) async { + hasError = false; + + if (id != null && projectID != null) { + body['ID'] = id; + body['ProjectID'] = projectID; + } + + await baseAppClient.post(GET_NEAREST_HOSPITAL, + onSuccess: (dynamic response, int statusCode) { + projectAvgERWaitingTimeModelList.clear(); + response['List_ProjectAvgERWaitingTime'].forEach((vital) { + projectAvgERWaitingTimeModelList + .add(ProjectAvgERWaitingTime.fromJson(vital)); + }); + projectAvgERWaitingTimeModelList.forEach((element) { + Latitude = '${element.latitude}'; + Longitude = '${element.longitude}'; + PhoneNumber = '${element.phoneNumber}'; + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: body); + } + + +} diff --git a/lib/core/viewModels/er/near_hospital_view_model.dart b/lib/core/viewModels/er/near_hospital_view_model.dart new file mode 100644 index 00000000..f1d1c350 --- /dev/null +++ b/lib/core/viewModels/er/near_hospital_view_model.dart @@ -0,0 +1,34 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/er/projectavgerwaitingtime.dart'; + +import 'package:diplomaticquarterapp/core/service/er/er_service.dart'; +import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; +import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; + +import '../../../locator.dart'; + +class NearHospitalViewModel extends BaseViewModel { + + + ErService _erService = locator(); + List get ProjectAvgERWaitingTimeModeList => + _erService.projectAvgERWaitingTimeModelList; + + getProjectAvgERWaitingTimeOrders({int id, int projectID}) async { + setState(ViewState.Busy); + + if (id != null && projectID != null) { + + await _erService.getProjectAvgERWaitingTimeOrders(id: id,projectID: projectID); + } else { + await _erService.getProjectAvgERWaitingTimeOrders(); + } + if (_erService.hasError) { + error = _erService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } + + +} diff --git a/lib/locator.dart b/lib/locator.dart index be35b5ab..71035955 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -5,6 +5,7 @@ import 'package:get_it/get_it.dart'; import 'core/service/appointment_rate_service.dart'; import 'core/service/dashboard_service.dart'; +import 'core/service/er/er_service.dart'; import 'core/service/feedback/feedback_service.dart'; import 'core/service/hospital_service.dart'; import 'core/service/medical/labs_service.dart'; @@ -14,6 +15,7 @@ import 'core/service/medical/prescriptions_service.dart'; import 'core/service/medical/radiology_service.dart'; import 'core/service/medical/vital_sign_service.dart'; import 'core/viewModels/appointment_rate_view_model.dart'; +import 'core/viewModels/er/near_hospital_view_model.dart'; import 'core/viewModels/feedback/feedback_view_model.dart'; import 'core/service/medical/reports_service.dart'; import 'core/viewModels/hospital_view_model.dart'; @@ -50,6 +52,7 @@ void setupLocator() { locator.registerLazySingleton(() => DashboardService()); locator.registerLazySingleton(() => AppointmentRateService()); locator.registerLazySingleton(() => QrService()); + locator.registerLazySingleton(() => ErService()); /// View Model locator.registerFactory(() => HospitalViewModel()); @@ -66,5 +69,6 @@ void setupLocator() { locator.registerFactory(() => DashboardViewModel()); locator.registerFactory(() => AppointmentRateViewModel()); locator.registerFactory(() => QrViewModel()); + locator.registerFactory(() => NearHospitalViewModel()); } diff --git a/lib/pages/ErService/NearestEr.dart b/lib/pages/ErService/NearestEr.dart index 16eb0f4c..787e66ac 100644 --- a/lib/pages/ErService/NearestEr.dart +++ b/lib/pages/ErService/NearestEr.dart @@ -1,147 +1,339 @@ +import 'package:diplomaticquarterapp/core/viewModels/er/near_hospital_view_model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import '../../uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/pages/ErService/widgets/card_common.dart'; import 'widgets/card_position.dart'; -class NearestEr extends StatefulWidget { - final bool isAppbar; - const NearestEr({Key key, this.isAppbar}) : super(key: key); - @override - _NearestErState createState() => _NearestErState(); -} +class NearestEr extends StatelessWidget { -class _NearestErState extends State { - LocationUtils locationUtils; - @override - void initState() { - locationUtils = - new LocationUtils(isShowConfirmDialog: true, context: context); - WidgetsBinding.instance - .addPostFrameCallback((_) => locationUtils.getCurrentLocation()); + static const String url = "assets/images/"; - super.initState(); - } + int appointmentNo; + int projectID; + NearestEr({this.appointmentNo, this.projectID}); @override Widget build(BuildContext context) { - return AppScaffold( - isShowAppBar: widget.isAppbar, - appBarTitle: TranslationBase.of(context).bookAppo, - body: Container( - margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0), - child: ListView( - - children: [ - Text(TranslationBase.of(context).searchBy, - style: TextStyle( - fontSize: 24.0, - letterSpacing: 1.0, - fontWeight: FontWeight.bold, - color: new Color(0xFF60686b))), - Container( - margin: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0), - - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: CardPosition( - text: "Olaya Hospital", - image: 'assets/images/new-design/find_us_icon.png', - - subText: TranslationBase.of(context).requestA, - type: 3, - ), - flex: 0, - ), - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Takhassusi Hospital", - subText: TranslationBase.of(context).locationa, - type: 5), - flex: 0, - - ) - ], - ), - Row( - mainAxisSize: MainAxisSize.max, + return BaseView( + onModelReady: appointmentNo != null && projectID != null + ? (model) => model.getProjectAvgERWaitingTimeOrders( + id: appointmentNo, projectID: projectID) + : (model) => model.getProjectAvgERWaitingTimeOrders(), + builder: (_, mode, widget) => AppScaffold( + isShowAppBar: true, + appBarTitle: 'Nearest ER', + baseViewModel: mode, + + body: mode.ProjectAvgERWaitingTimeModeList.length > 0 + ? Container( + child: ListView( + + children: [ + Text(TranslationBase.of(context).searchBy, + style: TextStyle( + fontSize: 24.0, + letterSpacing: 1.0, + fontWeight: FontWeight.bold, + color: new Color(0xFF60686b))), + Container( + margin: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0), + + child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Arryan Hospital", - subText: TranslationBase.of(context).requestA, - type: 4, - ), - flex: 0, + Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: CardPosition( + + + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + + ), + Expanded( + child: CardPosition( + +// mode +// .vitalSignResModelList[ +// mode.vitalSignResModelList.length - 1] +// .heightCm +// .toString() + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + + ) + ], ), - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Suwaidi Hospital", - subText: TranslationBase.of(context).locationa, - type: 6), - flex: 0, - ) - ], - ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Al Qassim Hospital", - subText: TranslationBase.of(context).requestA, - type: 7, - ), - flex: 0, + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: CardPosition( + +// mode +// .vitalSignResModelList[ +// mode.vitalSignResModelList.length - 1] +// .heightCm +// .toString() + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + ), + Expanded( + child: CardPosition( + +// mode +// .vitalSignResModelList[ +// mode.vitalSignResModelList.length - 1] +// .heightCm +// .toString() + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + ) + ], ), - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Khobar Hospital", - subText: TranslationBase.of(context).locationa, - type: 8), - flex: 0, - - ) - ], - ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: CardPosition( - image: 'assets/images/new-design/find_us_icon.png', - text: "Dubai Hospital", - subText: TranslationBase.of(context).requestA, - type: 1, - - ), - flex: 0, + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: CardPosition( + +// mode +// .vitalSignResModelList[ +// mode.vitalSignResModelList.length - 1] +// .heightCm +// .toString() + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + ), + Expanded( + child: CardPosition( + +// mode +// .vitalSignResModelList[ +// mode.vitalSignResModelList.length - 1] +// .heightCm +// .toString() + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers, + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD, + ), + flex: 0, + + ) + ], ), + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: CardPosition( + + + text: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].projectName, + image: 'assets/images/new-design/find_us_icon.png', + subText: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].distanceInKilometers.toString(), + type: mode.ProjectAvgERWaitingTimeModeList[mode.ProjectAvgERWaitingTimeModeList.length-1].iD.toString(), + ), + flex: 0, + ), + + ], + ), ], - ), - ], - ) - ), - ], + ) + ), + ], + ), + ) + : Center( + child: Texts('No Data'), ), ), ); } } + + + +//class NearestEr extends StatefulWidget { +// static const String url = "assets/images/"; +// final bool isAppbar; +// +// +// const NearestEr({Key key, this.isAppbar}) : super(key: key); +// @override +// _NearestErState createState() => _NearestErState(); +//} +// +//class _NearestErState extends State { +// LocationUtils locationUtils; +// @override +// void initState() { +// locationUtils = +// new LocationUtils(isShowConfirmDialog: true, context: context); +// WidgetsBinding.instance +// .addPostFrameCallback((_) => locationUtils.getCurrentLocation()); +// +// super.initState(); +// } +// @override +// Widget build(BuildContext context) { +// return AppScaffold( +// isShowAppBar: widget.isAppbar, +// appBarTitle: TranslationBase.of(context).bookAppo, +// body: Container( +// margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0), +// child: ListView( +// +// children: [ +// Text(TranslationBase.of(context).searchBy, +// style: TextStyle( +// fontSize: 24.0, +// letterSpacing: 1.0, +// fontWeight: FontWeight.bold, +// color: new Color(0xFF60686b))), +// Container( +// margin: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0), +// +// child: Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Row( +// mainAxisSize: MainAxisSize.min, +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Expanded( +// child: CardPosition( +// text: "Olaya Hospital", +// image: 'assets/images/new-design/find_us_icon.png', +// +// subText: TranslationBase.of(context).requestA, +// type: 3, +// ), +// flex: 0, +// +// ), +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Takhassusi Hospital", +// subText: TranslationBase.of(context).locationa, +// type: 5), +// flex: 0, +// +// ) +// ], +// ), +// Row( +// mainAxisSize: MainAxisSize.max, +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Arryan Hospital", +// subText: TranslationBase.of(context).requestA, +// type: 4, +// ), +// flex: 0, +// ), +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Suwaidi Hospital", +// subText: TranslationBase.of(context).locationa, +// type: 6), +// flex: 0, +// ) +// ], +// ), +// Row( +// mainAxisSize: MainAxisSize.max, +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Al Qassim Hospital", +// subText: TranslationBase.of(context).requestA, +// type: 7, +// ), +// flex: 0, +// ), +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Khobar Hospital", +// subText: TranslationBase.of(context).locationa, +// type: 8), +// flex: 0, +// +// ) +// ], +// ), +// Row( +// mainAxisSize: MainAxisSize.max, +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Expanded( +// child: CardPosition( +// image: 'assets/images/new-design/find_us_icon.png', +// text: "Dubai Hospital", +// subText: TranslationBase.of(context).requestA, +// type: 1, +// +// ), +// flex: 0, +// ), +// +// ], +// ), +// ], +// ) +// ), +// ], +// ), +// ), +// ); +// } +//} diff --git a/lib/pages/ErService/widgets/card_common.dart b/lib/pages/ErService/widgets/card_common.dart index f59df83c..c65789c5 100644 --- a/lib/pages/ErService/widgets/card_common.dart +++ b/lib/pages/ErService/widgets/card_common.dart @@ -65,11 +65,16 @@ class CardCommonEr extends StatelessWidget { else{ print("=========Nearest ER==========="); +// Navigator.push( +// context, +// +// FadePage( +// // page: NearestEr(isAppbar: true,))); +// page: NearestEr())); Navigator.push( context, - FadePage( - page: NearestEr(isAppbar: true,))); + page: NearestEr())); } diff --git a/lib/pages/ErService/widgets/card_position.dart b/lib/pages/ErService/widgets/card_position.dart index e5241772..35e875fc 100644 --- a/lib/pages/ErService/widgets/card_position.dart +++ b/lib/pages/ErService/widgets/card_position.dart @@ -1,7 +1,6 @@ //import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; -import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import '../NearestEr.dart'; @@ -68,20 +67,13 @@ class CardPosition extends StatelessWidget { else{ print("=========Nearest ER==========="); - Navigator.push( - context, - - FadePage( - page: NearestEr(isAppbar: true,))); +// Navigator.push( +// context, +// MaterialPageRoute( +// builder: (context) => NearestEr(isAppbar: true,))); +// + } - } - //NearestEr(isAppbar: true,) -// Navigator.push( -// context, -// MaterialPageRoute( -// builder: (context) => Search( -// type: type, -// ))); } }