import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/model/dashboard/dashboard_model.dart';
import 'package:doctor_app_flutter/screens/home/label.dart';
import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';

class GetOutPatientStack extends StatelessWidget {
  final value;

  GetOutPatientStack(this.value);

  @override
  Widget build(BuildContext context) {
    double barHeight = SizeConfig.heightMultiplier! *
        (SizeConfig.isHeightVeryShort
            ? 20
            : SizeConfig.isHeightLarge
                ? 20
                : 17);
    value.summaryoptions
        .sort((Summaryoptions a, Summaryoptions b) => b.value! - a.value!);

    value.summaryoptions
        .sort((Summaryoptions a, Summaryoptions b) => b.value! - a.value!);

    var list = <Widget>[];
    value.summaryoptions.forEach((result) => {
          list.add(getStack(
              result, value.summaryoptions.first.value, context, barHeight))
        });
    return Container(
      margin: EdgeInsets.only(bottom: 20, top: 10, left: 5, right: 5),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.only(
            topLeft: Radius.circular(20),
            topRight: Radius.circular(20),
            bottomLeft: Radius.circular(20),
            bottomRight: Radius.circular(20)),
        boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.5),
            spreadRadius: 0,
            blurRadius: 9,
            offset: Offset(0, 0), // changes position of shadow
          ),
        ],
      ),
      child: Padding(
          padding: const EdgeInsets.all(5.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Container(
                padding: EdgeInsets.symmetric(horizontal: 5, vertical: 5),
                child: Label(
                  firstLine: Utils.getLabelFromKPI(value.kPIName),
                  secondLine: Utils.getNameFromKPI(value.kPIName),
                  color: Color(0xFF2B353E),
                  firstLineFontSize:
                      SizeConfig.getHeightMultiplier(height: barHeight) *
                          (SizeConfig.isHeightVeryShort
                              ? 10
                              : SizeConfig.isHeightShort
                                  ? 10
                                  : 8.5),
                  secondLineFontSize:
                      SizeConfig.getHeightMultiplier(height: barHeight) *
                          (SizeConfig.isHeightVeryShort
                              ? 15
                              : SizeConfig.isHeightShort
                                  ? 15
                                  : 14.5),
                ),
              ),
              Row(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  children: list)
            ],
          )),
    );
  }

  getStack(Summaryoptions value, max, context, barHeight) {
    return Expanded(
      child: Container(
        margin: EdgeInsets.symmetric(horizontal: 2),
        decoration: BoxDecoration(
          gradient: LinearGradient(
            begin: Alignment.topLeft,
            end: Alignment(0.0, 1.0),
            // 10% of the width, so there are ten blinds.
            colors: <Color>[Color(0x8FF5F6FA), Colors.red[100]!],
            // red to yellow
            tileMode: TileMode.mirror, // repeats the gradient over the canvas
          ),
          borderRadius: BorderRadius.circular(4),
          // color: Colors.red[50],
        ),
        child: Stack(children: [
          Positioned(
            bottom: 0,
            left: 0,
            right: 0,
            child: Container(
              child: SizedBox(),
              padding: EdgeInsets.all(10),
              height: max != 0 ? ((barHeight) * value.value) / max : 0,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(4),
                color: Color(0xFFD02127).withOpacity(0.39),
              ),
            ),
          ),
          Container(
              height: barHeight,
              margin: EdgeInsets.only(left: 5, top: 5),
              padding: EdgeInsets.all(10),
              child: RotatedBox(
                quarterTurns: 3,
                child: Center(
                  child: Align(
                      child: FittedBox(
                    child: Row(
                      children: [
                        AppText(
                          value.kPIParameter!,
                          fontSize:
                              SizeConfig.getTextMultiplierBasedOnWidth() * 2.5,
                          textAlign: TextAlign.center,
                          color: Color(0xFF2B353E),
                          fontWeight: FontWeight.w500,
                          letterSpacing: -0.3,
                        ),
                        AppText(
                          ' (' + value.value.toString() + ') ',
                          fontSize:
                              SizeConfig.getTextMultiplierBasedOnWidth() * 2.5,
                          textAlign: TextAlign.center,
                          color: Color(0xFF2B353E),
                          letterSpacing: -0.3,
                          fontWeight: FontWeight.bold,
                        ),
                      ],
                    ),
                  )),
                ),
              ))
        ]),
      ),
    );
  }
}
