import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.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/PatientProfileButton.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';

import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart';

class ProfileMedicalInfoWidget extends StatelessWidget {
  String from;
  String to;
  PatiantInformtion patient;
  String patientType;

  ProfileMedicalInfoWidget(
      {Key key, this.patient, this.patientType, this.from, this.to});

  @override
  Widget build(BuildContext context) {
    return BaseView<SOAPViewModel>(
      onModelReady: (model) async {},
      builder: (_, model, w) => SliverGrid.count(
        crossAxisSpacing: 10,
        mainAxisSpacing: 20,
        crossAxisCount: 2,
        childAspectRatio: 1.5,
        children: [
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                isDisable: patient.episodeNo != 0 ? true : false,
                nameLine1: TranslationBase.of(context).createNew,
                nameLine2: TranslationBase.of(context).episode,
                route: CREATE_EPISODE,
                onTap: () async {
                  PostEpisodeReqModel postEpisodeReqModel = PostEpisodeReqModel(
                      appointmentNo: patient.appointmentNo,
                      patientMRN: patient.patientMRN);
                  await model.postEpisode(postEpisodeReqModel);
                  patient.episodeNo = model.episodeID;
                  Navigator.of(context).pushNamed(CREATE_EPISODE,
                      arguments: {'patient': patient});
                },
                isLoading: model.state == ViewState.BusyLocal,
                icon: 'create-episod.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                isDisable: patient.episodeNo == 0 ? true : false,
                nameLine1: TranslationBase.of(context).update,
                nameLine2: TranslationBase.of(context).episode,
                route: UPDATE_EPISODE,
                icon: 'modilfy-episode.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: RADIOLOGY,
                nameLine1: TranslationBase.of(context).radiology,
                nameLine2: TranslationBase.of(context).service,
                icon: 'radiology-1.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: PATIENT_INSURANCE_APPROVALS,
                nameLine1: TranslationBase.of(context).insurance,
                nameLine2: TranslationBase.of(context).service,
                icon: 'lab.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                from: from,
                to: to,
                nameLine1: TranslationBase.of(context).vital,
                nameLine2: TranslationBase.of(context).signs,
                route:
                    VITAL_SIGN_DETAILS /* PATIENT_VITAL_SIGN
                  */
                ,
                icon: 'heartbeat.png'),
          if (selectedPatientType != 7)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: LAB_ORDERS,
                nameLine1: TranslationBase.of(context).lab,
                nameLine2: TranslationBase.of(context).result,
                icon: 'lab.png'),
          PatientProfileButton(
              key: key,
              patient: patient,
              route: MEDICAL_FILE,
              nameLine1: TranslationBase.of(context).previewHealth,
              nameLine2: TranslationBase.of(context).summaryReport,
              icon: 'radiology-1.png'),
          if (selectedPatientType != 0 &&
              selectedPatientType != 5 &&
              selectedPatientType != 7)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: PROGRESS_NOTE,
                nameLine1: TranslationBase.of(context).progress,
                nameLine2: TranslationBase.of(context).note,
                icon: 'heartbeat.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: PATIENT_ADMISSION_REQUEST,
                nameLine1: TranslationBase.of(context).admission,
                nameLine2: TranslationBase.of(context).request,
                icon: 'heartbeat.png'),
          (int.parse(patientType) == 7 || int.parse(patientType) == 6)
              ? PatientProfileButton(
                  key: key,
                  patient: patient,
                  route: ORDER_PRESCRIPTION,
                  nameLine1: TranslationBase.of(context).orders,
                  nameLine2: TranslationBase.of(context).prescription,
                  icon: 'lab.png')
              : PatientProfileButton(
                  key: key,
                  patient: patient,
                  route: ORDER_PRESCRIPTION_HISTORY,
                  nameLine1: TranslationBase.of(context).orders,
                  nameLine2: TranslationBase.of(context).prescription,
                  icon: 'lab.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: ORDER_PROCEDURE,
                nameLine1: TranslationBase.of(context).orders,
                nameLine2: TranslationBase.of(context).procedures,
                icon: 'lab.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: REFER_PATIENT_TO_DOCTOR,
                nameLine1: TranslationBase.of(context).myReferral,
                nameLine2: TranslationBase.of(context).patient,
                icon: 'note.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: ADD_SICKLEAVE,
                nameLine1: TranslationBase.of(context).patientSick,
                nameLine2: TranslationBase.of(context).leave,
                icon: 'sick_leaves_icons.png'),
          if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
            PatientProfileButton(
                key: key,
                patient: patient,
                route: PATIENT_UCAF_REQUEST,
                nameLine1: TranslationBase.of(context).patient,
                nameLine2: TranslationBase.of(context).ucaf,
                icon: 'lab.png'),
        ],
      ),
    );
  }
}
