import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart';
import '../../shared/rounded_container_widget.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';

/* 
 *@author: Elham Rababah 
 *@Date:22/4/2020  
 *@param: 
 *@return:ProfileMedicalInfoWidget
 *@desc:   Profile Medical Info Widget
 */
class ProfileMedicalInfoWidget extends StatelessWidget {
  ProfileMedicalInfoWidget({Key key, this.patient}) : super(key: key);
  PatiantInformtion patient;
  @override
  Widget build(BuildContext context) {
    return SliverGrid.count(
        crossAxisSpacing: 10,
        mainAxisSpacing: 20,
        crossAxisCount: 2,
        childAspectRatio: 1.5,
        children: [
          PatientProfileButton(
              key: key,
              patient: patient,
              name: TranslationBase.of(context).vitalSign,
              route: VITAL_SIGN_DETAILS,
              icon: 'heartbeat.png'),
          PatientProfileButton(
              key: key,
              patient: patient,
              route: LAB_ORDERS,
              name: TranslationBase.of(context).labOrder,
              icon: 'lab.png'),
          PatientProfileButton(
              key: key,
              patient: patient,
              route: PRESCRIPTIONS,
              name: TranslationBase.of(context).prescription,
              icon: 'note.png'),
          PatientProfileButton(
              key: key,
              patient: patient,
              route: RADIOLOGY,
              name: TranslationBase.of(context).radiology,
              icon: 'radiology-1.png'),
          Visibility(
              visible: selectedPatientType != 0 && selectedPatientType != 5,
              child: PatientProfileButton(
                  key: key,
                  patient: patient,
                  route: PROGRESS_NOTE,
                  name: TranslationBase.of(context).progressNote,
                  icon: 'heartbeat.png')),
          PatientProfileButton(
              key: key,
              patient: patient,
              route: PATIENT_INSURANCE_APPROVALS,
              name: TranslationBase.of(context).insuranceApprovals,
              icon: 'lab.png'),
          Visibility(
              visible: selectedPatientType != 0 &&
                  selectedPatientType != 5 &&
                  selectedPatientType != 2,
              child: PatientProfileButton(
                  key: key,
                  patient: patient,
                  route: REFER_PATIENT,
                  name: TranslationBase.of(context).myReferralPatient,
                  icon: 'note.png')),
          Visibility(
              visible: selectedPatientType != 0 && selectedPatientType != 5,
              child: PatientProfileButton(
                  key: key,
                  patient: patient,
                  route: PATIENT_ORDERS,
                  name: TranslationBase.of(context).orders,
                  icon: 'radiology-1.png')),
        ]);
  }
}

class CircleAvatarWidget extends StatelessWidget {
  const CircleAvatarWidget(
      {Key key,
      @required this.url,
      @required this.des,
      this.height,
      this.width})
      : super(key: key);

  final String url;
  final String des;

  final double height;
  final double width;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: <Widget>[
          Container(
            height: height,
            width: width,
            // width: 50,
            // height: 50,
            decoration: new BoxDecoration(
                // color: Colors.green, // border color
                shape: BoxShape.circle,
                border: Border.all(color: Hexcolor('#B7831A'), width: 1.5)),
            child: CircleAvatar(
              radius: SizeConfig.imageSizeMultiplier * 12,
              child: Image.asset(url),
              backgroundColor: Colors.transparent,
            ),
          ),
          SizedBox(
            height: 10,
          ),
          AppText(
            des,
            fontSize: 1.5 * SizeConfig.textMultiplier,
            textAlign: TextAlign.center,
          )
        ],
      ),
    );
  }
}

class PatientProfileButton extends StatelessWidget {
  final String name;
  final String icon;
  final dynamic route;
  final PatiantInformtion patient;
  final String url = "assets/images/";
  PatientProfileButton(
      {Key key, this.patient, this.name, this.icon, this.route})
      : super(key: key);
  @override
  Widget build(BuildContext context) {
    return new Container(
      margin: new EdgeInsets.symmetric(horizontal: 4.0),
      child: InkWell(
        onTap: () {
          navigator(context, this.route);
        },
        child: Column(children: <Widget>[
          Container(
            alignment: Alignment.topLeft,
            padding: EdgeInsets.all(5),
            child: new AppText(
              this.name,
              color: Colors.red,
              fontWeight: FontWeight.w600,
              textAlign: TextAlign.left,
              fontSize: SizeConfig.textMultiplier * 2,
            ),
          ),
          Container(
              child: Row(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              Container(
                  padding: EdgeInsets.all(10),
                  child: new Image.asset(url + icon))
            ],
          ))
        ]),
      ),
      decoration: BoxDecoration(
        // border: Border.all(),
        color: Colors.white,
        borderRadius: BorderRadius.all(Radius.circular(10)),
        boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.2),
            spreadRadius: 5,
            blurRadius: 7,
            offset: Offset(0, 3), // changes position of shadow
          ),
        ],
      ),
      padding: EdgeInsets.fromLTRB(5, 10, 5, 5),
    );
  }

  void navigator(BuildContext context, route) {
    Navigator.of(context).pushNamed(route, arguments: {'patient': patient});
  }
}
