import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/er/AmbulanceRequestOrdersModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/er/am_request_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class OrderLogPage extends StatelessWidget {
  final AmRequestViewModel amRequestViewModel;

  OrderLogPage({Key key, @required this.amRequestViewModel});

  @override
  Widget build(BuildContext context) {
    ProjectViewModel projectViewModel = Provider.of(context);

    void showConfirmMessage(AmRequestViewModel model, int presOrderID, BuildContext context) {
      showDialog(
          context: context,
          builder: (cxt) => ConfirmWithMessageDialog(
            message: TranslationBase.of(context).cancelOrderMsg,
            onTap: () {
              Future.delayed(new Duration(milliseconds: 300)).then((value) async {
                // GifLoaderDialogUtils.showMyDialog(context);
                await model.updatePressOrder(presOrderID: presOrderID);
                if (model.state == ViewState.ErrorLocal) {
                  Utils.showErrorToast(model.error);
                  // GifLoaderDialogUtils.hideDialog(context);
                } else {
                  AppToast.showSuccessToast(message: TranslationBase.of(context).processDoneSuccessfully);
                  // GifLoaderDialogUtils.hideDialog(context);
                }
              });
            },
          ));
      return;
    }

    return Container(
      // margin: EdgeInsets.all(10),
      padding: EdgeInsets.all(8),
      child: amRequestViewModel.patientAmbulanceRequestOrdersList.length > 0
          ? ListView.builder(
              padding: EdgeInsets.all(21),
              reverse: false,
              itemCount: amRequestViewModel.patientAmbulanceRequestOrdersList.length,
              itemBuilder: (context, index) {
                AmbulanceRequestOrdersModel order = amRequestViewModel.patientAmbulanceRequestOrdersList.reversed.toList()[index];

                int status = order.statusId;
                String _statusDisp = order.statusText;
                Color _color;
                if (status == 1) {
                  //pending
                  _color = Color(0xffCC9B14);
                } else if (status == 2) {
                  //processing
                  _color = Color(0xff2E303A);
                } else if (status == 3) {
                  //completed
                  _color = Color(0xff359846);
                } else if (status == 4 || status == 6 || status == 7) {
                  //cancel // Rejected
                  _color = Color(0xffD02127);
                }

                return Container(
                  margin: EdgeInsets.only(bottom: 12.0),
                  decoration: BoxDecoration(
                    color: _color,
                    borderRadius: BorderRadius.all(
                      Radius.circular(10.0),
                    ),
                    boxShadow: [
                      BoxShadow(
                        color: Color(0xff000000).withOpacity(.05),
                        blurRadius: 27,
                        offset: Offset(0, -3),
                      ),
                    ],
                  ),
                  child: Container(
                    margin: EdgeInsets.only(left: projectViewModel.isArabic ? 0 : 6, right: projectViewModel.isArabic ? 6 : 0),
                    padding: EdgeInsets.symmetric(vertical: 13, 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),
                      ),
                    ),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Row(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Expanded(
                              child: Column(
                                mainAxisAlignment: MainAxisAlignment.start,
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  Text(
                                    _statusDisp,
                                    style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: _color, letterSpacing: -0.4, height: 16 / 10),
                                  ),
                                  SizedBox(height: 6),
                                  Text(
                                    '${TranslationBase.of(context).requestID}: ${order.iD}',
                                    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).pickupDate + ": ",
                                        style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
                                      ),
                                      Expanded(
                                        child: Text(
                                          DateUtil.getDayMonthYearDateFormatted(DateTime.tryParse(order.created)),
                                          style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 16 / 10),
                                        ),
                                      ),
                                    ],
                                  ),
                                  Row(
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: [
                                      Text(
                                        TranslationBase.of(context).transportMethod + ": ",
                                        style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
                                      ),
                                      Expanded(
                                        child: Text(
                                          order.serviceText,
                                          style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 16 / 10),
                                        ),
                                      ),
                                    ],
                                  ),
                                  SizedBox(
                                    height: 13.0,
                                  ),
                                ],
                              ),
                            ),
                            Column(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              crossAxisAlignment: CrossAxisAlignment.end,
                              children: [
                                SizedBox(height: 12),
                                if (order.statusId == 1 || order.statusId == 2)
                                  InkWell(
                                    onTap: () {
                                      showConfirmMessage(amRequestViewModel, order.iD, context);
                                    },
                                    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),
                                      ),
                                    ),
                                  ),
                              ],
                            ),
                          ],
                        ),
                        Row(
                          children: [
                            Container(
                              margin: projectViewModel.isArabic ? EdgeInsets.only(left: 10.0) : EdgeInsets.only(right: 10.0),
                              width: 8,
                              height: 8,
                              decoration: containerRadius(
                                CustomColors.textColor,
                                100,
                              ),
                            ),
                            Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: [
                                Text(
                                  TranslationBase.of(context).pickupLocation + ": ",
                                  style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
                                ),
                                Text(
                                  order.pickupLocation.trim().toString(),
                                  style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
                                ),
                              ],
                            ),
                          ],
                        ),
                        Container(
                          height: 20.0,
                          width: 1.0,
                          color: CustomColors.grey2,
                          margin: const EdgeInsets.only(left: 3.0, right: 3.0),
                        ),
                        Row(
                          children: [
                            Container(
                              margin: projectViewModel.isArabic ? EdgeInsets.only(left: 10.0) : EdgeInsets.only(right: 10.0),
                              width: 8,
                              height: 8,
                              decoration: containerRadius(
                                CustomColors.accentColor,
                                100,
                              ),
                            ),
                            Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: [
                                Text(
                                  TranslationBase.of(context).dropoffLocation + ": ",
                                  style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
                                ),
                                Text(
                                  order.dropOffLocation.trim().toString(),
                                  style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
                                ),
                              ],
                            ),
                          ],
                        ),
                      ],
                    ),
                  ),
                );
              })
          : getNoDataWidget(context),
    );
  }

  String getDate(String date) {
    return date.split("T")[0];
  }
}
