import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/material.dart';

class PatientProfileButton extends StatelessWidget {
  final String nameLine1;
  final String nameLine2;
  final String icon;
  final dynamic route;
  final PatiantInformtion patient;
  final String patientType;
  String arrivalType;
  final bool isInPatient;
  String from;
  String to;
  final String url = "assets/images/";
  final bool isDisable;
  final bool isLoading;
  final Function onTap;
  final bool isDischargedPatient;
  PatientProfileButton(
      {Key key,
      this.patient,
      this.patientType,
      this.arrivalType,
      this.nameLine1,
      this.nameLine2,
      this.icon,
      this.route,
      this.isDisable = false,
      this.onTap,
      this.isLoading = false,
      this.from,
      this.to,
      this.isInPatient = false, this.isDischargedPatient=false,
      })
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Container(
      margin: new EdgeInsets.symmetric(horizontal: 4.0),
      padding: EdgeInsets.fromLTRB(10, 10, 10, 5),
      child: InkWell(
        onTap: isDisable
            ? null
            : onTap != null
                ? onTap
                : () {
                    navigator(context, this.route);
                  },
        child: Column(children: <Widget>[
          Container(
              child: Row(
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Container(
                  child: new Image.asset(
                url + icon,
                width: 50,
                height: 50,
              ))
            ],
          )),
          Container(
            alignment: Alignment.topLeft,
            padding: EdgeInsets.all(5),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                AppText(
                  this.nameLine1,
                  color: Colors.black,
                  /*Color(0xFFB9382C),*/
                  fontWeight: FontWeight.w600,
                  textAlign: TextAlign.left,
                  fontSize: SizeConfig.textMultiplier * 1.5,
                ),
                AppText(
                  this.nameLine2,
                  color: Colors.black,
                  fontWeight: FontWeight.w600,
                  textAlign: TextAlign.left,
                  fontSize: SizeConfig.textMultiplier * 1.5,
                ),
                if (isLoading) DrAppCircularProgressIndeicator()
              ],
            ),
          ),
        ]),
      ),
      decoration: BoxDecoration(
        // border: Border.all(),
        color: isDisable ? Colors.grey.withOpacity(0.4) : Colors.white,
        borderRadius: BorderRadius.all(Radius.circular(10)),
        border: Border.fromBorderSide(BorderSide(
          color: Color(0xffBBBBBB),
          width: 1,
        )),
        /*boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.2),
            spreadRadius: 5,
            blurRadius: 7,
            offset: Offset(0, 3), // changes position of shadow
          ),
        ],*/
      ),
    );
  }

  void navigator(BuildContext context, route) {
    if(route == null)
      return;

    if (from == null) {
      from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
    }
    if (to == null) {
      to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
    }
    if(arrivalType == null){
      arrivalType = "0";
    }
    Navigator.of(context).pushNamed(route, arguments: {
      'patient': patient,
      'from': from,
      'to': to,
      'patientType': patientType,
      'arrivalType': arrivalType,
      'isInpatient': isInPatient,
      'isDischargedPatient': isDischargedPatient,
    });
  }
}
