import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/PatientProfileCardModel.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/PatientProfileButton.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

import '../../../../routes.dart';

// ignore: must_be_immutable
class ProfileGridForInPatient extends StatelessWidget {
  final PatiantInformtion patient;
  final String patientType;
  final String arrivalType;
  final double height;
  final bool isInpatient;
  final bool isDischargedPatient;
  final bool isFromSearch;
  String from;
  String to;

  ProfileGridForInPatient(
      {Key key,
      this.patient,
      this.patientType,
      this.arrivalType,
      this.height,
      this.isInpatient,
      this.from,
      this.to,
      this.isDischargedPatient,
      this.isFromSearch})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    final List<PatientProfileCardModel> cardsList = [
      PatientProfileCardModel(
          TranslationBase.of(context).vital,
          TranslationBase.of(context).signs,
          VITAL_SIGN_DETAILS,
          'patient/vital_signs.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).lab,
          TranslationBase.of(context).result,
          LAB_RESULT,
          'patient/lab_results.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).lab,
          TranslationBase.of(context).specialResult,
          ALL_SPECIAL_LAB_RESULT,
          'patient/lab_results.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).radiology,
          TranslationBase.of(context).result,
          RADIOLOGY_PATIENT,
          'patient/health_summary.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).patient,
          TranslationBase.of(context).prescription,
          ORDER_PRESCRIPTION_NEW,
          'patient/order_prescription.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).progress,
          TranslationBase.of(context).note,
          PROGRESS_NOTE,
          'patient/Progress_notes.png',
          isInPatient: isInpatient,
          isDischargedPatient: isDischargedPatient),
      PatientProfileCardModel(
          TranslationBase.of(context).order,
          TranslationBase.of(context).sheet,
          ORDER_NOTE,
          'patient/Progress_notes.png',
          isInPatient: isInpatient,
          isDischargedPatient: isDischargedPatient),
      PatientProfileCardModel(
          TranslationBase.of(context).orders,
          TranslationBase.of(context).procedures,
          ORDER_PROCEDURE,
          'patient/Order_Procedures.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).health,
          TranslationBase.of(context).summary,
          HEALTH_SUMMARY,
          'patient/health_summary.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).medical,
          TranslationBase.of(context).report,
          PATIENT_MEDICAL_REPORT,
          'patient/health_summary.png',
          isInPatient: isInpatient,
          isDisable: false),
      PatientProfileCardModel(
        TranslationBase.of(context).referral,
        TranslationBase.of(context).patient,
        REFER_IN_PATIENT_TO_DOCTOR,
        'patient/refer_patient.png',
        isInPatient: isInpatient,
        isDisable: isDischargedPatient || isFromSearch,
      ),
      PatientProfileCardModel(
          TranslationBase.of(context).insurance,
          TranslationBase.of(context).approvals,
          PATIENT_INSURANCE_APPROVALS_NEW,
          'patient/vital_signs.png',
          isInPatient: isInpatient),
      PatientProfileCardModel(
          TranslationBase.of(context).discharge,
          TranslationBase.of(context).report,
          null,
          'patient/patient_sick_leave.png',
          isInPatient: isInpatient,
          isDisable: true),
      PatientProfileCardModel(
        TranslationBase.of(context).patientSick,
        TranslationBase.of(context).leave,
        ADD_SICKLEAVE,
        'patient/patient_sick_leave.png',
        isInPatient: isInpatient,
      ),
    ];

    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 15),
      child: GridView(
        shrinkWrap: true,

        physics: BouncingScrollPhysics(),
        // if you want IOS bouncing effect, otherwise remove this line
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
          crossAxisCount: 3,
        ),
        //change the number as you want
        children: cardsList.map((item) {
          return PatientProfileButton(
            patient: patient,
            patientType: patientType,
            arrivalType: arrivalType,
            from: from,
            to: to,
            nameLine1: item.nameLine1,
            nameLine2: item.nameLine2,
            route: item.route,
            icon: item.icon,
            isInPatient: item.isInPatient,
            isDischargedPatient: item.isDischargedPatient,
            isDisable: item.isDisable,
            onTap: item.onTap,
            isLoading: item.isLoading,
          );
        }).toList(),
      ),
    );
  }
}
