import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/landing/home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/offers_categorise_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lakum-main-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/BannerPager.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductTileItem.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/manufacturerItem.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.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:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:rating_bar/rating_bar.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/product-brands.dart';

import 'lacum-activitaion-vida-page.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';

class PharmacyPage extends StatelessWidget {
  @override
  void initState() {
//    print("model prescription " + model.prescriptionsList.length);
//    cancelOrderDetail(order)
  }

  @override
  Widget build(BuildContext context) {
    return BaseView<PharmacyModuleViewModel>(
      onModelReady: (model) => model.getPharmacyHomeData(),
      allowAny: true,
      builder: (_, model, wi) => AppScaffold(
        title: "",
        isShowAppBar: false,
        isShowDecPage: false,
        baseViewModel: model,
        backgroundColor: Colors.white,
        body: Container(
          width: double.infinity,
          child: SingleChildScrollView(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
               BannerPager(model),
              // GridViewButtons(model),
                Container(
                  margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Texts(
                        TranslationBase.of(context).myPrescription,
                        bold: true,
                      ),
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        hasBorder: true,
                        borderColor: Colors.green,
                        textColor: Colors.green,
                        vPadding: 6,
                        hPadding: 4,
                        handler: () {
                          Navigator.push(
                              context,
                              MaterialPageRoute(
                                  builder: (context) =>
                                      HomePrescriptionsPage()));
                        },
                      ),
                    ],
                  ),
                ),

                Container(
                  padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 24.0),
                  height: MediaQuery.of(context).size.height * 0.30,
//                    width: 200.0,
//                    height: MediaQuery.of(context).size.height / 4 + 20,
                  margin: EdgeInsets.only(left: 10),
                  child: BaseView<PharmacyModuleViewModel>(
                   onModelReady: (model) => model.getPrescription(),
                   builder: (_, model, wi) => model.prescriptionsList.length != 0
//                   model.getPrescription();
                        ? ListView.builder(
                          scrollDirection: Axis.horizontal,
                          shrinkWrap: true,
                          physics: ScrollPhysics(),
  //                            physics: NeverScrollableScrollPhysics(),
  //                        itemCount: 4,
                          itemCount: model.prescriptionsList.length,
                          itemBuilder: (context, index) {
                          return Container(
//                                  width: 160.0,
                            height: MediaQuery.of(context).size.height * 0.6,
                            padding: EdgeInsets.only(bottom: 5.0, left: 5.0),
                            margin: EdgeInsets.only(right: 10.0),
                            decoration: BoxDecoration(
                                border: Border.all(
                                  color: Colors.grey,
                                  style: BorderStyle.solid,
                                  width: 1.0,
                                ),
                                color: Colors.white,
                                borderRadius: BorderRadius.circular(10.0)),
                            child: Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: <Widget>[
                                  Row(
                                    children: <Widget>[
                                      Column(children: [
                                        Container(
                                          padding: EdgeInsets.only(
                                            top: 10.0,
                                            left: 10.0,
                                            right: 3.0,
                                            bottom: 15.0,
                                          ),
                                          child: Image.network(
                                            model.prescriptionsList[index]
                                                .doctorImageURL,
                                            width: 60,
                                            height: 60,
                                          ),
                                        ),
                                      ]),
                                      Column(
//                                           crossAxisAlignment: CrossAxisAlignment.center,
                                        children: [
                                          Container(
                                              margin: EdgeInsets.only(left: 1),
                                              padding: EdgeInsets.only(
                                                  left: 15.0, right: 15.0),
                                              decoration: BoxDecoration(
                                                  border: Border.all(
                                                    color: Colors.green,
                                                    style: BorderStyle.solid,
                                                    width: 4.0,
                                                  ),
                                                  color: Colors.green,
                                                  borderRadius:
                                                      BorderRadius.circular(
                                                          30.0)),
                                              child: Text(
                                                model.prescriptionsList[index]
                                                    .isInOutPatientDescription
                                                    .toString(),
                                                style: TextStyle(
                                                  color: Colors.white,
                                                  fontSize: 15.0,
//                                               fontWeight: FontWeight.bold,
                                                ),
                                              )),
                                          Row(children: <Widget>[
                                            Image.asset(
                                              'assets/images/Icon-awesome-calendar.png',
                                              width: 30,
                                              height: 30,
                                            ),
                                            Text(
                                              model.prescriptionsList[index]
                                                  .appointmentDate
                                                  .toString(),
                                              style: TextStyle(
                                                color: Colors.black,
                                                fontSize: 15.0,
//                                                     fontWeight: FontWeight.bold,
                                              ),
                                            )
                                          ]),
                                        ],
                                      ),
                                    ],
                                  ),
                                  Row(
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: <Widget>[
                                      Container(
                                        margin: EdgeInsets.only(left: 5),
                                        child: Row(children: <Widget>[
                                          Text(
                                            model.prescriptionsList[index]
                                                .doctorTitle
                                                .toString(),
                                            style: TextStyle(
                                              color: Colors.black,
                                              fontSize: 15.0,
                                              fontWeight: FontWeight.bold,
                                            ),
                                          ),
                                          Text(
                                            model.prescriptionsList[index]
                                                .doctorName
                                                .toString(),
                                            style: TextStyle(
                                              color: Colors.black,
                                              fontSize: 15.0,
                                              fontWeight: FontWeight.bold,
                                            ),
                                          ),
                                        ]),
                                      ),
                                    ],
                                  ),
                                  Row(
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: <Widget>[
                                      Container(
                                        margin: EdgeInsets.only(left: 5),
                                        child: Text(
                                          model.prescriptionsList[index]
                                              .clinicDescription
                                              .toString(),
                                          style: TextStyle(
                                            color: Colors.green,
                                            fontSize: 15.0,
//                                             fontWeight: FontWeight.bold,
                                          ),
                                        ),
                                      ),
                                    ],
                                  ),
                                  Row(
                                      crossAxisAlignment:
                                          CrossAxisAlignment.start,
                                      children: <Widget>[
                                        Container(
                                          margin: EdgeInsets.only(left: 5),
                                          child: Align(
                                            alignment: Alignment.topLeft,
                                            child: RatingBar.readOnly(
//                                               initialRating: productRate,
                                              size: 15.0,
                                              filledColor: Colors.yellow[700],
                                              emptyColor: Colors.grey[500],
                                              isHalfAllowed: true,
                                              halfFilledIcon: Icons.star_half,
                                              filledIcon: Icons.star,
                                              emptyIcon: Icons.star,
                                            ),
                                          ),
                                        )
                                      ]),
                                ]),
                          );
                        })
                  :    Container(),
                   ),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Texts(
                        TranslationBase.of(context).recommended,
                        bold: true,
                      ),
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        hasBorder: true,
                        borderColor: Colors.green,
                        textColor: Colors.green,
                        vPadding: 6,
                        hPadding: 4,
                        handler: () {},
                      ),
                    ],
                  ),
                ),
                Container(
                  height: MediaQuery.of(context).size.height / 4 + 20,
                  child: ListView.builder(
                    itemBuilder: (ctx, i) =>
                        ProductTileItem(model.bestSellerProduct[i]),
                    scrollDirection: Axis.horizontal,
                    itemCount: model.bestSellerProduct.length,
                  ),
                ),

                Container(
                  margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Texts(
                        TranslationBase.of(context).shopByBrands,
                        bold: true,
                      ),
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        hasBorder: true,
                        vPadding: 6,
                        hPadding: 4,
                        borderColor: Colors.green,
                        textColor: Colors.green,
                        handler: () => {
                          Navigator.push(
                              context, FadePage(page: ProductBrandsPage())),
                        },
                      ),
                    ],
                  ),
                ),
                Container(
                  height: 60,
                  child: ListView.builder(
                    itemBuilder: (ctx, i) =>
                        ManufacturerItem(model.manufacturerList[i]),
                    scrollDirection: Axis.horizontal,
                    itemCount: model.manufacturerList.length,
                  ),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Texts(
                        TranslationBase.of(context).recentlyViewed,
                        bold: true,
                      ),
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        hasBorder: true,
                        vPadding: 6,
                        hPadding: 4,
                        borderColor: Colors.green,
                        textColor: Colors.green,
                        handler: () {},
                      ),
                    ],
                  ),
                ),
                Container(
                  height: model.lastVisitedProducts.length > 0
                      ? MediaQuery.of(context).size.height / 4 + 20
                      : 0,
                  child: ListView.builder(
                    itemBuilder: (ctx, i) =>
                        ProductTileItem(model.lastVisitedProducts[i]),
                    scrollDirection: Axis.horizontal,
                    itemCount: model.lastVisitedProducts.length,
                  ),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Texts(
                        TranslationBase.of(context).bestSellers,
                        bold: true,
                      ),
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        hasBorder: true,
                        borderColor: Colors.green,
                        textColor: Colors.green,
                        vPadding: 6,
                        hPadding: 4,
                        handler: () => {
                          Navigator.push(
                              context, FadePage(page: ProductBrandsPage())),
                        },
                      ),
                    ],
                  ),
                ),
                Container(
                  height: MediaQuery.of(context).size.height / 4 + 20,
                  child: ListView.builder(
                    itemBuilder: (ctx, i) =>
                        ProductTileItem(model.bestSellerProduct[i]),
                    scrollDirection: Axis.horizontal,
                    itemCount: model.bestSellerProduct.length,
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

class GridViewButtons extends StatelessWidget {
  final PharmacyModuleViewModel model;

  GridViewButtons(this.model);

  @override
  Widget build(BuildContext context) {
    final gridHeight = (MediaQuery.of(context).size.width * 0.3) * 1.8;
    return Container(
      child: SizedBox(
        height: gridHeight,
        child: GridView.count(
          childAspectRatio: 2.2,
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
          controller: new ScrollController(keepScrollOffset: false),
          shrinkWrap: true,
          padding: const EdgeInsets.all(4.0),
          crossAxisCount: 2,
          children: [
            DashboardItem(
              imageName: 'pharmacy_module/bg_1.png',
              hasColorFilter: false,
              opacity: 0.8,
              child: GridViewCard(
                  TranslationBase.of(context).offersAndPromotions,
                  'assets/images/pharmacy_module/offer_icon.png', () {
                Navigator.push(context, FadePage(page: OffersCategorisePage()));
              }),
            ),
            DashboardItem(
              imageName: 'pharmacy_module/bg_2.png',
              opacity: 0,
              hasColorFilter: false,
              child: GridViewCard(TranslationBase.of(context).medicationRefill,
                  'assets/images/pharmacy_module/medication_icon.png', () {
                model.checkUserIsActivated().then((isActivated) {
                  if (isActivated) {
                    Navigator.push(context, FadePage(page: LakumMainPage()));
                  } else {
                    Navigator.push(
                        context, FadePage(page: LakumActivationVidaPage()));
                  }
                });
              }),
            ),
            DashboardItem(
              imageName: 'pharmacy_module/bg_3.png',
              opacity: 0,
              hasColorFilter: false,
              child: GridViewCard(TranslationBase.of(context).myPrescriptions,
                  'assets/images/pharmacy_module/prescription_icon.png', () {
                Navigator.push(
                    context, FadePage(page: PharmacyAddressesPage()));
              }),
            ),
            DashboardItem(
              imageName: 'pharmacy_module/bg_4.png',
              opacity: 0,
              hasColorFilter: false,
              child: GridViewCard(
                  TranslationBase.of(context).searchAndScanMedication,
                  'assets/images/pharmacy_module/search_scan_icon.png',
                  () {}),
            ),
          ],
        ),
      ),
    );
  }
}

class GridViewCard extends StatelessWidget {
  final String text;
  final String cardImage;
  final Function handler;

  GridViewCard(this.text, this.cardImage, this.handler);

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(4.0),
      child: Container(
        child: Row(
          children: [
            Expanded(
              flex: 2,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Expanded(
                    flex: 2,
                    child: Padding(
                      padding: const EdgeInsets.all(6),
                      child: Texts(
                        text,
                        color: Colors.white,
                        fontSize: SizeConfig.textMultiplier * 1.5,
                      ),
                    ),
                  ),
                  Row(
                    children: [
                      BorderedButton(
                        TranslationBase.of(context).viewAll,
                        handler: handler,
                        tPadding: 0,
                        bPadding: 0,
                      ),
                      Expanded(child: Container()),
                    ],
                  ),
                ],
              ),
            ),
            Expanded(
              child: Align(
                alignment: Alignment.centerRight,
                child: Image.asset(
                  cardImage,
                  fit: BoxFit.cover,
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
