diff --git a/lib/core/service/referral_patient_service.dart b/lib/core/service/referral_patient_service.dart new file mode 100644 index 00000000..088e40ca --- /dev/null +++ b/lib/core/service/referral_patient_service.dart @@ -0,0 +1,51 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/service/base/base_service.dart'; +import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart'; +import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; +import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; + +class ReferralPatientService extends BaseService { + + List _listMyReferralPatientModel = []; + List get listMyReferralPatientModel => _listMyReferralPatientModel; + + + Helpers helpers = Helpers(); + + + RequestMyReferralPatientModel _requestMyReferralPatient = RequestMyReferralPatientModel(); + RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks = RequestAddReferredDoctorRemarks(); + + Future getMyReferralPatient() async { + await baseAppClient.post(GET_MY_REFERRAL_PATIENT, + onSuccess: (dynamic response, int statusCode) { + _listMyReferralPatientModel.clear(); + response['List_MyReferralPatient'].forEach((v) { + listMyReferralPatientModel.add(MyReferralPatientModel.fromJson(v)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _requestMyReferralPatient .toJson(),); + } + + Future replay( + String referredDoctorRemarks, MyReferralPatientModel model) async { + + _requestAddReferredDoctorRemarks.admissionNo = model.admissionNo; + _requestAddReferredDoctorRemarks.patientID = model.patientID; + _requestAddReferredDoctorRemarks.referredDoctorRemarks = referredDoctorRemarks; + _requestAddReferredDoctorRemarks.lineItemNo = model.lineItemNo; + _requestAddReferredDoctorRemarks.referringDoctor = model.referringDoctor; + await baseAppClient.post(GET_MY_REFERRAL_PATIENT, + onSuccess: (dynamic response, int statusCode) { + model.referredDoctorRemarks = referredDoctorRemarks; + listMyReferralPatientModel[ + listMyReferralPatientModel.indexOf(model)] = model; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _requestMyReferralPatient .toJson(),); + } +} diff --git a/lib/core/viewModel/referral_view_model.dart b/lib/core/viewModel/referral_view_model.dart new file mode 100644 index 00000000..54c3fd8a --- /dev/null +++ b/lib/core/viewModel/referral_view_model.dart @@ -0,0 +1,38 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/hospitals_model.dart'; +import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart'; +import 'package:doctor_app_flutter/core/service/hospital/hospitals_service.dart'; +import 'package:doctor_app_flutter/core/service/referral_patient_service.dart'; +import 'package:doctor_app_flutter/core/service/schedule_service.dart'; +import 'package:doctor_app_flutter/models/doctor/list_doctor_working_hours_table_model.dart'; +import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart'; +import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; + +import '../../locator.dart'; +import 'base_view_model.dart'; + +class ReferralPatientViewModel extends BaseViewModel { + ReferralPatientService _referralPatientService = locator(); + + List get listMyReferralPatientModel => _referralPatientService.listMyReferralPatientModel; + + Future getMyReferralPatient() async { + setState(ViewState.Busy); + await _referralPatientService.getMyReferralPatient(); + if (_referralPatientService.hasError) { + error = _referralPatientService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } + + Future replay(String referredDoctorRemarks, MyReferralPatientModel model) async { + setState(ViewState.BusyLocal); + await _referralPatientService.replay(referredDoctorRemarks, model); + if (_referralPatientService.hasError) { + error = _referralPatientService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } +} diff --git a/lib/locator.dart b/lib/locator.dart index 053f7535..e394aa52 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -2,9 +2,11 @@ import 'package:get_it/get_it.dart'; import 'core/service/doctor_reply_service.dart'; import 'core/service/hospital/hospitals_service.dart'; +import 'core/service/referral_patient_service.dart'; import 'core/service/schedule_service.dart'; import 'core/viewModel/doctor_replay_view_model.dart'; import 'core/viewModel/hospital_view_model.dart'; +import 'core/viewModel/referral_view_model.dart'; import 'core/viewModel/schedule_view_model.dart'; GetIt locator = GetIt.instance; @@ -15,9 +17,11 @@ void setupLocator() { locator.registerLazySingleton(() => HospitalService()); locator.registerLazySingleton(() => DoctorReplyService()); locator.registerLazySingleton(() => ScheduleService()); + locator.registerLazySingleton(() => ReferralPatientService()); /// View Model locator.registerFactory(() => HospitalViewModel()); locator.registerFactory(() => DoctorReplayViewModel()); locator.registerFactory(() => ScheduleViewModel()); + locator.registerFactory(() => ReferralPatientViewModel()); } diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index 0f01dd1e..6b2bd275 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -8,7 +8,6 @@ import 'package:doctor_app_flutter/providers/auth_provider.dart'; import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/providers/project_provider.dart'; -import 'package:doctor_app_flutter/providers/referral_patient_provider.dart'; import 'package:doctor_app_flutter/providers/referred_patient_provider.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; @@ -826,11 +825,7 @@ class _DashboardScreenState extends State { context, MaterialPageRoute( builder: (context) => - ChangeNotifierProvider( - create: (_) => - MyReferralPatientProvider(), - child: MyReferralPatient(), - ), + MyReferralPatient(), ), ); }, diff --git a/lib/screens/doctor/my_referral_patient_screen.dart b/lib/screens/doctor/my_referral_patient_screen.dart index 4df450e7..c29ce606 100644 --- a/lib/screens/doctor/my_referral_patient_screen.dart +++ b/lib/screens/doctor/my_referral_patient_screen.dart @@ -1,31 +1,22 @@ -import 'package:doctor_app_flutter/providers/referral_patient_provider.dart'; +import 'package:doctor_app_flutter/core/viewModel/referral_view_model.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/doctor/my_referral_patient_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import '../../widgets/shared/app_scaffold_widget.dart'; class MyReferralPatient extends StatelessWidget { - MyReferralPatientProvider referralPatientProvider; @override Widget build(BuildContext context) { - referralPatientProvider = Provider.of(context); - return AppScaffold( - appBarTitle: TranslationBase.of(context).myReferralPatient, - body: referralPatientProvider.isLoading - ? DrAppCircularProgressIndeicator() - : referralPatientProvider.isError - ? Center( - child: AppText( - referralPatientProvider.error, - color: Theme.of(context).errorColor, - ), - ) - : referralPatientProvider.listMyReferralPatientModel.length == 0 + return BaseView( + onModelReady: (model) => model.getMyReferralPatient(), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + appBarTitle: TranslationBase.of(context).myReferralPatient, + body: model.listMyReferralPatientModel.length == 0 ? Center( child: AppText( TranslationBase.of(context).errorNoSchedule, @@ -44,11 +35,10 @@ class MyReferralPatient extends StatelessWidget { ), Container( child: Column( - children: referralPatientProvider - .listMyReferralPatientModel + children: model.listMyReferralPatientModel .map((item) { return MyReferralPatientWidget( - myReferralPatientModel: item, + myReferralPatientModel: item, model:model ); }).toList(), ), @@ -58,6 +48,6 @@ class MyReferralPatient extends StatelessWidget { ], ), ), - ); + )); } } diff --git a/lib/widgets/doctor/my_referral_patient_widget.dart b/lib/widgets/doctor/my_referral_patient_widget.dart index f1906578..46167975 100644 --- a/lib/widgets/doctor/my_referral_patient_widget.dart +++ b/lib/widgets/doctor/my_referral_patient_widget.dart @@ -1,8 +1,10 @@ import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/viewModel/referral_view_model.dart'; import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; -import 'package:doctor_app_flutter/providers/referral_patient_provider.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_button.dart'; @@ -10,13 +12,11 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; class MyReferralPatientWidget extends StatefulWidget { final MyReferralPatientModel myReferralPatientModel; - - MyReferralPatientWidget({Key key, this.myReferralPatientModel}); + final ReferralPatientViewModel model; + MyReferralPatientWidget({Key key, this.myReferralPatientModel, this.model}); @override _MyReferralPatientWidgetState createState() => @@ -310,30 +310,21 @@ class _MyReferralPatientWidgetState extends State { onTap: () async { final form = _formKey.currentState; if (form.validate()) { - setState(() { - _isLoading = true; - }); + try { - await Provider.of( - context, - listen: false) + await widget.model .replay(answerController.text.toString(), widget.myReferralPatientModel); - setState(() { - _isLoading = false; - }); + // TODO: Add Translation DrAppToastMsg.showSuccesToast( 'Reply Successfully'); } catch (e) { - setState(() { - _isLoading = false; - }); DrAppToastMsg.showErrorToast(e); } } }, title: TranslationBase.of(context).replay, - loading: _isLoading, + loading: widget.model.state == ViewState.BusyLocal, ), ) ],