import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart';

import '../../../../locator.dart';
import 'shared/icon_with_bg.dart';

class ProductNameAndPrice extends StatefulWidget {
  BuildContext context;
  PharmacyProduct item;
  final customerId;
  final bool isInWishList;
  final Function notifyMeWhenAvailable;
  final Function addToWishlistFunction;
  final Function deleteFromWishlistFunction;
  final bool isStockAvailable;
  final String stockAvailability;

  AuthenticatedUserObject authenticatedUserObject =
      locator<AuthenticatedUserObject>();

  ProductNameAndPrice(this.context, this.item,
      {this.customerId,
      this.isInWishList,
      this.notifyMeWhenAvailable,
      this.addToWishlistFunction,
      this.deleteFromWishlistFunction,
      this.isStockAvailable = true,
      this.stockAvailability});

  @override
  _ProductNameAndPriceState createState() => _ProductNameAndPriceState();
}

class _ProductNameAndPriceState extends State<ProductNameAndPrice> {
  @override
  Widget build(BuildContext context) {
    ProjectViewModel projectViewModel = Provider.of(context);

    return Container(
      color: Color(0xffF7F7F7),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          SizedBox(
            height: 10,
          ),
          widget.item.rxMessage != null
              ? Container(
                  // width: widget.item.rxMessage != null ? MediaQuery.of(context).size.width / 2.8 : 0,
                  width: double.infinity,
                  height: 40,
                  padding: EdgeInsets.all(4),
                  decoration: BoxDecoration(
                    color: Color(0xffD02127),
                    //  color: Colors.red[700]
                    //  borderRadius: BorderRadius.only(topLeft: Radius.circular(6)),
                  ),
                  child: Row(
                    children: [
                      Padding(
                        padding: const EdgeInsets.only(left: 8, right: 8),
                        child: Icon(
                          Icons.warning,
                          color: Colors.white,
                        ),
                      ),
                      Text(
                          projectViewModel.isArabic
                              ? widget.item.rxMessagen.toString()
                              : widget.item.rxMessage.toString(),
                          style: TextStyle(
                            color: Colors.white,
                            //  regular: true,
                            fontSize: 17,
                            fontWeight: FontWeight.w600,
                              letterSpacing:-0.68
                            // textAlign: TextAlign.center,
                          )),
                    ],
                  ))
              : Container(),
          FractionallySizedBox(
            widthFactor: 0.93,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
//              Texts(widget.item.price.toString() + " " + TranslationBase.of(context).sar, fontWeight: FontWeight.bold, fontSize: 20),
                if (widget.stockAvailability != null)
                  Container(
                    margin: EdgeInsets.only(top: 10.0, right: 10.0),
                    padding: EdgeInsets.only(
                        left: 11.0, right: 11.0, top: 0, bottom: 0),
                    decoration: BoxDecoration(
                        border: Border.all(
                          color: getStatusBackgroundColor(),
                          style: BorderStyle.solid,
                          width: 5.0,
                        ),
                        color: getStatusBackgroundColor(),
                        borderRadius: BorderRadius.circular(30.0)),
                    //   child: Text(
                    //     widget.stockAvailability,
                    //     style: TextStyle(
                    //       fontWeight: FontWeight.w600,
                    //       fontSize: 11,
                    //       color: Color(0xffFFFFFF),
                    //     ),
                    //     color: getStatusBackgroundColor(),
                       //  borderRadius: BorderRadius.circular(30.0)),
                     child: Text(
                       widget.stockAvailability,
                       style: TextStyle(fontWeight: FontWeight.w600, fontSize: 11, color: Color(0xffFFFFFF),letterSpacing:-0.44)),
                    //color: widget.isStockAvailable ? Colors.white : Colors.red,
                  ),
                // SizedBox(width: 20),
                if (
                widget.authenticatedUserObject.isLogin)
                  widget.stockAvailability != null &&
                          !widget.isStockAvailable &&
                          widget.customerId != null
                      ? Container(
                        child: Row(
                          children: [
                            IconButton(
                                iconSize: 25,
                                icon: Icon(Icons.notifications_active),
                                color: new Color(0xff2E303A),
                                onPressed: () {
                                  widget.notifyMeWhenAvailable(
                                      context, widget.item.id);
                                },
                              ),
                            IconButton(
                              icon: Icon(!widget.isInWishList
                                  ? Icons.favorite_border
                                  : Icons.favorite),
                              color: !widget.isInWishList
                                  ? Color(0xff2E303A)
                                  : Color(0xffD02127),
                              onPressed: () async {
                                {
                                  if (widget.customerId != null) {
                                    if (!widget.isInWishList) {
                                      await widget
                                          .addToWishlistFunction(widget.item.id);
                                    } else {
                                      await widget.deleteFromWishlistFunction(
                                          widget.item.id);
                                    }
                                  } else {
                                    return;
                                  }
                                  setState(() {});
                                }
                              },
                            )
                          ],
                        ),
                      )
                      : IconButton(
                          icon: Icon(!widget.isInWishList
                              ? Icons.favorite_border
                              : Icons.favorite),
                          color: !widget.isInWishList
                              ? Color(0xff2E303A)
                              : Color(0xffD02127),
                          onPressed: () async {
                            {
                              if (widget.customerId != null) {
                                if (!widget.isInWishList) {
                                  await widget
                                      .addToWishlistFunction(widget.item.id);
                                } else {
                                  await widget.deleteFromWishlistFunction(
                                      widget.item.id);
                                }
                              } else {
                                return;
                              }
                              setState(() {});
                            }
                          },
                        )
//                BorderedButton(
//                            TranslationBase.of(context).notifyMe,
//                            hasBorder: true,
//                            borderColor: Colors.green,
//                            textColor: Colors.green,
//                            fontWeight: FontWeight.bold,
//                            vPadding: 6,
//                            hPadding: 14,
//                            handler:  () => widget.notifyMeWhenAvailable(context, widget.item.id),
//                            )
//                InkWell(
//                        onTap: () => widget.notifyMeWhenAvailable(context, widget.item.id),
//                        child: Row(children: [
//                          Texts(
//                            TranslationBase.of(context).notifyMe,
//                            decoration: TextDecoration.underline,
//                            color: Colors.blue,
//                          ),
//                          SizedBox(width: 4),
//                          Icon(
//                            FontAwesomeIcons.bell,
//                            color: Colors.blue,
//                            size: 15.0,
//                          )
//                        ]),
//                      )
//                    : IconWithBg(
//                        icon: !widget.isInWishList ? Icons.favorite_border : Icons.favorite,
//                        color: !widget.isInWishList ? Colors.white : Colors.red[800],
//                        onPress: () async {
//                          {
//                            if (widget.customerId != null) {
//                              if (!widget.isInWishList) {
//                                await widget.addToWishlistFunction(widget.item.id);
//                              } else {
//                                await widget.deleteFromWishlistFunction(widget.item.id);
//                              }
//                            } else {
//                              return;
//                            }
//                            setState(() {});
//                          }
//                        },
//                      )
              ],
            ),
          ),
          Padding(
            padding:
                const EdgeInsets.only(left: 8, right: 8, top: 1, bottom: 12),
            child: Container(
              margin: EdgeInsets.only(left: 10, right: 10),
              child: Align(
                alignment: projectViewModel.isArabic
                    ? Alignment.topRight
                    : Alignment.topLeft,
                child: Text(
                  projectViewModel.isArabic
                      ? widget.item.namen
                      : widget.item.name,
                  style: TextStyle(
                      fontWeight: FontWeight.w600,
                      fontSize: 16,
                      letterSpacing: -0.96),
                ),
              ),
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(left: 8, right: 8),
            child: Container(
              margin: EdgeInsets.only(left: 10, right: 10),
              child: Align(
                alignment: projectViewModel.isArabic
                    ? Alignment.topRight
                    : Alignment.topLeft,
                child: Text(
                  TranslationBase.of(context).sar +
                      " " +
                      widget.item.price.toString(),
                  style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: 19,
                      letterSpacing: -0.76),
                ),
              ),
            ),
          ),
          FractionallySizedBox(
            widthFactor: 0.95,
            child: Row(
              children: [
                Container(
                  margin: EdgeInsets.only(left: 8, right: 8),
                  child: Align(
                    alignment: Alignment.bottomLeft,
                    child: Row(
                      children: [
                        RatingBar.readOnly(
                          initialRating: double.parse(
                              widget.item.approvedRatingSum.toString()),
                          size: 18.0,
                          filledColor: Color(0XFFD02127),
                          emptyColor: Color(0XFFD02127),
                          isHalfAllowed: true,
                          halfFilledIcon: Icons.star_half,
                          filledIcon: Icons.star,
                          emptyIcon: Icons.star_border,
                        ),
                        SizedBox(
                          width: 5,
                        ),
//                      Texts(
//                        "${widget.item.approvedRatingSum}",
//                        fontWeight: FontWeight.bold,
//                        fontSize: 12,
//                      ),
//                        SizedBox(
//                          width: 30,
//                        ),
                        Text(
                          "(${widget.item.approvedTotalReviews}${TranslationBase.of(context).review})",
                          style: TextStyle(
                              fontWeight: FontWeight.w600, fontSize: 12),
                        ),
                        SizedBox(
                          width: 70,
                        ),
//                      if (widget.item.rxMessage != null)
//                        Row(
//                          children: [
//                            Text(
//                              projectViewModel.isArabic ? widget.item.rxMessagen.toString() : widget.item.rxMessage.toString(),
//                              style: TextStyle(color: Colors.red, fontSize: 10),
//                            ),
//                          ],
//                        )
                      ],
                    ),
                  ),
                ),
              ],
            ),
          ),
          SizedBox(
            height: 20,
          ),
        ],
      ),
    );
  }

  Color getStatusBackgroundColor() {
    if (widget.isStockAvailable)
      return Color(0xFF5AB145);
    else
      return Color(0xFFD02127);
  }
}
