fix the design of all sick leave

merge-requests/847/head
Elham Rababh 5 years ago
parent aaca94e93c
commit 29336a9ef3

@ -249,7 +249,7 @@ const Map<String, Map<String, String>> localizedValues = {
"extended": {"en": "Extended", "ar": "تمديد"}, "extended": {"en": "Extended", "ar": "تمديد"},
"pending": {"en": "Pending", "ar": "قيد الانتظار"}, "pending": {"en": "Pending", "ar": "قيد الانتظار"},
"leave-start-date": {"en": "Leave start date", "ar": "تاريخ بدء المغادرة"}, "leave-start-date": {"en": "Leave start date", "ar": "تاريخ بدء المغادرة"},
"days-sick-leave": {"en": "DAYS OF SICK LEAVE", "ar": "أيام الإجازة المرضية"}, "days-sick-leave": {"en": "Leave Days: ", "ar": "أيام الإجازة "},
"extend": {"en": "Extend", "ar": "تمديد"}, "extend": {"en": "Extend", "ar": "تمديد"},
"extend-sickleave": {"en": "EXTEND SICK LEAVE", "ar": "قم بتمديد الإجازة المرضية"}, "extend-sickleave": {"en": "EXTEND SICK LEAVE", "ar": "قم بتمديد الإجازة المرضية"},
"chiefComplaintLength": { "chiefComplaintLength": {

@ -55,20 +55,16 @@ class SickLeaveService extends BaseService {
} }
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async { Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
// addSickLeaveRequest.appointmentNo = '2016054661';
// addSickLeaveRequest.patientMRN = '3120746';
hasError = false; hasError = false;
if(_sickLeaveResponse!= null)
_sickLeaveResponse.clear(); _sickLeaveResponse.clear();
await baseAppClient.post( await baseAppClient.post(
ADD_SICK_LEAVE, ADD_SICK_LEAVE,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_sickLeaveResponse = response;
return Future.value(response);
}, },
onFailure: (String error, int statusCode) { onFailure: (String error, int statusCode) {
DrAppToastMsg.showErrorToast(error); hasError = true;
// hasError = true; super.error = error;
// super.error = error;
}, },
body: addSickLeaveRequest.toJson(), body: addSickLeaveRequest.toJson(),
); );

@ -22,11 +22,11 @@ class SickLeaveViewModel extends BaseViewModel {
get getAllSIckLeavePatient => get getAllSIckLeavePatient =>
[..._sickLeaveService.getAllSickLeavePatient, ..._sickLeaveService.getAllSickLeaveDoctor]; [..._sickLeaveService.getAllSickLeavePatient, ..._sickLeaveService.getAllSickLeaveDoctor];
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async { Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
setState(ViewState.Busy); setState(ViewState.BusyLocal);
await _sickLeaveService.addSickLeave(addSickLeaveRequest); await _sickLeaveService.addSickLeave(addSickLeaveRequest);
if (_sickLeaveService.hasError) { if (_sickLeaveService.hasError) {
error = _sickLeaveService.error; error = _sickLeaveService.error;
setState(ViewState.Error); setState(ViewState.ErrorLocal);
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }

@ -1,22 +1,27 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/model/sick_leave/sick_leave_patient_model.dart'; import 'package:doctor_app_flutter/core/model/sick_leave/sick_leave_patient_model.dart';
import 'package:doctor_app_flutter/core/service/AnalyticsService.dart'; import 'package:doctor_app_flutter/core/service/AnalyticsService.dart';
import 'package:doctor_app_flutter/core/viewModel/project_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/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.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/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/sick-leave/sick_leave.dart'; import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/CusomRow.dart';
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart'; import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
@ -33,52 +38,62 @@ class AddSickLeavScreen extends StatelessWidget {
patient = routeArgs['patient']; patient = routeArgs['patient'];
bool isInpatient = routeArgs['isInpatient']; bool isInpatient = routeArgs['isInpatient'];
return BaseView<SickLeaveViewModel>( return BaseView<SickLeaveViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
await model await model
.getSickLeavePatient(patient.patientMRN ?? patient.patientId); .getSickLeavePatient(patient.patientMRN ?? patient.patientId);
await model await model.getSickLeaveDoctor(patient.patientMRN ?? patient.patientId);
.getSickLeaveDoctor(patient.patientMRN ?? patient.patientId); },
}, builder: (_, model, w) => AppScaffold(
builder: (_, model, w) => AppScaffold( baseViewModel: model,
baseViewModel: model, isShowAppBar: true,
isShowAppBar: true, backgroundColor: Colors.grey[100],
backgroundColor: Colors.grey[100], appBar: PatientProfileAppBar(
appBar: PatientProfileAppBar( patient,
patient, isInpatient: isInpatient,
isInpatient: isInpatient, ),
), body: Column(
body: SingleChildScrollView( children: [
child: Column(children: [ patient.patientStatusType == 43
patient.patientStatusType == 43 ? Column(
? Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding: EdgeInsets.all(10),
padding: EdgeInsets.all(10), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ SizedBox(
SizedBox(height: SizeConfig.isHeightVeryShort?30:SizeConfig.isHeightShort?35: 10,), height: SizeConfig.isHeightVeryShort
if (!projectsProvider.isArabic) ? 30
AppText( : SizeConfig.isHeightShort
TranslationBase.of(context).patient, ? 35
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge? 3: 4), : 10,
fontWeight: FontWeight.w700, ),
letterSpacing:-0.72, if (!projectsProvider.isArabic)
color: Color(0xFF2E303A), AppText(
TranslationBase.of(context).patient,
), fontSize:
AppText(TranslationBase.of(context).sickLeave, SizeConfig.getTextMultiplierBasedOnWidth() *
fontSize:SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge? 6: 6), (SizeConfig.isWidthLarge ? 3 : 4),
fontWeight: FontWeight.bold, fontWeight: FontWeight.w700,
letterSpacing:-1.44, letterSpacing: -0.72,
color: Color(0xFF2E303A), color: Color(0xFF2E303A),
), ),
], AppText(
)), TranslationBase.of(context).sickLeave,
fontSize:
AddNewOrder(label: TranslationBase.of(context) SizeConfig.getTextMultiplierBasedOnWidth() *
.noSickLeaveApplied, onTap: () async { (SizeConfig.isWidthLarge ? 6 : 6),
fontWeight: FontWeight.bold,
letterSpacing: -1.44,
color: Color(0xFF2E303A),
),
],
),
),
AddNewOrder(
label: TranslationBase.of(context).noSickLeaveApplied,
onTap: () async {
await locator<AnalyticsService>().logEvent( await locator<AnalyticsService>().logEvent(
eventCategory: "Add Sick Leave Screen" eventCategory: "Add Sick Leave Screen"
"Leave Screen", "Leave Screen",
@ -89,155 +104,170 @@ class AddSickLeavScreen extends StatelessWidget {
false, false,
); );
}), }),
], ],
) )
: SizedBox(), : SizedBox(),
model.getAllSIckLeavePatient.length > 0 model.getAllSIckLeavePatient.length > 0
? ListView.builder( ? Expanded(
child: FractionallySizedBox(
widthFactor: 0.95,
child: Expanded(
child: ListView.builder(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
itemCount: model.getAllSIckLeavePatient.length, itemCount: model.getAllSIckLeavePatient.length,
itemBuilder: (BuildContext ctxt, int index) { itemBuilder: (BuildContext ctxt, int index) {
var item = model.getAllSIckLeavePatient[index]; SickLeavePatientModel item =
return Container( model.getAllSIckLeavePatient[index];
padding: EdgeInsets.all(10), return Column(
child: Row( children: [
mainAxisAlignment: CardWithBgWidget(
MainAxisAlignment.start, padding: 0,
children: <Widget>[ marginLeft: 10,
Expanded( marginSymmetric: 10,
flex: 4, hasBorder: false,
child: Wrap( bgColor: Colors.black,
// mainAxisAlignment: widget: Container(
// MainAxisAlignment.start, color: Colors.white,
children: <Widget>[ padding: EdgeInsets.all(10),
Column( child: InkWell(
crossAxisAlignment: child: Column(
CrossAxisAlignment.start, children: [
children: <Widget>[ Row(
Container( crossAxisAlignment:
padding: EdgeInsets.all(3), CrossAxisAlignment.start,
child: AppText( mainAxisAlignment:
item = model.getAllSIckLeavePatient[index].doctorName ?? "", MainAxisAlignment.start,
// item.status == 1
// ? TranslationBase.of(
// context)
// .hold
// : item.status == 2
// ? TranslationBase
// .of(
// context)
// .active
// : TranslationBase
// .of(context)
// .all,
fontWeight:
FontWeight.bold,
// color: item.status == 1
// ? Colors.yellow[800]
// : item.status == 2
// ? Colors.green
// : Colors.black,
color: Colors.red,
),
),
Row(
children: [
AppText(TranslationBase
.of(context)
.daysSickleave +
": "),
AppText(
(item.sickLeaveDays
.toString() !=
null &&
item.sickLeaveDays
.toString() !=
"null")
? item.sickLeaveDays
.toString()
: item.noOfDays
.toString(),
fontWeight:
FontWeight.bold,
),
],
),
Row(
children: [ children: [
AppText( Expanded(
TranslationBase.of( // width: MediaQuery.of(context).size.width*0.51,
context)
.startDate +
' ' ??
"",
),
Flexible(
child: AppText( child: AppText(
AppDateUtils.getDayMonthYearDateFormatted(item Helpers.capitalize(
.startDate item.doctorName ?? ""),
.contains( fontSize: 16,
"/Date(") color: Color(0xff2e303a),
? AppDateUtils fontWeight: FontWeight.w700,
.convertStringToDate(item fontFamily: 'Poppins',
.startDate) textOverflow:
: DateTime.parse( TextOverflow.ellipsis,
item.startDate)),
fontWeight:
FontWeight.bold,
), ),
)
],
),
Row(
children: [
AppText(
TranslationBase.of(
context)
.endDate +
' ' ??
"",
), ),
Flexible( ]),
child: AppText( Row(
AppDateUtils.getDayMonthYearDateFormatted(item children: [
.startDate ClipRRect(
.contains( borderRadius:
"/Date(") BorderRadius.circular(50.0),
? AppDateUtils.convertStringToDate( child: CachedNetworkImage(
item.endDate ?? imageUrl: item.doctorImageURL ??
"") "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png",
.add(Duration( height: 30,
days: item.noOfDays ?? width: 30,
item errorWidget:
.sickLeaveDays)) (context, url, error) =>
: DateTime.parse( AppText(
item.startDate ?? "") 'No Image',
.add(Duration(days: item.noOfDays ?? ""))), fontSize: 10,
fontWeight: ),
FontWeight.bold, ),
),
SizedBox(
width: 10,
),
Column(
children: [
CustomRow(
label: TranslationBase.of(
context)
.daysSickleave +
": ",
value: (item.sickLeaveDays
.toString() !=
null &&
item.sickLeaveDays
.toString() !=
"null")
? item.sickLeaveDays
.toString()
: item.noOfDays
.toString(),
),
CustomRow(
label: TranslationBase.of(
context)
.startDate +
' ' ??
"",
value: AppDateUtils
.getDayMonthYearDateFormatted(
item.startDate
.contains("/Date(")
? AppDateUtils
.convertStringToDate(
item.startDate)
: DateTime.parse(
item.startDate),
),
), ),
) CustomRow(
], label: TranslationBase.of(
), context)
], .endDate +
), ' ' ??
SizedBox( "",
width: 20, value: AppDateUtils
), .getDayMonthYearDateFormatted(
], item.startDate
.contains("/Date(")
? AppDateUtils
.convertStringToDate(
item.endDate ??
"")
.add(
Duration(
days: item
.noOfDays ??
item.sickLeaveDays),
)
: DateTime.parse(
item.startDate ??
"")
.add(
Duration(
days:
item.noOfDays ??
""),
),
),
),
],
crossAxisAlignment:
CrossAxisAlignment.start,
),
],
),
],
),
), ),
), ),
], ),
)); ],
}) );
: patient.patientStatusType != 43 }),
? ErrorMessage( ),
error: TranslationBase.of(context) ),
.noSickLeave,
) )
: SizedBox() : patient.patientStatusType != 43
])))); ? ErrorMessage(
error: TranslationBase.of(context).noSickLeave,
)
: SizedBox(),
SizedBox(
height: 100,
)
]),
),
);
} }
openSickLeave(BuildContext context, isExtend, openSickLeave(BuildContext context, isExtend,
@ -248,18 +278,19 @@ class AddSickLeavScreen extends StatelessWidget {
// return new Container( // return new Container(
// child: // child:
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: SickLeaveScreen( page: SickLeaveScreen(
appointmentNo: isExtend == true appointmentNo: isExtend == true
? extendedData.appointmentNo ? extendedData.appointmentNo
: patient.appointmentNo, : patient.appointmentNo,
//extendedData.appointmentNo, //extendedData.appointmentNo,
patientMRN: isExtend == true patientMRN:
? extendedData.patientMRN isExtend == true ? extendedData.patientMRN : patient.patientMRN,
: patient.patientMRN, isExtended: isExtend,
isExtended: isExtend, extendedData: extendedData,
extendedData: extendedData, patient: patient),
patient: patient))); ),
);
} }
} }

@ -16,6 +16,7 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_form_field.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -348,24 +349,18 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
} else if (addSickLeave.startDate == null) { } else if (addSickLeave.startDate == null) {
DrAppToastMsg.showErrorToast(TranslationBase.of(context).pleaseEnterDate); DrAppToastMsg.showErrorToast(TranslationBase.of(context).pleaseEnterDate);
} else { } else {
GifLoaderDialogUtils.showMyDialog(context);
addSickLeave.patientMRN = widget.patient.patientMRN.toString(); addSickLeave.patientMRN = widget.patient.patientMRN.toString();
addSickLeave.appointmentNo = widget.patient.appointmentNo.toString(); addSickLeave.appointmentNo = widget.patient.appointmentNo.toString();
await model2.addSickLeave(addSickLeave); await model2.addSickLeave(addSickLeave);
if(model2.state == ViewState.ErrorLocal){
Helpers.showErrorToast(model2.error);
} else {
DrAppToastMsg.showSuccesToast(TranslationBase.of(context).replySuccessfully);
}
if (model2.sickleaveResponse['SickLeavesList']['success'] != null) GifLoaderDialogUtils.hideDialog(context);
DrAppToastMsg.showSuccesToast(
model2.sickleaveResponse['SickLeavesList']['success']);
} }
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => AddSickLeavScreen()),
// );
// Navigator.of(context).popUntil((route) {
// return route.settings.name == PATIENTS_PROFILE;
// });
// Navigator.of(context)
// .pushNamed(ADD_SICKLEAVE, arguments: {'patient': widget.patient});
} catch (err) { } catch (err) {
print(err); print(err);
} }
@ -402,9 +397,14 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
} else { } else {
addSickLeave.patientMRN = widget.patient.patientMRN.toString(); addSickLeave.patientMRN = widget.patient.patientMRN.toString();
addSickLeave.appointmentNo = widget.patient.appointmentNo.toString(); addSickLeave.appointmentNo = widget.patient.appointmentNo.toString();
await model2.addSickLeave(addSickLeave).then((value) => print(value)); await model2.addSickLeave(addSickLeave);
if(model2.state == ViewState.ErrorLocal){
Helpers.showErrorToast(model2.error);
} else {
DrAppToastMsg.showSuccesToast(TranslationBase.of(context).replySuccessfully);
}
DrAppToastMsg.showSuccesToast(model2.sickleaveResponse['ListSickLeavesToExtent']['success']); GifLoaderDialogUtils.hideDialog(context);
Navigator.of(context).popUntil((route) { Navigator.of(context).popUntil((route) {
return route.settings.name == PATIENTS_PROFILE; return route.settings.name == PATIENTS_PROFILE;
}); });

Loading…
Cancel
Save