import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';

class PaymentDialog extends StatefulWidget {
  AppoitmentAllHistoryResultList appo;
  PatientShareResponse patientShareResponse;

  final Function onPaymentMethodSelected;

  PaymentDialog({@required this.appo, @required this.onPaymentMethodSelected, this.patientShareResponse});

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

class _PaymentDialogState extends State<PaymentDialog> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Dialog(
        shape:
            RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
        child: Container(
          height: 550.0,
          width: 450.0,
          child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisSize: MainAxisSize.max,
              children: <Widget>[
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0),
                  child: Text("Invoice Detail",
                      style: TextStyle(
                          fontSize: 25.0,
                          fontWeight: FontWeight.bold,
                          fontFamily: "Open-Sans-Bold")),
                ),
                Divider(
                  color: Colors.grey,
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0),
                  child: Text("Appointment Details",
                      style: TextStyle(
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold,
                          fontFamily: "Open-Sans-Bold")),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0),
                  child: Text(
                      widget.appo.doctorTitle + " " + widget.appo.doctorNameObj,
                      style: TextStyle(
                          color: Colors.grey[700],
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold,
                          fontFamily: "Open-Sans-Bold")),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0),
                  child: Text(getDate(widget.appo.appointmentDate),
                      style: getTextStyle()),
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0),
                  child: Text(widget.appo.projectName, style: getTextStyle()),
                ),
                Divider(
                  color: Colors.grey,
                ),
                Container(
                  margin: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 5.0),
                  child: Table(
                    children: [
                      TableRow(children: [
                        TableCell(
                            child: _getNormalText(
                                TranslationBase.of(context).patientShareToDo)),
                        TableCell(
                            child: _getNormalText(widget
                                .patientShareResponse.patientShare
                                .toString())),
                      ]),
                      TableRow(children: [
                        TableCell(
                            child: _getNormalText(
                                TranslationBase.of(context).patientTaxToDo)),
                        TableCell(
                            child: _getNormalText(widget
                                .patientShareResponse.patientTaxAmount
                                .toString())),
                      ]),
                      TableRow(children: [
                        TableCell(
                            child: _getNormalText(TranslationBase.of(context)
                                .patientShareTotalToDo)),
                        TableCell(
                            child: _getNormalText(widget
                                .patientShareResponse.patientShareWithTax
                                .toString())),
                      ]),
                    ],
                  ),
                ),
                Container(
                  alignment: Alignment.center,
                  margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0),
                  child: Text("You can pay by following options: ",
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          fontSize: 16.0,
                          fontWeight: FontWeight.bold,
                          fontFamily: "Open-Sans")),
                ),
                Container(
                  alignment: Alignment.center,
                  margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 5.0),
                  child: Image.asset(
                      "assets/images/new-design/payment_options_invoice_confirmation.png",
                      width: 300),
                ),
                Container(
                  alignment: Alignment.center,
                  margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 15.0),
                  child: Text(
                      "Are You Sure You Want To Make payment for this Appointment?",
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          fontSize: 14.0,
                          color: Colors.red[700],
                          fontFamily: "Open-Sans")),
                ),
                Divider(
                  color: Colors.grey,
                ),
                Container(
                  alignment: Alignment.center,
                  height: 40.0,
                  child: Flex(
                    direction: Axis.horizontal,
                    children: <Widget>[
                      Expanded(
                        child: InkWell(
                          onTap: () {
                            Navigator.pop(context, null);
                          },
                          child: Container(
                            child: Text("Cancel",
                                textAlign: TextAlign.center,
                                style: TextStyle(
                                    fontSize: 18.0, color: Colors.red[700])),
                          ),
                        ),
                      ),
                      Expanded(
                        child: InkWell(
                          onTap: () {
                            Navigator.pop(context, widget.patientShareResponse);
//                            widget.onPaymentMethodSelected();
                          },
                          child: Container(
                            child: Text("Ok",
                                textAlign: TextAlign.center,
                                style: TextStyle(
                                  fontSize: 18.0,
                                )),
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
              ]),
        ),
      ),
    );
  }

  _getNormalText(text) {
    return Container(
      margin: EdgeInsets.only(top: 10.0, right: 10.0),
      child: Text(text,
          textAlign: TextAlign.end,
          style: TextStyle(
              fontSize: 15,
              fontFamily: 'Open-Sans',
              letterSpacing: 0.5,
              color: Colors.grey[700])),
    );
  }

  TextStyle getTextStyle() {
    return TextStyle(
        color: Colors.grey[700], fontSize: 15.0, fontFamily: "Open-Sans-Bold");
  }

//  Future navigateToPaymentMethod(context) async {
//    Navigator.push(
//        context, MaterialPageRoute(builder: (context) => PaymentMethod()));
//  }

  String getDate(String date) {
    DateTime dateObj = DateUtil.convertStringToDate(date);
    return DateUtil.getWeekDay(dateObj.weekday) +
        ", " +
        dateObj.day.toString() +
        " " +
        DateUtil.getMonth(dateObj.month) +
        " " +
        dateObj.year.toString() +
        " " +
        dateObj.hour.toString() +
        ":" +
        getMinute(dateObj);
  }

  String getMinute(DateTime dateObj) {
    if (dateObj.minute == 0) {
      return dateObj.minute.toString() + "0";
    } else {
      return dateObj.minute.toString();
    }
  }
}
