import 'package:doctor_app_flutter/config/size_config.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/icons_app/doctor_app_icons.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/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-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/card_with_bgNew_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';

class AddSickLeavScreen extends StatelessWidget {
  PatiantInformtion patient;
  @override
  Widget build(BuildContext context) {
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    patient = routeArgs['patient'];
    return BaseView<SickLeaveViewModel>(
        onModelReady: (model) => model.getSickLeave(patient.patientMRN),
        builder: (_, model, w) => AppScaffold(
            baseViewModel: model,
            appBarTitle: TranslationBase.of(context).sickleave,
            body: SingleChildScrollView(
                child: Column(children: [
              PatientPageHeaderWidget(patient),
              model.getAllSIckLeave.length > 0
                  ? Column(
                      children: model.getAllSIckLeave
                          .map<Widget>((GetAllSickLeaveResponse item) {
                        return CardWithBgWidgetNew(
                            widget: Column(
                          children: [
                            Container(
                                padding: EdgeInsets.only(left: 10, right: 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.status == 1
                                                      ? TranslationBase.of(
                                                              context)
                                                          .hold
                                                      : item.status == 2
                                                          ? TranslationBase.of(
                                                                  context)
                                                              .active
                                                          : TranslationBase.of(
                                                                  context)
                                                              .all,
                                                  fontWeight: FontWeight.bold,
                                                  color: Colors.white,
                                                ),
                                                color: item.status == 1
                                                    ? Colors.yellow[800]
                                                    : item.status == 2
                                                        ? Colors.green
                                                        : Colors.black,
                                              ),
                                              Row(
                                                children: [
                                                  AppText(
                                                    TranslationBase.of(context)
                                                            .leaveStartDate +
                                                        ' ',
                                                    fontWeight: FontWeight.bold,
                                                  ),
                                                  Flexible(
                                                      child: Text(
                                                    item.startDate,
                                                    overflow:
                                                        TextOverflow.ellipsis,
                                                  ))
                                                ],
                                              ),
                                              AppText(
                                                item.noOfDays.toString() +
                                                    ' ' +
                                                    TranslationBase.of(context)
                                                        .daysSickleave,
                                                fontWeight: FontWeight.bold,
                                              ),
                                              Row(children: [
                                                AppText(
                                                  item.remarks ?? "",
                                                )
                                              ]),
                                            ],
                                          ),
                                          SizedBox(
                                            width: 20,
                                          ),
                                        ],
                                      ),
                                    ),
                                    (item.status == 1 || item.status == 2)
                                        ? Expanded(
                                            flex: 1,
                                            child: IconButton(
                                              icon: Icon(
                                                Icons.open_in_full,
                                                size: 25,
                                                color: item.status == 1
                                                    ? Colors.grey[400]
                                                    : Colors.black,
                                              ),
                                              // color: Colors.green, //Colors.black,
                                              onPressed: () => {
                                                if (item.status == 1)
                                                  {
                                                    DrAppToastMsg.showErrorToast(
                                                        TranslationBase.of(
                                                                context)
                                                            .sickleaveonhold)
                                                  }
                                                else
                                                  {
                                                    openSickLeave(context, true,
                                                        extendedData: item)
                                                  }
                                              },
                                            ))
                                        : SizedBox(),
                                  ],
                                )),
                            SizedBox(
                              height: 20,
                            ),
                            Divider(
                              height: 1,
                            ),
                          ],
                        ));
                      }).toList(),
                    )
                  : new Builder(builder: (context) {
                      return Container(
                          height: MediaQuery.of(context).size.height * .7,
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              Container(
                                padding: EdgeInsets.all(40),
                                decoration: BoxDecoration(
                                    border: Border.all(
                                        color: HexColor('#B8382C'), width: 4),
                                    borderRadius:
                                        BorderRadius.all(Radius.circular(100))),
                                child: IconButton(
                                    icon: Icon(
                                      Icons.add,
                                      size: 35,
                                    ),
                                    onPressed: () {
                                      openSickLeave(
                                        context,
                                        false,
                                      );
                                    }),
                              ),
                              Padding(
                                child: AppText(
                                  TranslationBase.of(context)
                                      .noSickLeaveApplied,
                                  fontWeight: FontWeight.bold,
                                ),
                                padding: EdgeInsets.all(10),
                              ),
                              AppText(
                                TranslationBase.of(context).applyNow,
                                fontWeight: FontWeight.bold,
                                color: HexColor('#B8382C'),
                              )
                            ],
                          ));
                    }),
            ]))));
  }

  openSickLeave(BuildContext context, isExtend,
      {GetAllSickLeaveResponse extendedData}) {
    showModalBottomSheet(
        context: context,
        builder: (context) {
          return new Container(
              child: SickLeaveScreen(
                  appointmentNo: isExtend == true
                      ? extendedData.appointmentNo
                      : patient.appointmentNo, //extendedData.appointmentNo,
                  patientMRN: isExtend == true
                      ? extendedData.patientMRN
                      : patient.patientMRN,
                  isExtended: isExtend,
                  extendedData: extendedData,
                  patient: patient));
        });
  }
}
