You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/screens/sick-leave/add-sickleave.dart

275 lines
15 KiB
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/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/translations_delegate_base.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/rounded_container_widget.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<ProjectViewModel>(context);
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient'];
bool isInpatient = routeArgs['isInpatient'];
return BaseView<SickLeaveViewModel>(
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: SingleChildScrollView(
child: Column(children: [
patient.patientStatusType == 43
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (!projectsProvider.isArabic)
AppText(
TranslationBase.of(context).patient,
fontWeight: FontWeight.bold,
),
AppText(
TranslationBase.of(context).sickLeave,
fontSize: 24,
fontWeight: FontWeight.bold,
),
],
)),
InkWell(
onTap: () async {
await locator<AnalyticsService>().logEvent(
eventCategory: "Add Sick Leave Screen"
"Leave Screen",
eventAction: "apply For Sick Leave",
);
openSickLeave(
context,
false,
);
},
child: Container(
width: SizeConfig.screenWidth,
margin: EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10),
padding: EdgeInsets.all(20),
decoration:
BoxDecoration(borderRadius: BorderRadius.circular(10), color: HexColor('#EAEAEA')),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
child: Container(
decoration:
BoxDecoration(color: Colors.grey, borderRadius: BorderRadius.circular(10)),
padding: EdgeInsets.all(3),
child: IconButton(
icon: Icon(
Icons.add,
size: 35,
color: Colors.white,
),
// onPressed: () {
// openSickLeave(
// context,
// false,
// );
// },
),
)),
Padding(
child: AppText(TranslationBase.of(context).noSickLeaveApplied,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 16,
textAlign: TextAlign.center,
color: HexColor('#7E7E7E')),
padding: EdgeInsets.all(10),
),
],
)),
),
],
)
: SizedBox(),
model.getAllSIckLeavePatient.length > 0
? Column(
children: model.getAllSIckLeavePatient.map<Widget>((SickLeavePatientModel item) {
return RoundedContainer(
margin: EdgeInsets.all(10),
child: Column(
children: [
Container(
// decoration: BoxDecoration(
// border: Border(
// left: BorderSide(
// // color: item.status == 1
// // ? Colors.yellow[800]
// // : item.status == 2
// // ? Colors.green
// // : Colors.black,
// color: Colors.red,
// width: 5.0,
// ))),
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 4,
child: Wrap(
// mainAxisAlignment:
// MainAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.all(3),
child: AppText(
item.doctorName ?? "",
// 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 ?? item.noOfDays.toString(),
fontWeight: FontWeight.bold,
),
],
),
Row(
children: [
AppText(
TranslationBase.of(context).startDate + ' ' ?? "",
),
Flexible(
child: AppText(
AppDateUtils.getDayMonthYearDateFormatted(
item.startDate.contains("/Date(")
? AppDateUtils.convertStringToDate(item.startDate)
: DateTime.parse(item.startDate)),
fontWeight: FontWeight.bold,
),
)
],
),
Row(
children: [
AppText(
TranslationBase.of(context).endDate + ' ' ?? "",
),
Flexible(
child: AppText(
AppDateUtils.getDayMonthYearDateFormatted(
item.startDate.contains("/Date(")
? AppDateUtils.convertStringToDate(item.endDate)
.add(Duration(days: item.noOfDays))
: DateTime.parse(item.startDate)
.add(Duration(days: item.noOfDays))),
fontWeight: FontWeight.bold,
),
)
],
),
],
),
SizedBox(
width: 20,
),
],
),
),
],
)),
],
));
}).toList(),
)
: patient.patientStatusType != 43
? Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 100,
),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: AppText(TranslationBase.of(context).noSickLeave),
)
],
),
)
: SizedBox()
]))));
}
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)));
}
}