import 'package:cached_network_image/cached_network_image.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/service/AnalyticsService.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/icons_app/doctor_app_icons.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/sickleave/get_all_sickleave_response.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/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/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/shared/app_scaffold_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/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:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class AddSickLeavScreen extends StatelessWidget { PatiantInformtion patient; @override Widget build(BuildContext context) { ProjectViewModel projectsProvider = Provider.of(context); final routeArgs = ModalRoute.of(context).settings.arguments as Map; patient = routeArgs['patient']; bool isInpatient = routeArgs['isInpatient']; return BaseView( onModelReady: (model) async { await model .getSickLeavePatient(patient.patientMRN ?? patient.patientId); await model.getSickLeaveDoctor(patient.patientMRN ?? patient.patientId); }, builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, backgroundColor: Colors.grey[100], appBar: PatientProfileAppBar( patient, isInpatient: isInpatient, ), body: Column( children: [ patient.patientStatusType == 43 ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(10), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: SizeConfig.isHeightVeryShort ? 30 : SizeConfig.isHeightShort ? 35 : 10, ), if (!projectsProvider.isArabic) AppText( TranslationBase.of(context).patient, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3 : 4), fontWeight: FontWeight.w700, letterSpacing: -0.72, color: Color(0xFF2E303A), ), AppText( TranslationBase.of(context).sickLeave, fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 6 : 6), fontWeight: FontWeight.bold, letterSpacing: -1.44, color: Color(0xFF2E303A), ), ], ), ), AddNewOrder( label: TranslationBase.of(context).noSickLeaveApplied, onTap: () async { await locator().logEvent( eventCategory: "Add Sick Leave Screen" "Leave Screen", eventAction: "apply For Sick Leave", ); openSickLeave( context, false, ); }), ], ) : SizedBox(), model.getAllSIckLeavePatient.length > 0 ? Expanded( child: FractionallySizedBox( widthFactor: 0.95, child: Expanded( child: ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, itemCount: model.getAllSIckLeavePatient.length, itemBuilder: (BuildContext ctxt, int index) { SickLeavePatientModel item = model.getAllSIckLeavePatient[index]; return Column( children: [ CardWithBgWidget( padding: 0, marginLeft: 10, marginSymmetric: 10, hasBorder: false, bgColor: Colors.black, widget: Container( color: Colors.white, padding: EdgeInsets.all(20), child: InkWell( child: Column( children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Expanded( // width: MediaQuery.of(context).size.width*0.51, child: AppText( Helpers.capitalize( item.doctorName ?? ""), fontSize: 18, color: Color(0xff2e303a), fontWeight: FontWeight.w700, fontFamily: 'Poppins', textOverflow: TextOverflow.ellipsis, ), ), ]), SizedBox(height: 10,), Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(50.0), child: CachedNetworkImage( imageUrl: item.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", height: 30, width: 30, errorWidget: (context, url, error) => AppText( 'No Image', fontSize: 10, ), ), ), SizedBox( width: 10, ), Column( children: [ CustomRow( label: TranslationBase.of( context) .daysSickleave + ": ", labelSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.3, valueSize: SizeConfig.getTextMultiplierBasedOnWidth() * 4, value: (item.sickLeaveDays .toString() != null && item.sickLeaveDays .toString() != "null") ? item.sickLeaveDays .toString() : item.noOfDays .toString(), ), CustomRow( label: TranslationBase.of( context) .startDate + ' ' ?? "", labelSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.3, valueSize: SizeConfig.getTextMultiplierBasedOnWidth() * 4, value: AppDateUtils .getDayMonthYearDateFormatted( item.startDate .contains("/Date(") ? AppDateUtils .convertStringToDate( item.startDate) : DateTime.parse( item.startDate), ), ), CustomRow( label: TranslationBase.of( context) .endDate + ' ' ?? "", labelSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.3, valueSize: SizeConfig.getTextMultiplierBasedOnWidth() * 4, 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(), SizedBox( height: 100, ) ]), ), ); } openSickLeave(BuildContext context, isExtend, {GetAllSickLeaveResponse extendedData}) { // showModalBottomSheet( // context: context, // builder: (context) { // return new Container( // child: Navigator.push( context, FadePage( page: SickLeaveScreen( appointmentNo: isExtend == true ? extendedData.appointmentNo : patient.appointmentNo, //extendedData.appointmentNo, patientMRN: isExtend == true ? extendedData.patientMRN : patient.patientMRN, isExtended: isExtend, extendedData: extendedData, patient: patient), ), ); } }