import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_progress_hud/flutter_progress_hud.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:intl/intl.dart';
import 'package:unit2/bloc/offline/offline_passo/land/other_improvements/other_improvements_bloc.dart';
import 'package:unit2/screens/offline/passo/land/edit/AddOtherImprovementModal.dart';

import '../../../../../model/passo/other_improvements.dart';
import '../../../../../utils/alerts.dart';
import '../../../../../utils/text_container.dart';
import '../../../../../widgets/error_state.dart';
import '../../../../../widgets/passo/custom_button.dart';

class OtherImprovementEditPageOffline extends StatefulWidget {
  Function PrevBtn;
  Function NextBtn;
  final int faasId;
  OtherImprovementEditPageOffline(this.PrevBtn, this.NextBtn, this.faasId);
  @override
  _OtherImprovementEditPageOffline createState() =>
      _OtherImprovementEditPageOffline();
}

class _OtherImprovementEditPageOffline
    extends State<OtherImprovementEditPageOffline> {
  //  double _totalMarketValue(items) {
  //   double total = 0;
  //   items.forEach((row) {
  //     total += double.parse(row);
  //   });
  //   return total;
  // }

  void deleteItem(int itemId) {
    context
        .read<OtherImprovementsBloc>()
        .add(DeleteOtherImprovements(id: itemId));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ProgressHUD(
        padding: const EdgeInsets.all(24),
        backgroundColor: Colors.black87,
        indicatorWidget: const SpinKitFadingCircle(color: Colors.white),
        child: BlocConsumer<OtherImprovementsBloc, OtherImprovementsState>(
            listener: (context, state) {
          // if (state is OtherImprovementLoading) {
          //   final progress = ProgressHUD.of(context);
          //   progress!.showWithText("Please wait...");
          // }
          // if (state is OtherImprovementLoaded) {
          //   final progress = ProgressHUD.of(context);
          //   progress?.dismiss();
          // }
          // if (state is OtherImprovementErrorState) {
          //   final progress = ProgressHUD.of(context);
          //   progress?.dismiss();
          // }
        }, builder: (context, state) {
          final state = context.watch<OtherImprovementsBloc>().state;
          if (state is OtherImprovementsLoaded) {
            return Column(
              children: [
                Expanded(
                    child: SingleChildScrollView(
                  child: Padding(
                    padding: const EdgeInsets.all(15.0),
                    child: Column(
                      children: [
                        Container(
                          margin: const EdgeInsets.only(
                              left: 0, top: 20, right: 0, bottom: 10),
                          child: const Text('OTHER IMPROVEMENTS',
                              style: TextStyle(
                                  fontWeight: FontWeight.bold, fontSize: 18),
                              textAlign: TextAlign.left),
                        ),
                        Align(
                          alignment: Alignment.topRight,
                          child: ElevatedButton(
                            style: ElevatedButton.styleFrom(
                              backgroundColor: Colors.red,
                            ),
                            onPressed: () {
                              context
                                  .read<OtherImprovementsBloc>()
                                  .add(ShowOtherImprovement());
                            },
                            child: Row(
                              mainAxisSize: MainAxisSize.min,
                              children: [
                                const Text('ADD ITEM'), // <-- Text
                                const SizedBox(
                                  width: 5,
                                ),
                                const Icon(
                                  // <-- Icon
                                  Icons.add,
                                  size: 24.0,
                                ),
                              ],
                            ),
                          ),
                        ),
                        SingleChildScrollView(
                            scrollDirection: Axis.horizontal,
                            child: DataTable(
                                // ignore: prefer_const_literals_to_create_immutables
                                columns: [
                                  const DataColumn(
                                    label: Text('Kinds of Tress'),
                                  ),
                                  const DataColumn(
                                    label: Text('Sub-Class / Age'),
                                  ),
                                  const DataColumn(
                                    label: Text('Type of Tree'),
                                  ),
                                  const DataColumn(
                                    label: Text('No.'),
                                  ),
                                  const DataColumn(
                                    label: Text('No. of Productive'),
                                  ),
                                  const DataColumn(
                                    label: Text('No. of Non-Productive'),
                                  ),
                                  const DataColumn(
                                    label: Text('Unit Value'),
                                  ),
                                  const DataColumn(
                                    label: Text('Base Market Value'),
                                  ),
                                  const DataColumn(
                                    label: Text('Action'),
                                  )
                                ],
                                rows: state.otherImprovements.map((dataRow) {
                                  return DataRow(
                                    cells: [
                                      DataCell(
                                          Text(dataRow.kindsOfTrees ?? "")),
                                      DataCell(Text(dataRow.subclassAge ?? "")),
                                      DataCell(Text(dataRow.fruitBearing == '1'
                                          ? "Fruit Bearing"
                                          : "Non-Fruit Bearing")),
                                      DataCell(
                                          Text(dataRow.quantity.toString())),
                                      DataCell(Text(
                                          dataRow.noOfProductive.toString())),
                                      DataCell(Text(dataRow.noOfNonproductive
                                          .toString()!)),
                                      DataCell(Text(NumberFormat.currency(
                                        locale: 'en-PH',
                                        symbol: "₱",
                                      )
                                          .format(
                                              double.parse(dataRow.unitValue!))
                                          .toString())),
                                      DataCell(Text(NumberFormat.currency(
                                        locale: 'en-PH',
                                        symbol: "₱",
                                      )
                                          .format(double.parse(
                                              dataRow.baseMarketval!))
                                          .toString())),
                                      DataCell(Row(
                                        children: [
                                          InkWell(
                                            child: Container(
                                              height: 30,
                                              width: 30,
                                              decoration: BoxDecoration(
                                                shape: BoxShape.circle,
                                                color: Colors.red,
                                              ),
                                              child: Icon(
                                                Icons.delete,
                                                color: Colors.white,
                                                size: 20.0,
                                              ),
                                            ),
                                            onTap: () {
                                              confirmAlertWithCancel(
                                                  context,
                                                  () => deleteItem(dataRow.id!),
                                                  () => null,
                                                  'Delete Item?',
                                                  "Are you sure you want to delete this item?");
                                            },
                                          ),
                                        ],
                                      ))
                                    ],
                                  );
                                }).toList()))
                      ],
                    ),
                  ),
                )),
                // Padding(
                //   padding: const EdgeInsets.only(left: 20.0, right: 20.0),
                //   child: Row(
                //     mainAxisAlignment: MainAxisAlignment.spaceBetween,
                //     children: [
                //       Text(
                //         'Total',
                //         style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15),
                //       ),
                //       Text(
                //         NumberFormat.currency(locale: 'en-PH', symbol: "₱")
                //             .format('1.0'),
                //         style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15),
                //       )
                //     ],
                //   ),
                // ),
                Padding(
                  padding: const EdgeInsets.all(15.0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: [
                      CustomButton(
                        icon: const Icon(Icons.chevron_left_rounded,
                            color: Colors.white),
                        onPressed: () {
                          {
                            widget.PrevBtn();
                          }
                          ;
                        },
                      ),
                      CustomButton(
                        icon: const Icon(Icons.chevron_right_rounded,
                            color: Colors.white),
                        onPressed: () {
                          {
                            widget.NextBtn();
                          }
                          ;
                        },
                      )
                    ],
                  ),
                ),
              ],
            );
          }
          if (state is OtherImprovementsDeletedState) {
            if (state.success) {
              WidgetsBinding.instance.addPostFrameCallback((_) {
                successAlert(context, "Deletion Successful",
                    "Extra item has been deleted successfully", () {
                  Navigator.of(context).pop();
                  context
                      .read<OtherImprovementsBloc>()
                      .add(const LoadOtherImprovements());
                });
              });
            }
          }
          if (state is ShowOtherImprovementScreen) {
            return ConstrainedBox(
              constraints: BoxConstraints(maxHeight: 1000.0),
              child: AlertDialog(
                insetPadding: EdgeInsets.symmetric(
                  horizontal: 20.0,
                  vertical: 10.0,
                ),
                title: Text(
                  'ADD OTHER IMPROVEMENTS',
                  textAlign: TextAlign.center,
                ),
                content: Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Align(
                      alignment: Alignment.topCenter,
                      child: Container(
                        child: ConstrainedBox(
                          constraints: BoxConstraints(maxHeight: 500),
                          child: Container(
                            child: AddOtherImprovementModalEditOffline(
                                widget.faasId),
                          ),
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            );
          }
          if (state is OtherImprovementsErrorState) {
            return SomethingWentWrong(
              message: onError,
              onpressed: () {
                context.read<OtherImprovementsBloc>().add(
                    LoadOtherImprovementsEdit(
                        otherImprovements: const <OtherImprovements>[],
                        id: widget.faasId));
              },
            );
          }
          return Container();
        }),
      ),
    );
  }
}
