import 'dart:io';

import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/patient_er_insert_pres_order_request_model.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:provider/provider.dart';

import 'new_Home_health_care_step_one_page.dart';

class NewHomeHealthCarePage extends StatefulWidget {
  NewHomeHealthCarePage({this.model});

  final HomeHealthCareViewModel model;

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

class _NewHomeHealthCarePageState extends State<NewHomeHealthCarePage> with TickerProviderStateMixin {
  PageController _controller;
  int _currentIndex = 1;
  double _latitude;
  double _longitude;

  PatientERInsertPresOrderRequestModel patientERInsertPresOrderRequestModel = new PatientERInsertPresOrderRequestModel();

  @override
  void initState() {
    super.initState();
    _controller = new PageController();
    // _getCurrentLocation();
  }

  _getCurrentLocation() async {
    if (await PermissionService.isLocationEnabled()) {
      Geolocator.getLastKnownPosition().then((value) {
        _latitude = value.latitude;
        _longitude = value.longitude;
      }).catchError((e) {
        _longitude = 0;
        _latitude = 0;
      });
    } else {
      if (Platform.isAndroid) {
        Utils.showPermissionConsentDialog(context, TranslationBase.of(context).locationPermissionDialog, () {
          Geolocator.getLastKnownPosition().then((value) {
            _latitude = value.latitude;
            _longitude = value.longitude;
          }).catchError((e) {
            _longitude = 0;
            _latitude = 0;
          });
        });
      } else {
        Geolocator.getLastKnownPosition().then((value) {
          _latitude = value.latitude;
          _longitude = value.longitude;
        }).catchError((e) {
          _longitude = 0;
          _latitude = 0;
        });
      }
    }

    // await Geolocator.getLastKnownPosition().then((value) {
    //   _latitude = value.latitude;
    //   _longitude = value.longitude;
    // }).catchError((e) {
    //   _longitude = 0;
    //   _latitude = 0;
    // });
  }

  @override
  void dispose() {
    super.dispose();
  }

  _changeCurrentTab(int tab) {
    setState(() {
      _currentIndex = tab;
    });
    _controller.animateToPage(tab, duration: Duration(milliseconds: 800), curve: Curves.easeOutQuart);
  }

  @override
  Widget build(BuildContext context) {
    void showConfirmMessage(HomeHealthCareViewModel model, GetCMCAllOrdersResponseModel order) {
      showDialog(
          context: context,
          builder: (cxt) => ConfirmWithMessageDialog(
                message: TranslationBase.of(context).cancelOrderMsg,
                onTap: () async {
                  model.setState(ViewState.Busy);
                  UpdatePresOrderRequestModel updatePresOrderRequestModel = UpdatePresOrderRequestModel(presOrderID: order.iD, rejectionReason: "", presOrderStatus: 4, editedBy: 3);

                  await model.updateHHCPresOrder(updatePresOrderRequestModel);
                  if (model.state == ViewState.ErrorLocal) {
                    Utils.showErrorToast(model.error);
                  } else {
                    AppToast.showSuccessToast(message: TranslationBase.of(context).processDoneSuccessfully);
                    await model.getHHCAllPresOrders();
                    // await model.getHHCAllServices();
                  }
                },
              ));
    }

    ProjectViewModel projectViewModel = Provider.of(context);

    return PageView(
      physics: NeverScrollableScrollPhysics(),
      controller: _controller,
      onPageChanged: (index) {
        setState(() {
          _currentIndex = index;
        });
      },
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        widget.model.pendingOrder != null
            ? ListView(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15), children: [
                (Container(
                  decoration: BoxDecoration(
                    color: Color(0xffCC9B14),
                    borderRadius: BorderRadius.all(
                      Radius.circular(10.0),
                    ),
                    boxShadow: [
                      BoxShadow(
                        color: Color(0xff000000).withOpacity(.05),
                        blurRadius: 27,
                        offset: Offset(0, -3),
                      ),
                    ],
                  ),
                  child: Container(
                    //  decoration: containerColorRadiusLeft(Colors.white, 12),
                    margin: EdgeInsets.only(left: projectViewModel.isArabic ? 0 : 6, right: projectViewModel.isArabic ? 6 : 0),
                    padding: EdgeInsets.symmetric(vertical: 14, horizontal: 12),
                    decoration: BoxDecoration(
                      color: Colors.white,
                      border: Border.all(color: Colors.white, width: 1),
                      borderRadius: BorderRadius.only(
                        bottomRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
                        topRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
                        bottomLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
                        topLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
                      ),
                    ),
                    // clipBehavior: Clip.antiAlias,
                    child: Row(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Expanded(
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.start,
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              Text(
                                widget.model.pendingOrder.statusText,
                                style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffCC9B14), letterSpacing: -0.4, height: 16 / 10),
                              ),
                              SizedBox(height: 6),
                              Text(
                                '${TranslationBase.of(context).requestID}: ${widget.model.pendingOrder.iD.toString()}',
                                style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
                              ),
                              Row(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  Text(
                                    TranslationBase.of(context).hospital + ": ",
                                    style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
                                  ),
                                  Expanded(
                                    child: Text(
                                      widget.model.pendingOrder.nearestProjectName.toString(),
                                      style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56),
                                    ),
                                  ),
                                ],
                              )
                            ],
                          ),
                        ),
                        Column(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          crossAxisAlignment: CrossAxisAlignment.end,
                          children: [
                            Text(
                              DateUtil.getDayMonthYearDateFormatted(DateTime.tryParse(widget.model.pendingOrder.created)),
                              style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
                            ),
                            SizedBox(height: 12),
                            if (widget.model.pendingOrder.statusId == 1 || widget.model.pendingOrder.statusId == 2)
                              InkWell(
                                onTap: () {
                                  showConfirmMessage(widget.model, widget.model.pendingOrder);
                                },
                                child: Container(
                                  padding: EdgeInsets.symmetric(vertical: 8, horizontal: 14),
                                  decoration: BoxDecoration(
                                    color: Color(0xffD02127),
                                    border: Border.all(color: Colors.white, width: 1),
                                    borderRadius: BorderRadius.circular(10),
                                  ),
                                  child: Text(
                                    TranslationBase.of(context).cancel_nocaps,
                                    style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.4),
                                  ),
                                ),
                              ),
                          ],
                        ),
                      ],
                    ),
                  ),
                ))
              ])

            //  FractionallySizedBox(
            //     widthFactor: 0.9,
            //     child: SingleChildScrollView(
            //         child: Container(
            //             // margin: EdgeInsets.all(10),
            //             child: Container(
            //       width: double.infinity,
            //       padding: EdgeInsets.only(left: 12, right: 12, top: 12),
            //       child: Card(
            //           shape: cardRadius(12),
            //           elevation: 2,
            //           margin: EdgeInsets.zero,
            //           color: Color(0xffcd9e1b),
            //           clipBehavior: Clip.antiAlias,
            //           child: Container(
            //               //  decoration: containerColorRadiusLeft(Colors.white, 12),
            //               margin: EdgeInsets.only(left: projectViewModel.isArabic ? 0 : 8, right: projectViewModel.isArabic ? 8 : 0),
            //               padding: EdgeInsets.all(12),
            //               // color: Colors.white,
            //               decoration: BoxDecoration(
            //                 shape: BoxShape.rectangle,
            //                 color: Colors.white,
            //                 borderRadius: BorderRadius.only(
            //                   topLeft: projectViewModel.isArabic ? Radius.zero : Radius.circular(12.0),
            //                   topRight: projectViewModel.isArabic ? Radius.circular(12.0) : Radius.zero,
            //                   bottomLeft: projectViewModel.isArabic ? Radius.zero : Radius.circular(12.0),
            //                   bottomRight: projectViewModel.isArabic ? Radius.circular(12.0) : Radius.zero,
            //                 ),
            //               ),
            //               // clipBehavior: Clip.antiAlias,
            //               child: Row(
            //                 children: [
            //                   Expanded(
            //                       child: Column(
            //                     mainAxisAlignment: MainAxisAlignment.start,
            //                     crossAxisAlignment: CrossAxisAlignment.start,
            //                     children: [
            //                       Texts(
            //                         TranslationBase.of(context).OrderStatus +
            //                             ' ' +
            //                             (projectViewModel.isArabic ? widget.model.pendingOrder.descriptionN : widget.model.pendingOrder.description),
            //                         bold: false,
            //                         fontSize: 12,
            //                         color: Color(0xffcd9e1b),
            //                         fontWeight: FontWeight.bold,
            //                       ),
            //                       Texts(
            //                         TranslationBase.of(context).requestID + ' ' + widget.model.pendingOrder.iD.toString(),
            //                         fontWeight: FontWeight.w600,
            //                         fontSize: 18,
            //                       ),
            //                       Texts(
            //                         TranslationBase.of(context).serviceName,
            //                         fontSize: 12,
            //                         fontWeight: FontWeight.w600,
            //                       ),
            //                       ...List.generate(
            //                         widget.model.hhcAllOrderDetail.length,
            //                         (index) => Container(
            //                           child: Texts(
            //                             projectViewModel.isArabic ? widget.model.hhcAllOrderDetail[index].descriptionN : widget.model.hhcAllOrderDetail[index].description.capitalize(),
            //                             fontSize: 13,
            //                             bold: false,
            //                           ),
            //                         ),
            //                       ),
            //                     ],
            //                   )),
            //                   Column(
            //                     children: [
            //                       Texts(
            //                         DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(widget.model.pendingOrder.createdOn)),
            //                         fontSize: 14,
            //                       ),
            //                       mHeight(8),
            //                       // SecondaryButton(
            //                       //   onTap: () {
            //                       //     showConfirmMessage(widget.model, widget.model.hhcAllOrderDetail[0]);
            //                       //   },
            //                       //   label: TranslationBase.of(context).cancel,
            //                       //   color: Colors.red[900],
            //                       //   small: true,
            //                       // )
            //                     ],
            //                   ),
            //                 ],
            //               ))),
            //     ))))
            : NewHomeHealthCareStepOnePage(
                changePageViewIndex: _changeCurrentTab,
                patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
                model: widget.model,
              ),
      ],
    );
  }
}
