import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/model/pharmacy/categorise_parent_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacy_categorise_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/product_detail.dart';
import 'package:diplomaticquarterapp/pages/sub_categorise_page.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_pharmacy_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/entity_checkbox_list.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import 'base/base_view.dart';

class ParentCategorisePage extends StatefulWidget {
  String id;
  String titleName;

  ParentCategorisePage({this.id, this.titleName});

  @override
  _ParentCategorisePageState createState() =>
      _ParentCategorisePageState(id: id, titleName: titleName);
}

class _ParentCategorisePageState extends State<ParentCategorisePage> {
  String id;
  String titleName;

  _ParentCategorisePageState({this.id, this.titleName});

  Map<String, bool> values = {'huusam': false, 'ali': false, 'noor': false};
  bool checkedBrands = false;
  bool checkedCategorise = false;
  String categoriseName = "Personal Care";
  bool styleOne = true;
  bool styleTwo = false;
  Icon styleIcon = Icon(
    Icons.widgets_sharp,
    color: Colors.blue,
    size: 29.0,
  );

  List<CategoriseParentModel> entityList = List();
  List<CategoriseParentModel> entityListBrands = List();

  @override
  Widget build(BuildContext context) {
    TextEditingController minField = TextEditingController();
    TextEditingController maxField = TextEditingController();
    ProjectViewModel projectViewModel = Provider.of(context);
    return BaseView<PharmacyCategoriseViewModel>(
        onModelReady: (model) => model.getCategoriseParent(i: id),
        allowAny: true,
        builder: (BuildContext context, PharmacyCategoriseViewModel model,
                Widget child) =>
            PharmacyAppScaffold(
              appBarTitle: titleName,
              isBottomBar: false,
              isShowAppBar: true,
              backgroundColor: Colors.white,
              isShowDecPage: false,
              baseViewModel: model,
              body: SingleChildScrollView(
                child: Container(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Container(
                        child: Image.network(
                            id == '1'
                                ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089188_personal-care_2.png'
                                : id == '2'
                                    ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089189_skin-care_2.png'
                                    : id == '3'
                                        ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089190_health-care_2.png'
                                        : id == '4'
                                            ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089191_sexual-health_2.png'
                                            : id == '5'
                                                ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089192_beauty_2.png'
                                                : id == '6'
                                                    ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089193_baby-child_2.png'
                                                    : id == '7'
                                                        ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089194_vitamins-supplements_2.png'
                                                        : id == '8'
                                                            ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089195_diet-nutrition_2.png'
                                                            : id == '9'
                                                                ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089196_household_2.png'
                                                                : id == '10'
                                                                    ? 'https://uat.hmgwebservices.com/epharmacy/content/images/thumbs/0089197_home-care-appliances_2.png'
                                                                    : '',
                            fit: BoxFit.fill,
                            height: 160.0,
                            width: double.infinity),
                      ),
                      if (model.categoriseParent.length > 8)
                        Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Row(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              children: [
                                Padding(
                                  padding: EdgeInsets.all(10.0),
                                  child: InkWell(
                                    child: Container(
                                      child: Texts(
                                        TranslationBase.of(context)
                                            .viewCategorise,
//                                        'View All Categories',
                                        fontWeight: FontWeight.w300,
                                      ),
                                    ),
                                    onTap: () {
                                      showModalBottomSheet<void>(
                                        isScrollControlled: true,
                                        context: context,
                                        builder: (BuildContext context) {
                                          return Container(
                                            // height: MediaQuery.of(context)
                                            //         .size
                                            //         .height *
                                            //     0.89,
                                            color: Colors.white,
                                            child: Center(
                                              child: ListView.builder(
                                                  scrollDirection:
                                                      Axis.vertical,
                                                  itemCount: model
                                                      .categoriseParent.length,
                                                  itemBuilder:
                                                      (BuildContext context,
                                                          int index) {
                                                    return Container(
                                                      child: Padding(
                                                        padding:
                                                            EdgeInsets.all(4.0),
                                                        child: InkWell(
                                                          child: Column(
                                                            crossAxisAlignment:
                                                                CrossAxisAlignment
                                                                    .start,
                                                            children: [
                                                              Texts(projectViewModel
                                                                      .isArabic
                                                                  ? model
                                                                      .categoriseParent[
                                                                          index]
                                                                      .namen
                                                                  : model
                                                                      .categoriseParent[
                                                                          index]
                                                                      .name),
                                                              Divider(
                                                                thickness: 0.6,
                                                                color: Colors
                                                                    .black12,
                                                              )
                                                            ],
                                                          ),
                                                          onTap: () {
                                                            Navigator.push(
                                                              context,
                                                              FadePage(
                                                                  page:
                                                                      SubCategorisePage(
                                                                title: model
                                                                    .categoriseParent[
                                                                        index]
                                                                    .name,
                                                                id: model
                                                                    .categoriseParent[
                                                                        index]
                                                                    .id,
                                                                parentId: id,
                                                              )),
                                                            );
                                                          },
                                                        ),
                                                      ),
                                                    );
                                                  }),
                                            ),
                                          );
                                        },
                                      );
                                    },
                                  ),
                                ),
                                Icon(Icons.arrow_forward)
                              ],
                            ),
                            Divider(
                              thickness: 1.0,
                              color: Colors.grey.shade400,
                            ),
                          ],
                        ),

//Expanded widget heree if nassery
                      Padding(
                        padding: EdgeInsets.only(top: 35.0),
                        child: Container(
                          height: MediaQuery.of(context).size.height * 0.2,
                          child: Center(
                            child: ListView.builder(
                                scrollDirection: Axis.horizontal,
                                itemCount: model.categoriseParent.length > 8
                                    ? 8
                                    : model.categoriseParent.length,
                                itemBuilder: (BuildContext context, int index) {
                                  return Padding(
                                    padding:
                                        EdgeInsets.symmetric(horizontal: 8.0),
                                    child: InkWell(
                                      child: Column(
                                        crossAxisAlignment:
                                            CrossAxisAlignment.center,
                                        children: [
                                          Padding(
                                            padding: EdgeInsets.symmetric(
                                                horizontal: 13.0),
                                            child: Container(
                                              height: 60.0,
                                              width: 65.0,
                                              decoration: BoxDecoration(
                                                shape: BoxShape.circle,
                                                color: Colors.orange.shade200
                                                    .withOpacity(0.45),
                                              ),
                                              child: Center(
                                                child: Icon(
                                                  Icons.apps_sharp,
                                                  size: 32.0,
                                                ),
                                              ),
                                            ),
                                          ),
                                          Container(
                                            width: MediaQuery.of(context)
                                                    .size
                                                    .width *
                                                0.197,
                                            // height: MediaQuery.of(context)
                                            //         .size
                                            //         .height *
                                            //     0.08,
                                            child: Center(
                                              child: Texts(
                                                projectViewModel.isArabic
                                                    ? model
                                                        .categoriseParent[index]
                                                        .namen
                                                    : model
                                                        .categoriseParent[index]
                                                        .name,
                                                fontSize: 13.4,
                                                fontWeight: FontWeight.w600,
                                                maxLines: 3,
                                              ),
                                            ),
                                          ),
                                        ],
                                      ),
                                      onTap: () {
                                        Navigator.push(
                                          context,
                                          FadePage(
                                              page: SubCategorisePage(
                                            title: model
                                                .categoriseParent[index].name,
                                            id: model
                                                .categoriseParent[index].id,
                                            parentId: id,
                                          )),
                                        );
                                        print(id);
                                      },
                                    ),
                                  );
                                }),
                          ),
                        ),
                      ),

                      Divider(
                        thickness: 1.0,
                        color: Colors.grey.shade400,
                      ),
                      Padding(
                        padding: EdgeInsets.symmetric(horizontal: 8.0),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            InkWell(
                              child: Row(
                                children: [
                                  Icon(
                                    Icons.wrap_text,
                                  ),
                                  SizedBox(
                                    width: 10.0,
                                  ),
                                  Texts(
                                    'Refine',
                                    fontWeight: FontWeight.w600,
                                  ),
                                ],
                              ),
                              onTap: () {
                                showModalBottomSheet<void>(
                                  isScrollControlled: true,
                                  context: context,
                                  builder: (BuildContext context) {
                                    return DraggableScrollableSheet(
                                        initialChildSize: 0.95,
                                        maxChildSize: 0.95,
                                        minChildSize: 0.9,
                                        builder: (BuildContext context,
                                            ScrollController scrollController) {
                                          return SingleChildScrollView(
                                            controller: scrollController,
                                            child: Container(
                                              color: Colors.white,
                                              height: MediaQuery.of(context)
                                                      .size
                                                      .height *
                                                  1.95,
                                              child: Column(
                                                children: [
                                                  Padding(
                                                    padding:
                                                        EdgeInsets.all(8.0),
                                                    child: Row(
                                                      children: [
                                                        Icon(
                                                          Icons.wrap_text,
                                                        ),
                                                        SizedBox(
                                                          width: 10.0,
                                                        ),
                                                        Texts(
                                                          'Refine',
                                                          fontWeight:
                                                              FontWeight.w600,
                                                        ),
                                                        SizedBox(
                                                          width: 250.0,
                                                        ),
                                                        InkWell(
                                                          child: Texts(
                                                            'Close',
                                                            color: Colors.red,
                                                            fontWeight:
                                                                FontWeight.w600,
                                                            fontSize: 15.0,
                                                          ),
                                                          onTap: () {
                                                            Navigator.pop(
                                                                context);
                                                          },
                                                        ),
                                                      ],
                                                    ),
                                                  ),
                                                  Divider(
                                                    thickness: 1.0,
                                                    color: Colors.black12,
                                                  ),
                                                  Column(
                                                    children: [
                                                      ExpansionTile(
                                                        title:
                                                            Texts('Categorise'),
                                                        children: [
                                                          ProcedureListWidget(
                                                            model: model,
                                                            masterList: model
                                                                .categoriseParent,
                                                            removeHistory:
                                                                (item) {
                                                              setState(() {
                                                                entityList
                                                                    .remove(
                                                                        item);
                                                              });
                                                            },
                                                            addHistory:
                                                                (history) {
                                                              setState(() {
                                                                entityList.add(
                                                                    history);
                                                              });
                                                            },
                                                            addSelectedHistories:
                                                                () {
                                                              //TODO build your fun herr
                                                              // widget.addSelectedHistories();
                                                            },
                                                            isEntityListSelected:
                                                                (master) =>
                                                                    isEntityListSelected(
                                                                        master),
                                                          )
                                                        ],
                                                      ),
                                                      Divider(
                                                        thickness: 1.0,
                                                        color: Colors.black12,
                                                      ),
                                                      ExpansionTile(
                                                        title: Texts('Brands'),
                                                        children: [
                                                          ProcedureListWidget(
                                                            model: model,
                                                            masterList: model
                                                                .brandsList,
                                                            removeHistory:
                                                                (item) {
                                                              setState(() {
                                                                entityListBrands
                                                                    .remove(
                                                                        item);
                                                              });
                                                            },
                                                            addHistory:
                                                                (history) {
                                                              setState(() {
                                                                entityListBrands
                                                                    .add(
                                                                        history);
                                                              });
                                                            },
                                                            addSelectedHistories:
                                                                () {
                                                              //TODO build your fun herr
                                                              // widget.addSelectedHistories();
                                                            },
                                                            isEntityListSelected:
                                                                (master) =>
                                                                    isEntityListSelectedBrands(
                                                                        master),
                                                          )
                                                        ],
                                                      ),
                                                      Divider(
                                                        thickness: 1.0,
                                                        color: Colors.black12,
                                                      ),
                                                      ExpansionTile(
                                                        title: Texts('Price'),
                                                        children: [
                                                          Container(
                                                            color: Color(
                                                                0xffEEEEEE),
                                                            child: Row(
                                                              mainAxisAlignment:
                                                                  MainAxisAlignment
                                                                      .spaceAround,
                                                              children: [
                                                                Column(
                                                                  mainAxisAlignment:
                                                                      MainAxisAlignment
                                                                          .start,
                                                                  children: [
                                                                    Texts(
                                                                        'Min'),
                                                                    Container(
                                                                      color: Colors
                                                                          .white,
                                                                      width:
                                                                          200,
                                                                      height:
                                                                          40,
                                                                      child:
                                                                          TextFormField(
                                                                        decoration:
                                                                            InputDecoration(
                                                                          border:
                                                                              OutlineInputBorder(),
                                                                        ),
                                                                        controller:
                                                                            minField,
                                                                      ),
                                                                    ),
                                                                  ],
                                                                ),
                                                                Column(
                                                                  mainAxisAlignment:
                                                                      MainAxisAlignment
                                                                          .start,
                                                                  children: [
                                                                    Texts(
                                                                        'Max'),
                                                                    Container(
                                                                      color: Colors
                                                                          .white,
                                                                      width:
                                                                          200,
                                                                      height:
                                                                          40,
                                                                      child:
                                                                          TextFormField(
                                                                        decoration:
                                                                            InputDecoration(
                                                                          border:
                                                                              OutlineInputBorder(),
                                                                        ),
                                                                        controller:
                                                                            maxField,
                                                                      ),
                                                                    ),
                                                                  ],
                                                                ),
                                                              ],
                                                            ),
                                                          )
                                                        ],
                                                      ),
                                                      Divider(
                                                        thickness: 1.0,
                                                        color: Colors.black12,
                                                      ),
                                                      SizedBox(
                                                        height: MediaQuery.of(
                                                                    context)
                                                                .size
                                                                .height *
                                                            0.4,
                                                      ),
                                                      Padding(
                                                        padding:
                                                            EdgeInsets.all(8.0),
                                                        child: Row(
                                                          mainAxisAlignment:
                                                              MainAxisAlignment
                                                                  .spaceEvenly,
                                                          children: [
                                                            Container(
                                                              width: 100,
                                                              child: Button(
                                                                label: 'Reset',
                                                                backgroundColor:
                                                                    Colors.red,
                                                              ),
                                                            ),
                                                            SizedBox(
                                                              width: 30,
                                                            ),
                                                            Container(
                                                              width: 200,
                                                              child: Button(
                                                                onTap:
                                                                    () async {
                                                                  String
                                                                      categoriesId =
                                                                      "";
                                                                  for (CategoriseParentModel category
                                                                      in entityList) {
                                                                    if (categoriesId ==
                                                                        "") {
                                                                      categoriesId =
                                                                          category
                                                                              .id;
                                                                    } else {
                                                                      categoriesId =
                                                                          "$categoriesId,${category.id}";
                                                                    }
                                                                  }
                                                                  String
                                                                      brandIds =
                                                                      "";
                                                                  for (CategoriseParentModel brand
                                                                      in entityListBrands) {
                                                                    if (brandIds ==
                                                                        "") {
                                                                      brandIds =
                                                                          brand
                                                                              .id;
                                                                    } else {
                                                                      brandIds =
                                                                          "$brandIds,${brand.id}";
                                                                    }
                                                                  }

                                                                  GifLoaderDialogUtils
                                                                      .showMyDialog(
                                                                          context);

                                                                  await model.getFilteredProducts(
                                                                      min: minField
                                                                          .text
                                                                          .toString(),
                                                                      max: maxField
                                                                          .text
                                                                          .toString(),
                                                                      categoryId:
                                                                          categoriesId,
                                                                      brandId:
                                                                          brandIds);
                                                                  GifLoaderDialogUtils
                                                                      .hideDialog(
                                                                          context);

                                                                  Navigator.pop(
                                                                      context);
                                                                },
                                                                label: 'Apply',
                                                                backgroundColor:
                                                                    Colors
                                                                        .green,
                                                              ),
                                                            ),
                                                          ],
                                                        ),
                                                      ),
                                                    ],
                                                  ),
                                                ],
                                              ),
                                            ),
                                          );
                                        });
                                  },
                                );
                              },
                            ),
                            Row(
                              children: [
                                Container(
                                  height: 44.0,
                                  child: VerticalDivider(
                                    color: Colors.black45,
                                    thickness: 1.0,
//width: 0.3,
// indent: 0.0,
                                  ),
                                ),
                                Padding(
                                  padding: EdgeInsets.all(8.0),
                                  child: InkWell(
                                    child: styleIcon,
                                    onTap: () {
                                      setState(() {
                                        if (styleOne == true) {
                                          styleOne = false;
                                          styleTwo = true;
                                          styleIcon = Icon(
                                            Icons.auto_awesome_mosaic,
                                            color: Colors.blue,
                                            size: 29.0,
                                          );
                                        } else {
                                          styleOne = true;
                                          styleTwo = false;
                                          styleIcon = Icon(
                                            Icons.widgets_sharp,
                                            color: Colors.blue,
                                            size: 29.0,
                                          );
                                        }
                                      });
                                    },
                                  ),
                                ),
                              ],
                            ),
                          ],
                        ),
                      ),
                      Divider(
                        thickness: 1.0,
                        color: Colors.grey.shade400,
                      ),
                      model.parentProducts.isNotEmpty
                          ? styleOne == true
                              ? Container(
                                  height: model.parentProducts.length *
                                      MediaQuery.of(context).size.height *
                                      0.15,
                                  child: GridView.builder(
                                    physics: NeverScrollableScrollPhysics(),
                                    gridDelegate:
                                        SliverGridDelegateWithFixedCrossAxisCount(
                                      crossAxisCount: 2,
                                      crossAxisSpacing: 0.5,
                                      mainAxisSpacing: 2.0,
                                      childAspectRatio: 0.9,
                                    ),
                                    itemCount: model.parentProducts.length,
                                    itemBuilder:
                                        (BuildContext context, int index) {
                                      return NetworkBaseView(
                                          baseViewModel: model,
                                          child: InkWell(
                                            child: Card(
                                              color: model.parentProducts[index]
                                                          .discountName !=
                                                      null
                                                  ? Color(0xffFFFF00)
                                                  : Colors.white,
                                              elevation: 0,
                                              shape: Border(
                                                right: BorderSide(
                                                  color: Colors.grey.shade300,
                                                  width: 1,
                                                ),
                                                left: BorderSide(
                                                  color: Colors.grey.shade300,
                                                  width: 1,
                                                ),
                                                bottom: BorderSide(
                                                  color: Colors.grey.shade300,
                                                  width: 1,
                                                ),
                                                top: BorderSide(
                                                  color: Colors.grey.shade300,
                                                  width: 1,
                                                ),
                                              ),
                                              margin: EdgeInsets.symmetric(
                                                horizontal: 8,
                                                vertical: 4,
                                              ),
                                              child: Container(
                                                decoration: BoxDecoration(
                                                  borderRadius:
                                                      BorderRadius.only(
                                                    topLeft:
                                                        Radius.circular(110.0),
                                                  ),
                                                  color: Colors.white,
                                                ),
                                                padding: EdgeInsets.symmetric(
                                                    horizontal: 0),
                                                width: MediaQuery.of(context)
                                                        .size
                                                        .width /
                                                    3,
                                                child: Column(
                                                  crossAxisAlignment:
                                                      CrossAxisAlignment.start,
                                                  children: [
                                                    Stack(
                                                      children: [
                                                        if (model
                                                                .parentProducts[
                                                                    index]
                                                                .discountName !=
                                                            null)
                                                          RotatedBox(
                                                            quarterTurns: 4,
                                                            child: Container(
                                                              decoration:
                                                                  BoxDecoration(),
                                                              child: Padding(
                                                                padding:
                                                                    EdgeInsets
                                                                        .only(
                                                                  right: 5.0,
                                                                  top: 20.0,
                                                                  bottom: 5.0,
                                                                ),
                                                                child: Texts(
                                                                  'offer'
                                                                      .toUpperCase(),
                                                                  color: Colors
                                                                      .red,
                                                                  fontSize:
                                                                      13.0,
                                                                  fontWeight:
                                                                      FontWeight
                                                                          .w900,
                                                                ),
                                                              ),
                                                              transform: new Matrix4
                                                                      .rotationZ(
                                                                  5.837200),
                                                            ),
                                                          ),
                                                        Container(
                                                          margin: EdgeInsets
                                                              .fromLTRB(
                                                                  0, 16, 0, 0),
                                                          alignment:
                                                              Alignment.center,
                                                          child: Image.network(
                                                            model
                                                                    .parentProducts[
                                                                        index]
                                                                    .images
                                                                    .isNotEmpty
                                                                ? model
                                                                    .parentProducts[
                                                                        index]
                                                                    .images[0]
                                                                    .thumb
                                                                : 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/No_image_3x4.svg/1200px-No_image_3x4.svg.png',
                                                            fit: BoxFit.cover,
                                                            height: 80,
                                                          ),
                                                        ),
                                                        Container(
                                                          width: model
                                                                      .parentProducts[
                                                                          index]
                                                                      .rxMessage !=
                                                                  null
                                                              ? MediaQuery.of(
                                                                          context)
                                                                      .size
                                                                      .width /
                                                                  5
                                                              : 0,
                                                          padding:
                                                              EdgeInsets.all(4),
                                                          decoration:
                                                              BoxDecoration(
                                                            color: Color(
                                                                0xffb23838),
                                                            borderRadius:
                                                                BorderRadius.only(
                                                                    topLeft: Radius
                                                                        .circular(
                                                                            6)),
                                                          ),
                                                          child: Texts(
                                                            model
                                                                        .parentProducts[
                                                                            index]
                                                                        .rxMessage !=
                                                                    null
                                                                ? model
                                                                    .parentProducts[
                                                                        index]
                                                                    .rxMessage
                                                                : "",
                                                            color: Colors.white,
                                                            regular: true,
                                                            fontSize: 10,
                                                            fontWeight:
                                                                FontWeight.w400,
                                                          ),
                                                        ),
                                                      ],
                                                    ),
                                                    Container(
                                                      margin:
                                                          EdgeInsets.symmetric(
                                                        horizontal: 6,
                                                        vertical: 0,
                                                      ),
                                                      child: Column(
                                                        crossAxisAlignment:
                                                            CrossAxisAlignment
                                                                .start,
                                                        children: [
                                                          if (model
                                                                  .parentProducts[
                                                                      index]
                                                                  .discountName !=
                                                              null)
                                                            Container(
                                                              width: double
                                                                  .infinity,
                                                              height: 13.0,
                                                              decoration:
                                                                  BoxDecoration(
                                                                color: Color(
                                                                    0xff5AB145),
                                                              ),
                                                              child: Center(
                                                                child: Texts(
                                                                  model
                                                                      .parentProducts[
                                                                          index]
                                                                      .discountName,
                                                                  regular: true,
                                                                  color: Colors
                                                                      .white,
                                                                  fontSize:
                                                                      10.4,
                                                                ),
                                                              ),
                                                            ),
                                                          Texts(
                                                            projectViewModel
                                                                    .isArabic
                                                                ? model
                                                                    .parentProducts[
                                                                        index]
                                                                    .namen
                                                                : model
                                                                    .parentProducts[
                                                                        index]
                                                                    .name,
                                                            regular: true,
                                                            fontSize: 12,
                                                            fontWeight:
                                                                FontWeight.w700,
                                                          ),
                                                          Padding(
                                                            padding:
                                                                const EdgeInsets
                                                                        .only(
                                                                    top: 4,
                                                                    bottom: 4),
                                                            child: Texts(
                                                              "SAR ${model.parentProducts[index].price}",
                                                              bold: true,
                                                              fontSize: 14,
                                                            ),
                                                          ),
                                                          Row(
                                                            children: [
                                                              StarRating(
                                                                  totalAverage: model
                                                                              .parentProducts[
                                                                                  index]
                                                                              .approvedRatingSum >
                                                                          0
                                                                      ? (model.parentProducts[index].approvedRatingSum.toDouble() /
                                                                              model.parentProducts[index].approvedRatingSum
                                                                                  .toDouble())
                                                                          .toDouble()
                                                                      : 0,
                                                                  forceStars:
                                                                      true),
                                                              Texts(
                                                                "(${model.parentProducts[index].approvedTotalReviews})",
                                                                regular: true,
                                                                fontSize: 10,
                                                                fontWeight:
                                                                    FontWeight
                                                                        .w400,
                                                              )
                                                            ],
                                                          ),
                                                        ],
                                                      ),
                                                    ),
                                                  ],
                                                ),
                                              ),
                                            ),
                                            onTap: () => {
                                              Navigator.push(
                                                  context,
                                                  FadePage(
                                                    page: ProductDetailPage(
                                                        model.parentProducts[
                                                            index]),
                                                  )),
                                            },
                                          ));
                                    },
                                  ),
                                )
                              : Container(
                                  height: model.parentProducts.length *
                                      MediaQuery.of(context).size.height *
                                      0.122,
                                  child: ListView.builder(
                                      physics: NeverScrollableScrollPhysics(),
                                      itemCount: model.parentProducts.length,
                                      itemBuilder:
                                          (BuildContext context, int index) {
                                        return InkWell(
                                          child: Card(
                                            child: Row(
                                              children: [
                                                Stack(
                                                  children: [
                                                    Column(
                                                      children: [
                                                        Container(
                                                          decoration:
                                                              BoxDecoration(),
                                                          child: Padding(
                                                            padding:
                                                                EdgeInsets.only(
                                                              left: 9.0,
                                                              top: 8.0,
                                                              right: 10.0,
                                                            ),
                                                          ),
                                                        ),
                                                        Container(
                                                          margin: EdgeInsets
                                                              .fromLTRB(
                                                                  0, 0, 0, 0),
                                                          alignment:
                                                              Alignment.center,
                                                          child: Image.network(
                                                            model
                                                                    .parentProducts[
                                                                        index]
                                                                    .images
                                                                    .isNotEmpty
                                                                ? model
                                                                    .parentProducts[
                                                                        index]
                                                                    .images[0]
                                                                    .thumb
                                                                : 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/No_image_3x4.svg/1200px-No_image_3x4.svg.png',
                                                            fit: BoxFit.contain,
                                                            height: 80,
                                                          ),
                                                        ),
                                                      ],
                                                    ),
                                                    Column(
                                                      children: [
                                                        Container(
                                                          width: model
                                                                      .parentProducts[
                                                                          index]
                                                                      .rxMessage !=
                                                                  null
                                                              ? MediaQuery.of(
                                                                          context)
                                                                      .size
                                                                      .width /
                                                                  5
                                                              : 0,
                                                          padding:
                                                              EdgeInsets.all(4),
                                                          decoration:
                                                              BoxDecoration(
                                                            color: Color(
                                                                0xffb23838),
                                                            borderRadius:
                                                                BorderRadius.only(
                                                                    topLeft: Radius
                                                                        .circular(
                                                                            6)),
                                                          ),
                                                          child: Texts(
                                                            model
                                                                        .parentProducts[
                                                                            index]
                                                                        .rxMessage !=
                                                                    null
                                                                ? model
                                                                    .parentProducts[
                                                                        index]
                                                                    .rxMessage
                                                                : "",
                                                            color: Colors.white,
                                                            regular: true,
                                                            fontSize: 10,
                                                            fontWeight:
                                                                FontWeight.w400,
                                                          ),
                                                        ),
                                                      ],
                                                    ),
                                                  ],
                                                ),
                                                Container(
                                                  margin: EdgeInsets.symmetric(
                                                    horizontal: 6,
                                                    vertical: 0,
                                                  ),
                                                  child: Column(
                                                    mainAxisAlignment:
                                                        MainAxisAlignment
                                                            .spaceAround,
                                                    crossAxisAlignment:
                                                        CrossAxisAlignment
                                                            .start,
                                                    children: [
                                                      SizedBox(
                                                        height: 4.0,
                                                      ),
                                                      Container(
                                                        width: MediaQuery.of(
                                                                    context)
                                                                .size
                                                                .width *
                                                            0.65,
                                                        child: Texts(
                                                          projectViewModel
                                                                  .isArabic
                                                              ? model
                                                                  .parentProducts[
                                                                      index]
                                                                  .namen
                                                              : model
                                                                  .parentProducts[
                                                                      index]
                                                                  .name,
                                                          regular: true,
                                                          fontSize: 13.2,
                                                          fontWeight:
                                                              FontWeight.w500,
                                                          maxLines: 5,
                                                        ),
                                                      ),
                                                      SizedBox(
                                                        height: 8.0,
                                                      ),
                                                      Padding(
                                                        padding:
                                                            const EdgeInsets
                                                                    .only(
                                                                top: 4,
                                                                bottom: 4),
                                                        child: Texts(
                                                          "SAR ${model.parentProducts[index].price}",
                                                          bold: true,
                                                          fontSize: 14,
                                                        ),
                                                      ),
                                                      Row(
                                                        children: [
                                                          StarRating(
                                                              totalAverage: model
                                                                          .parentProducts[
                                                                              index]
                                                                          .approvedRatingSum >
                                                                      0
                                                                  ? (model.parentProducts[index].approvedRatingSum
                                                                              .toDouble() /
                                                                          model
                                                                              .parentProducts[index]
                                                                              .approvedRatingSum
                                                                              .toDouble())
                                                                      .toDouble()
                                                                  : 0,
                                                              forceStars: true),
                                                          Texts(
                                                            "(${model.parentProducts[index].approvedTotalReviews})",
                                                            regular: true,
                                                            fontSize: 10,
                                                            fontWeight:
                                                                FontWeight.w400,
                                                          )
                                                        ],
                                                      ),
                                                    ],
                                                  ),
                                                ),
                                              ],
                                            ),
                                          ),
                                          onTap: () => {
                                            Navigator.push(
                                                context,
                                                FadePage(
                                                  page: ProductDetailPage(model
                                                      .parentProducts[index]),
                                                )),
                                          },
                                        );
                                      }),
                                )
                          : Padding(
                              padding: const EdgeInsets.all(12.0),
                              child: Container(
                                child: Center(
                                  child: Column(
                                    mainAxisAlignment: MainAxisAlignment.center,
                                    children: [
                                      Padding(
                                        padding: const EdgeInsets.all(8.0),
                                        child: Image.asset(
                                          'assets/images/new-design/empty_box.png',
                                          width: 100,
                                          height: 100,
                                          fit: BoxFit.cover,
                                        ),
                                      ),
                                      Padding(
                                        padding: const EdgeInsets.all(8.0),
                                        child: Text(
                                          'There is no data',
                                          style: TextStyle(fontSize: 30),
                                        ),
                                      )
                                    ],
                                  ),
                                ),
                              ),
                            )
                    ],
                  ),
                ),
              ),
            ));
  }

  bool isEntityListSelected(CategoriseParentModel masterKey) {
    Iterable<CategoriseParentModel> history =
        entityList.where((element) => masterKey.id == element.id);
    if (history.length > 0) {
      return true;
    }
    return false;
  }

  bool isEntityListSelectedBrands(CategoriseParentModel masterKey) {
    Iterable<CategoriseParentModel> history =
        entityListBrands.where((element) => masterKey.id == element.id);
    if (history.length > 0) {
      return true;
    }
    return false;
  }
}
