diff --git a/lib/core/service/sickleave_service.dart b/lib/core/service/sickleave_service.dart index c4aa8abf..63a7496c 100644 --- a/lib/core/service/sickleave_service.dart +++ b/lib/core/service/sickleave_service.dart @@ -21,6 +21,9 @@ class SickLeaveService extends BaseService { List get getAllRescheduleLeave => _getReScheduleLeave; List _getReScheduleLeave = []; + dynamic get postReschedule => _postReschedule; + dynamic _postReschedule; + Future getStatistics(appoNo, patientMRN) async { hasError = false; await baseAppClient.post( @@ -171,15 +174,17 @@ class SickLeaveService extends BaseService { ); } - addReschedule(request) async { + Future addReschedule(request) async { hasError = false; await baseAppClient.post( ADD_RESCHDEULE, onSuccess: (dynamic response, int statusCode) { - Future.value(response); + // return Future.value(response); + _postReschedule = response; }, onFailure: (String error, int statusCode) { + _postReschedule = null; hasError = true; super.error = error; }, @@ -193,9 +198,11 @@ class SickLeaveService extends BaseService { await baseAppClient.post( UPDATE_RESCHDEULE, onSuccess: (dynamic response, int statusCode) { - Future.value(response); + _postReschedule = response; + // return Future.value(response); }, onFailure: (String error, int statusCode) { + _postReschedule = null; hasError = true; super.error = error; }, diff --git a/lib/core/viewModel/sick_leave_view_model.dart b/lib/core/viewModel/sick_leave_view_model.dart index 5e86249c..8e1c68d9 100644 --- a/lib/core/viewModel/sick_leave_view_model.dart +++ b/lib/core/viewModel/sick_leave_view_model.dart @@ -16,6 +16,7 @@ class SickLeaveViewModel extends BaseViewModel { List get allReasons => _sickLeaveService.getReasons; List get coveringDoctors => _sickLeaveService.coveringDoctorsList; get getReschduleLeave => _sickLeaveService.getAllRescheduleLeave; + get postSechedule => _sickLeaveService.postReschedule; Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async { setState(ViewState.Busy); await _sickLeaveService.addSickLeave(addSickLeaveRequest); @@ -99,7 +100,7 @@ class SickLeaveViewModel extends BaseViewModel { Future addReschedule(request) async { setState(ViewState.Busy); await _sickLeaveService.addReschedule(request); - notifyListeners(); + if (_sickLeaveService.hasError) { error = _sickLeaveService.error; setState(ViewState.Error); diff --git a/lib/screens/reschedule-leaves/reschedule_leave.dart b/lib/screens/reschedule-leaves/reschedule_leave.dart index bdd87499..6f3299d1 100644 --- a/lib/screens/reschedule-leaves/reschedule_leave.dart +++ b/lib/screens/reschedule-leaves/reschedule_leave.dart @@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart'; +import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; @@ -41,9 +42,10 @@ class _RescheduleLeaveScreen extends State { TextEditingController _toDateController = new TextEditingController(); TextEditingController _toDateController2 = new TextEditingController(); ProjectViewModel projectsProvider; + SickLeaveViewModel sickLeaveViewModel; String _selectedClinic; Map profile = {}; - var offTime = '2'; + var offTime = '1'; var date; var doctorID; var reason; @@ -53,6 +55,7 @@ class _RescheduleLeaveScreen extends State { var fromTime; var toTime; TextEditingController _controller4; + TextEditingController _controller5; void _presentDatePicker(id) { var date = new DateTime.now(); var initialDate = id == 'fromDate' @@ -66,25 +69,6 @@ class _RescheduleLeaveScreen extends State { initialDate: initialDate, firstDate: firstDate, lastDate: DateTime(2050), - ).then((pickedDate) { - if (pickedDate == null) { - return; - } - setState(() { - final df = new DateFormat('yyyy-MM-dd'); - fromDate = pickedDate; //df.format(); - _toDateController.text = df.format(pickedDate); - toDate = pickedDate; - }); - }); - } - - void _presentCurrentDate(id) { - showDatePicker( - context: context, - initialDate: DateTime.now(), - firstDate: DateTime.now(), - lastDate: DateTime(2050), ).then((pickedDate) { if (pickedDate == null) { return; @@ -99,6 +83,13 @@ class _RescheduleLeaveScreen extends State { _toDateController2.text = df.format(pickedDate); } }); + + setState(() { + final df = new DateFormat('yyyy-MM-dd'); + fromDate = pickedDate; //df.format(); + _toDateController.text = df.format(pickedDate); + toDate = pickedDate; + }); }); } @@ -112,6 +103,7 @@ class _RescheduleLeaveScreen extends State { @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); + return BaseView( onModelReady: (model) => model.getClinicsList(), builder: (_, model, w) => BaseView( @@ -345,24 +337,26 @@ class _RescheduleLeaveScreen extends State { CrossAxisAlignment.start, children: [ AppTextFormField( - hintText: TranslationBase.of( - context) - .fromDate, - borderColor: Colors.white, - prefix: IconButton( - icon: Icon(Icons - .calendar_today)), - textInputType: - TextInputType.number, - controller: _toDateController, - onTap: () { - _presentCurrentDate( - 'fromDate'); - }, - inputFormatter: ONLY_DATE, - onChanged: (value) { - fromDate = value; - }), + hintText: + TranslationBase.of(context) + .fromDate, + borderColor: Colors.white, + prefix: IconButton( + icon: Icon( + Icons.calendar_today)), + textInputType: + TextInputType.number, + controller: _toDateController, + onTap: () { + _presentDatePicker( + 'fromDate'); + }, + inputFormatter: ONLY_DATE, + onChanged: (val) => + fromDate = val, + onSaved: (val) => + fromDate = val, + ) ], )), Row( @@ -391,22 +385,16 @@ class _RescheduleLeaveScreen extends State { type: DateTimePickerType.time, controller: _controller4, - //initialValue: _initialValue, - // icon: Icon(Icons.access_time), - - //use24HourFormat: false, - //locale: Locale('en', 'US'), - onChanged: (val) => () { - print(val); - this.fromTime = val; - }, + onChanged: (val) => + fromTime = val, validator: (val) { print(val); // setState( // () => _valueToValidate4 = val); return null; }, - onSaved: (val) => {}, + onSaved: (val) => + fromTime = val, ) ], ), @@ -435,10 +423,9 @@ class _RescheduleLeaveScreen extends State { .toTime, type: DateTimePickerType.time, - controller: _controller4, - onChanged: (val) => () { - this.toTime = val; - }, + controller: _controller5, + onChanged: (val) => + toTime = val, validator: (val) { print(val); // setState( @@ -446,7 +433,7 @@ class _RescheduleLeaveScreen extends State { return null; }, onSaved: (val) => - {print(val)}, + toTime = val, ) ], ), @@ -510,7 +497,7 @@ class _RescheduleLeaveScreen extends State { AppTextFormField( hintText: TranslationBase .of(context) - .fromDate, + .toDate, borderColor: Colors.white, prefix: IconButton( icon: Icon( @@ -777,16 +764,34 @@ class _RescheduleLeaveScreen extends State { return clinicInfo.length > 0 ? clinicInfo[0]['ClinicDescription'] : ""; } - addRecheduleLeave(model) { - final df = new DateFormat('yyyy-MM-ddThh:mm:ss'); + addRecheduleLeave(model) async { + final df = new DateFormat('yyyy-MM-ddTHH:MM:ss'); + final dateFormat = new DateFormat('yyyy-MM-dd'); + var fromDates = fromDate; + var toDates = toDate; + if (offTime == '1') { + fromDate = df.format(DateTime.parse(dateFormat.format(fromDates) + + 'T' + + fromTime + + ':' + + DateTime.now().second.toString())); + toDate = df.format(DateTime.parse(dateFormat.format(fromDates) + + 'T' + + toTime + + ':' + + DateTime.now().second.toString())); + } else { + fromDate = df.format(fromDates); + toDate = df.format(toDates); + } Map request = { "Requisition": { "requisitionNo": 0, "requisitionType": offTime, "clinicId": this.profile['ClinicID'], "doctorId": this.profile['DoctorID'], - "dateTimeFrom": df.format(fromDate), - "dateTimeTo": toDate != null ? df.format(toDate) : df.format(fromDate), + "dateTimeFrom": fromDate, + "dateTimeTo": toDate, "date": df.format(DateTime.now()), "reasonId": reason == null ? model.allOffTime[0]['code'] : reason, "coveringDoctorId": @@ -797,8 +802,8 @@ class _RescheduleLeaveScreen extends State { "weekDayId": 1, "shiftId": 1, "isOpen": true, - "timeFrom": fromTime, - "timeTo": toTime, + "timeFrom": "", + "timeTo": "", "timeFromstr": "", "timeTostr": "" } @@ -806,29 +811,41 @@ class _RescheduleLeaveScreen extends State { } }; - model.addReschedule(request).then((response) { - DrAppToastMsg.showSuccesToast(TranslationBase.of(context).leaveCreated); - Navigator.pop(context); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AddRescheduleLeavScreen(), - // MyReferredPatient(), - ), - ); + await model.addReschedule(request).then((value) { + if (model.postSechedule != null) { + DrAppToastMsg.showSuccesToast(TranslationBase.of(context).leaveCreated); + Navigator.pushNamedAndRemoveUntil(context, HOME, (r) => false); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AddRescheduleLeavScreen(), + // MyReferredPatient(), + ), + ); + } }); } updateRecheduleLeave(model) { final df = new DateFormat('yyyy-MM-ddThh:mm:ss'); + final dateFormat = new DateFormat('yyyy-MM-dd'); + + if (offTime == '1') { + fromDate = dateFormat.format(fromDate) + 'T' + fromTime + '00'; + toDate = dateFormat.format(fromDate) + 'T' + toTime + '00'; + } else { + fromDate = df.format(fromDate); + toDate = df.format(toDate); + } + Map request = { "Requisition": { "requisitionNo": 0, "requisitionType": offTime, "clinicId": this.profile['ClinicID'], "doctorId": this.profile['DoctorID'], - "dateTimeFrom": df.format(fromDate), - "dateTimeTo": toDate != null ? df.format(toDate) : df.format(fromDate), + "dateTimeFrom": fromDate, + "dateTimeTo": toDate, "date": df.format(DateTime.now()), "reasonId": reason == null ? model.allOffTime[0]['code'] : reason, "coveringDoctorId": @@ -849,7 +866,17 @@ class _RescheduleLeaveScreen extends State { }; model.updateReschedule(request).then((response) { - print(response); + if (model.postSechedule != null) { + DrAppToastMsg.showSuccesToast(TranslationBase.of(context).leaveCreated); + Navigator.pushNamedAndRemoveUntil(context, HOME, (r) => false); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AddRescheduleLeavScreen(), + // MyReferredPatient(), + ), + ); + } }); } }