sick leave fixes

merge-requests/847/head
Elham Rababh 4 years ago
parent 4711b6264c
commit 9a5eff8c8b

@ -7,11 +7,12 @@ import 'package:doctor_app_flutter/core/viewModel/leave_rechdule_response.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart'; import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/extend_sick_leave_request.dart'; import 'package:doctor_app_flutter/models/sickleave/extend_sick_leave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart'; import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/models/sickleave/sick_leave_statisitics_model.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
class SickLeaveService extends BaseService { class SickLeaveService extends BaseService {
Map get sickLeavestatisitics => _statistics; SickLeaveStatisticsModel get sickLeavestatisitics => _statistics;
Map _statistics = {}; SickLeaveStatisticsModel _statistics = SickLeaveStatisticsModel();
List get getOffTimeList => offTime; List get getOffTimeList => offTime;
List offTime = []; List offTime = [];
List get getReasons => reasonse; List get getReasons => reasonse;
@ -40,8 +41,8 @@ class SickLeaveService extends BaseService {
GET_SICKLEAVE_STATISTIC, GET_SICKLEAVE_STATISTIC,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
print(response); print(response);
_statistics = {};
_statistics = response['SickLeaveStatistics']; _statistics = SickLeaveStatisticsModel.fromJson(response['SickLeaveStatistics']);
}, },
onFailure: (String error, int statusCode) { onFailure: (String error, int statusCode) {
hasError = true; hasError = true;

@ -1,25 +1,40 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/patient/patient_service.dart';
import 'package:doctor_app_flutter/core/service/patient_medical_file/sick_leave/sickleave_service.dart'; import 'package:doctor_app_flutter/core/service/patient_medical_file/sick_leave/sickleave_service.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart'; import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart'; import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/models/sickleave/sick_leave_statisitics_model.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
class SickLeaveViewModel extends BaseViewModel { class SickLeaveViewModel extends BaseViewModel {
SickLeaveService _sickLeaveService = locator<SickLeaveService>(); SickLeaveService _sickLeaveService = locator<SickLeaveService>();
get sickLeaveStatistics => _sickLeaveService.sickLeavestatisitics; PatientService _patientService = locator<PatientService>();
get getAllSIckLeave => _sickLeaveService.getAllSickLeave;
SickLeaveStatisticsModel get sickLeaveStatistics =>
_sickLeaveService.sickLeavestatisitics;
get getAllSIckLeave => _sickLeaveService.getAllSickLeave;
List get allOffTime => _sickLeaveService.getOffTimeList; List get allOffTime => _sickLeaveService.getOffTimeList;
List get allReasons => _sickLeaveService.getReasons; List get allReasons => _sickLeaveService.getReasons;
List get coveringDoctors => _sickLeaveService.coveringDoctorsList; List get coveringDoctors => _sickLeaveService.coveringDoctorsList;
List get sickLeaveDoctor => _sickLeaveService.getAllSickLeaveDoctor; List get sickLeaveDoctor => _sickLeaveService.getAllSickLeaveDoctor;
get getReschduleLeave => _sickLeaveService.getAllRescheduleLeave; get getReschduleLeave => _sickLeaveService.getAllRescheduleLeave;
get postSechedule => _sickLeaveService.postReschedule; get postSechedule => _sickLeaveService.postReschedule;
get getAllSIckLeavePatient =>
[..._sickLeaveService.getAllSickLeavePatient, ..._sickLeaveService.getAllSickLeaveDoctor]; get getAllSIckLeavePatient => [
..._sickLeaveService.getAllSickLeavePatient,
..._sickLeaveService.getAllSickLeaveDoctor
];
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async { Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
await _sickLeaveService.addSickLeave(addSickLeaveRequest); await _sickLeaveService.addSickLeave(addSickLeaveRequest);
@ -60,12 +75,36 @@ class SickLeaveViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getSickLeavePatient(patientMRN) async { Future getSickLeavePatient(patientMRN, {bool isLocalBusy = false}) async {
setState(ViewState.Busy); if (isLocalBusy)
setState(ViewState.BusyLocal);
else
setState(ViewState.Busy);
await _sickLeaveService.getSickLeavePatient(patientMRN); await _sickLeaveService.getSickLeavePatient(patientMRN);
if (_sickLeaveService.hasError) { if (_sickLeaveService.hasError) {
error = _sickLeaveService.error; error = _sickLeaveService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
Future getSickLeaveForPatient(PatiantInformtion patient, {bool isLocalBusy = false}) async {
if (isLocalBusy)
setState(ViewState.BusyLocal);
else
setState(ViewState.Busy);
var patientMRN = patient.patientMRN ?? patient.patientId;
var services = [_sickLeaveService.getSickLeavePatient(patientMRN),_sickLeaveService.getSickLeaveDoctor(patientMRN) ];
final results = await Future.wait(services);
if (_sickLeaveService.hasError) {
error = _sickLeaveService.error;
// if (isLocalBusy)
setState(ViewState.ErrorLocal);
// else
// setState(ViewState.Error);
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }

@ -0,0 +1,24 @@
class SickLeaveStatisticsModel {
String recommendedSickLeaveDays;
int totalLeavesByAllClinics;
int totalLeavesByDoctor;
SickLeaveStatisticsModel(
{this.recommendedSickLeaveDays,
this.totalLeavesByAllClinics,
this.totalLeavesByDoctor});
SickLeaveStatisticsModel.fromJson(Map<String, dynamic> json) {
recommendedSickLeaveDays = json['recommendedSickLeaveDays'];
totalLeavesByAllClinics = json['totalLeavesByAllClinics'];
totalLeavesByDoctor = json['totalLeavesByDoctor'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['recommendedSickLeaveDays'] = this.recommendedSickLeaveDays;
data['totalLeavesByAllClinics'] = this.totalLeavesByAllClinics;
data['totalLeavesByDoctor'] = this.totalLeavesByDoctor;
return data;
}
}

@ -5,11 +5,13 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart'; import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart'; import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/helpers.dart';
@ -28,21 +30,19 @@ import 'package:intl/intl.dart';
Helpers helpers = Helpers(); Helpers helpers = Helpers();
class AddPatientSickLeaveScreen extends StatefulWidget { class AddPatientSickLeaveScreen extends StatefulWidget {
final bool isExtended;
final GetAllSickLeaveResponse extendedData;
final appointmentNo; final appointmentNo;
final patientMRN; final patientMRN;
final patient; final PatiantInformtion patient;
final SickLeaveViewModel previousModel;
AddPatientSickLeaveScreen( AddPatientSickLeaveScreen(
{this.appointmentNo, {this.appointmentNo,
this.patientMRN, this.patientMRN,
this.isExtended = false, this.patient, this.previousModel});
this.extendedData,
this.patient});
@override @override
_AddPatientSickLeaveScreenState createState() => _AddPatientSickLeaveScreenState(); _AddPatientSickLeaveScreenState createState() =>
_AddPatientSickLeaveScreenState();
} }
class _AddPatientSickLeaveScreenState extends State<AddPatientSickLeaveScreen> { class _AddPatientSickLeaveScreenState extends State<AddPatientSickLeaveScreen> {
@ -53,321 +53,276 @@ class _AddPatientSickLeaveScreenState extends State<AddPatientSickLeaveScreen> {
TextEditingController _doctorController = new TextEditingController(); TextEditingController _doctorController = new TextEditingController();
TextEditingController _remarkController = new TextEditingController(); TextEditingController _remarkController = new TextEditingController();
Map profile = {};
AddSickLeaveRequest addSickLeave = AddSickLeaveRequest(); AddSickLeaveRequest addSickLeave = AddSickLeaveRequest();
bool isFormSubmitted = false; bool isFormSubmitted = false;
void _presentDatePicker(id) { void _presentDatePicker() {
showDatePicker( showDatePicker(
context: context, context: context,
initialDate: DateTime.now(), initialDate: DateTime.now(),
firstDate: DateTime(2019), firstDate: DateTime(DateTime.now().year-1),
lastDate: DateTime(2050), lastDate: DateTime(DateTime.now().year+1),
).then((pickedDate) { ).then((pickedDate) {
if (pickedDate == null) { if (pickedDate == null) {
return; return;
} }
setState(() { setState(() {
// var selectedDate = DateFormat.yMd().format(pickedDate);
final df = new DateFormat('yyyy-MM-dd'); final df = new DateFormat('yyyy-MM-dd');
addSickLeave.startDate = df.format(pickedDate); addSickLeave.startDate = df.format(pickedDate);
_toDateController.text = AppDateUtils.getDayMonthYearDateFormatted(pickedDate,isMonthShort: true );
_toDateController.text = addSickLeave.startDate;
//addSickLeave.startDate = selectedDate;
}); });
}); });
} }
@override @override
void initState() { void initState() {
getProfile();
super.initState(); super.initState();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<PatientViewModel>( return BaseView<SickLeaveViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
await model.getClinicsList(); await model.getDoctorProfile();
_clinicController.text = getClinicName(model); _clinicController.text = model.doctorProfile.clinicDescription;
_doctorController.text = profile['DoctorName']; _doctorController.text = model.doctorProfile.doctorName;
await model.preSickLeaveStatistics(
widget.appointmentNo, widget.patientMRN);
}, },
builder: (_, model, w) => BaseView<SickLeaveViewModel>( builder: (_, model, w) => GestureDetector(
onModelReady: (model2) => model2.preSickLeaveStatistics( onTap: () {
widget.appointmentNo, widget.patientMRN), FocusScope.of(context).requestFocus(new FocusNode());
builder: (_, model2, w) => GestureDetector( },
onTap: () { child: AppScaffold(
FocusScope.of(context).requestFocus(new FocusNode()); baseViewModel: model,
}, appBar: BottomSheetTitle(
child: AppScaffold( title: TranslationBase.of(context).addSickLeave,
baseViewModel: model2, ),
appBar: BottomSheetTitle(title: widget.isExtended == true isShowAppBar: true,
? TranslationBase.of(context).extendSickLeave body: Center(
: TranslationBase.of(context).addSickLeave,), child: Container(
isShowAppBar: true, margin: EdgeInsets.only(top: 10),
body: Center( child: FractionallySizedBox(
child: Container( widthFactor: 0.9,
margin: EdgeInsets.only(top: 10), child: ListView(
child: FractionallySizedBox( children: [
widthFactor: 0.9, SizedBox(
child: ListView( height: 30,
children: [ ),
SizedBox( AppTextFieldCustom(
height: 30, height: Helpers.getTextFieldHeight(),
), hintText: TranslationBase.of(context).sickLeave +
AppTextFieldCustom( ' ' +
height: Helpers.getTextFieldHeight(), TranslationBase.of(context).days,
hintText: widget.extendedData != null maxLines: 1,
? widget.extendedData.noOfDays.toString() minLines: 1,
: TranslationBase.of(context).sickLeave + dropDownColor: Colors.white,
' ' + isTextFieldHasSuffix: true,
TranslationBase.of(context).days, inputFormatters: [
maxLines: 1, FilteringTextInputFormatter.allow(
minLines: 1, RegExp(ONLY_NUMBERS))
dropDownColor: Colors.white, ],
isTextFieldHasSuffix: true, inputType:TextInputType.number,
inputFormatters: [ controller: _numberOfDayController,
FilteringTextInputFormatter.allow( onChanged: (value) {
RegExp(ONLY_NUMBERS)) if(value.isNotEmpty)
], setState(() {
controller: _numberOfDayController, addSickLeave.noOfDays = value;
onChanged: (value) { });
setState(() {
addSickLeave.noOfDays = value;
});
if (widget.extendedData != null) { },
widget.extendedData.noOfDays = validationError: isFormSubmitted &&
int.parse(value); (addSickLeave.noOfDays == null)
} ? TranslationBase.of(context)
}, .pleaseEnterNoOfDays
validationError: isFormSubmitted && : null,
(addSickLeave.noOfDays == null) ),
? TranslationBase.of(context) SizedBox(
.pleaseEnterNoOfDays height: 10,
: null, ),
), AppTextFieldCustom(
SizedBox( height: Helpers.getTextFieldHeight(),
height: 10, onClick: () {
), _presentDatePicker();
AppTextFieldCustom( },
height: Helpers.getTextFieldHeight(), hintText: TranslationBase.of(context)
onClick: () { .sickLeaveDate,
_presentDatePicker('_selectedToDate'); enabled: false,
}, maxLines: 1,
hintText: widget.extendedData != null minLines: 1,
? widget.extendedData.startDate isTextFieldHasSuffix: true,
: TranslationBase.of(context) suffixIcon: IconButton(
.sickLeaveDate, icon: Icon(Icons.calendar_today)),
enabled: false, inputFormatters: [
maxLines: 1, FilteringTextInputFormatter.allow(
minLines: 1, RegExp(ONLY_NUMBERS))
isTextFieldHasSuffix: true, ],
suffixIcon: IconButton( controller: _toDateController,
icon: Icon(Icons.calendar_today)), onChanged: (value) {
inputFormatters: [ setState(() {
FilteringTextInputFormatter.allow( addSickLeave.startDate = value;
RegExp(ONLY_NUMBERS)) });
],
controller: _toDateController, },
onChanged: (value) { validationError: isFormSubmitted &&
setState(() { (addSickLeave.startDate == null)
addSickLeave.startDate = value; ? TranslationBase.of(context)
}); .pleaseEnterDate
if (widget.extendedData != null) { : null,
widget.extendedData.startDate = value; ),
} SizedBox(
}, height: 5,
validationError: isFormSubmitted && ),
(addSickLeave.startDate == null) AppTextFieldCustom(
? TranslationBase.of(context) height: Helpers.getTextFieldHeight(),
.pleaseEnterDate hintText: TranslationBase.of(context).clinic,
: null, enabled: false,
), maxLines: 1,
SizedBox( minLines: 1,
height: 5, dropDownColor: Colors.white,
), isTextFieldHasSuffix: true,
AppTextFieldCustom( inputFormatters: [
height: Helpers.getTextFieldHeight(), FilteringTextInputFormatter.allow(
hintText: RegExp(ONLY_NUMBERS))
TranslationBase.of(context).clinic, ],
enabled: false, controller: _clinicController,
maxLines: 1, onChanged: (value) {},
minLines: 1, ),
dropDownColor: Colors.white, SizedBox(
isTextFieldHasSuffix: true, height: 10,
inputFormatters: [ ),
FilteringTextInputFormatter.allow( model.sickLeaveStatistics.recommendedSickLeaveDays!=
RegExp(ONLY_NUMBERS)) null
], ? Row(
controller: _clinicController, crossAxisAlignment:
onChanged: (value) {}, CrossAxisAlignment.center,
), children: [
SizedBox( SizedBox(
height: 10, width: 10,
), ),
model2.sickLeaveStatistics[ Icon(
'recommendedSickLeaveDays'] != DoctorApp.warning,
null size: 20,
? Row( color: IN_PROGRESS_COLOR,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SizedBox(
width: 10,
),
Icon(
DoctorApp.warning,
size: 20,
color: IN_PROGRESS_COLOR,
),
SizedBox(
width: 10,
),
AppText(
model2.sickLeaveStatistics[
'recommendedSickLeaveDays'],
textAlign: TextAlign.start,
fontSize: 12,
color: IN_PROGRESS_COLOR,
),
],
)
: SizedBox(
height: 10,
),
SizedBox(
height: 10,
),
AppTextFieldCustom(
height: Helpers.getTextFieldHeight(),
hintText:
TranslationBase.of(context).doctor,
enabled: false,
maxLines: 1,
minLines: 1,
dropDownColor: Colors.white,
isTextFieldHasSuffix: true,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(ONLY_NUMBERS))
],
controller: _doctorController,
onChanged: (value) {},
),
SizedBox(
height: 10,
),
AppTextFieldCustom(
height: Helpers.getTextFieldHeight(),
hintText: widget.extendedData != null
? widget.extendedData.remarks
: TranslationBase.of(context).remarks,
maxLines: 30,
minLines: 5,
dropDownColor: Colors.white,
isTextFieldHasSuffix: true,
controller: _remarkController,
onChanged: (value) {
setState(() {
addSickLeave.remarks = value;
});
if (widget.extendedData != null) {
widget.extendedData.remarks = value;
}
},
validationError: isFormSubmitted &&
(addSickLeave.remarks == null)
? TranslationBase.of(context)
.pleaseEnterRemarks
: null,
),
],
), ),
), SizedBox(
width: 10,
),
AppText(
model.sickLeaveStatistics.recommendedSickLeaveDays,
textAlign: TextAlign.start,
fontSize: 12,
color: IN_PROGRESS_COLOR,
),
],
)
: SizedBox(
height: 10,
),
SizedBox(
height: 10,
), ),
), AppTextFieldCustom(
bottomSheet: model2.state == ViewState.Busy || height: Helpers.getTextFieldHeight(),
model.state == ViewState.Busy hintText: TranslationBase.of(context).doctor,
? Container( enabled: false,
height: 0, maxLines: 1,
) minLines: 1,
: Container( dropDownColor: Colors.white,
decoration: BoxDecoration( isTextFieldHasSuffix: true,
color: Colors.white, inputFormatters: [
borderRadius: BorderRadius.all( FilteringTextInputFormatter.allow(
Radius.circular(0.0), RegExp(ONLY_NUMBERS))
), ],
border: Border.all( controller: _doctorController,
color: HexColor('#707070'), width: 0), onChanged: (value) {},
), ),
height: SizeConfig.heightMultiplier * SizedBox(
(SizeConfig.isHeightVeryShort ? 12 : 10), height: 10,
width: double.infinity, ),
child: Column( AppTextFieldCustom(
children: [ height: Helpers.getTextFieldHeight(),
SizedBox( hintText: TranslationBase.of(context).remarks,
height: 10, maxLines: 30,
), minLines: 5,
FractionallySizedBox( dropDownColor: Colors.white,
widthFactor: 0.9, isTextFieldHasSuffix: true,
child: AppButton( controller: _remarkController,
title: widget.isExtended == true onChanged: (value) {
? TranslationBase.of(context).extend setState(() {
: TranslationBase.of(context) addSickLeave.remarks = value;
.addSickLeaverequest, });
color: Colors.green, },
onPressed: () async { ),
submitForm(model2); ],
}), ),
), ),
SizedBox( ),
height: 5, ),
), bottomSheet: model.state == ViewState.Busy ||
], model.state == ViewState.Busy
), ? Container(
)), height: 0,
))); )
: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(0.0),
),
border: Border.all(
color: HexColor('#707070'), width: 0),
),
height: SizeConfig.heightMultiplier *
(SizeConfig.isHeightVeryShort ? 12 : 10),
width: double.infinity,
child: Column(
children: [
SizedBox(
height: 10,
),
FractionallySizedBox(
widthFactor: 0.9,
child: AppButton(
title: TranslationBase.of(context)
.addSickLeaverequest,
color: Colors.green,
onPressed: () async {
submitForm(model);
}),
),
SizedBox(
height: 5,
),
],
),
)),
));
} }
submitForm(SickLeaveViewModel model2) async { submitForm(SickLeaveViewModel model) async {
{ {
if (widget.isExtended) {
GifLoaderDialogUtils.showMyDialog(context);
await model2.extendSickLeave(widget.extendedData);
if (model2.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(model2.error);
} else {
DrAppToastMsg.showSuccesToast(
TranslationBase.of(context).replySuccessfully);
Navigator.of(context).popUntil((route) {
return route.settings.name == PATIENTS_PROFILE;
});
Navigator.of(context)
.pushNamed(ADD_SICKLEAVE, arguments: {'patient': widget.patient});
}
GifLoaderDialogUtils.hideDialog(context);
} else {
try { try {
setState(() { setState(() {
isFormSubmitted = true; isFormSubmitted = true;
}); });
if (addSickLeave.noOfDays == null || if (addSickLeave.noOfDays == null ||
addSickLeave.startDate == null || addSickLeave.startDate == null ) {
addSickLeave.remarks == null) {
return; return;
} else { } else {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
addSickLeave.patientMRN = widget.patient.patientMRN.toString(); addSickLeave.patientMRN = widget.patient.patientMRN.toString();
addSickLeave.appointmentNo = addSickLeave.appointmentNo =
widget.patient.appointmentNo.toString(); widget.patient.appointmentNo.toString();
await model2.addSickLeave(addSickLeave); await model.addSickLeave(addSickLeave);
if (model2.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(model2.error); Helpers.showErrorToast(model.error);
} else { } else {
await widget.previousModel
.getSickLeaveForPatient(widget.patient, isLocalBusy: true);
DrAppToastMsg.showSuccesToast( DrAppToastMsg.showSuccesToast(
TranslationBase.of(context).replySuccessfully); TranslationBase.of(context).replySuccessfully);
Navigator.of(context).pop();
} }
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
@ -375,21 +330,8 @@ class _AddPatientSickLeaveScreenState extends State<AddPatientSickLeaveScreen> {
} catch (err) { } catch (err) {
print(err); print(err);
} }
}
}
}
getProfile() async { }
Map p = await sharedPref.getObj(DOCTOR_PROFILE);
setState(() {
this.profile = p;
});
} }
getClinicName(model) {
var clinicInfo = model.clinicsList
.where((i) => i['ClinicID'] == this.profile['ClinicID'])
.toList();
return clinicInfo.length > 0 ? clinicInfo[0]['ClinicDescription'] : "";
}
} }

@ -6,7 +6,6 @@ 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/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/locator.dart'; import 'package:doctor_app_flutter/locator.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patient-sick-leave/add_patient_sick_leave_screen.dart'; import 'package:doctor_app_flutter/screens/patient-sick-leave/add_patient_sick_leave_screen.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
@ -35,9 +34,7 @@ class PatientSickLeaveScreen extends StatelessWidget {
bool isInpatient = routeArgs['isInpatient']; bool isInpatient = routeArgs['isInpatient'];
return BaseView<SickLeaveViewModel>( return BaseView<SickLeaveViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
await model await model.getSickLeaveForPatient(patient);
.getSickLeavePatient(patient.patientMRN ?? patient.patientId);
await model.getSickLeaveDoctor(patient.patientMRN ?? patient.patientId);
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
@ -94,10 +91,7 @@ class PatientSickLeaveScreen extends StatelessWidget {
"Leave Screen", "Leave Screen",
eventAction: "apply For Sick Leave", eventAction: "apply For Sick Leave",
); );
openSickLeave( openSickLeave(context, model);
context,
false,
);
}), }),
], ],
) )
@ -288,22 +282,17 @@ class PatientSickLeaveScreen extends StatelessWidget {
); );
} }
openSickLeave(BuildContext context, isExtend, openSickLeave(BuildContext context, model) {
{GetAllSickLeaveResponse extendedData}) {
Navigator.push( Navigator.push(
context, context,
SlideUpPageRoute( SlideUpPageRoute(
fullscreenDialog: true, fullscreenDialog: true,
widget: AddPatientSickLeaveScreen( widget: AddPatientSickLeaveScreen(
appointmentNo: isExtend appointmentNo: patient.appointmentNo,
? extendedData.appointmentNo patientMRN: patient.patientMRN,
: patient.appointmentNo, patient: patient,
//extendedData.appointmentNo, previousModel: model,
patientMRN: ),
isExtend ? extendedData.patientMRN : patient.patientMRN,
isExtended: isExtend,
extendedData: extendedData,
patient: patient),
), ),
); );
} }

@ -496,7 +496,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
isArabic: isArabic:
projectViewModel projectViewModel
.isArabic, .isArabic,
isMonthshort: true) isMonthShort: true)
: AppDateUtils : AppDateUtils
.getDayMonthYearDateFormatted( .getDayMonthYearDateFormatted(
DateTime.now(), DateTime.now(),

@ -297,11 +297,11 @@ class AppDateUtils {
/// get data formatted like 26 Apr 2020 /// get data formatted like 26 Apr 2020
/// [dateTime] convert DateTime to data formatted /// [dateTime] convert DateTime to data formatted
static String getDayMonthYearDateFormatted(DateTime dateTime, static String getDayMonthYearDateFormatted(DateTime dateTime,
{bool isArabic = false, bool isMonthshort = false}) { {bool isArabic = false, bool isMonthShort = false}) {
if (dateTime != null) if (dateTime != null)
return dateTime.day.toString() + return dateTime.day.toString() +
" " + " " +
"${isArabic ? getMonthArabic(dateTime.month) : isMonthshort ? getMonth(dateTime.month).toString().substring(0, 3) : getMonth(dateTime.month)}" + "${isArabic ? getMonthArabic(dateTime.month) : isMonthShort ? getMonth(dateTime.month).toString().substring(0, 3) : getMonth(dateTime.month)}" +
" " + " " +
dateTime.year.toString(); dateTime.year.toString();
else else

Loading…
Cancel
Save