import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.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(TranslationBase.of(context).invoiceDetails, style: TextStyle(fontSize: 25.0, fontWeight: FontWeight.w600)),
            ),
            Container(
              margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.0),
              child: Text(widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, style: TextStyle(color: Colors.black, fontSize: 15.0, fontWeight: FontWeight.w600)),
            ),
            Container(
              margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.0),
              child: Text(getDate(widget.appo.appointmentDate), style: getTextStyle()),
            ),
            Container(
              margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.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(decoration: BoxDecoration(), 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())),
                  ]),
                ],
              ),
            ),
            Divider(
              color: Colors.grey,
            ),
            Container(
              margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0),
              child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600)),
            ),
            Container(margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), child: getPaymentMethods()),
            Container(
              margin: EdgeInsets.fromLTRB(20.0, 30.0, 20.0, 15.0),
              child: Text(TranslationBase.of(context).appoPaymentConfirm, style: TextStyle(fontSize: 14.0, color: CustomColors.accentColor, fontWeight: FontWeight.w600)),
            ),
            Container(
              alignment: Alignment.center,
              height: 40.0,
              margin: EdgeInsets.only(left: 20.0, right: 20.0, top: 20.0),
              child: Flex(
                direction: Axis.horizontal,
                children: <Widget>[
                  Expanded(
                    child: DefaultButton(
                      TranslationBase.of(context).cancel_nocaps,
                      () {
                        Navigator.pop(context, null);
                      },
                      color: CustomColors.accentColor,
                      textColor: Colors.white,
                    ),
                  ),
                  mWidth(10.0),
                  Expanded(
                    child: DefaultButton(
                      TranslationBase.of(context).confirm,
                      () {
                        Navigator.pop(context, widget.patientShareResponse);
                      },
                      color: CustomColors.green,
                      textColor: Colors.white,
                    ),
                  ),
                ],
              ),
            ),
          ]),
        ),
      ),
    );
  }

  _getNormalText(text) {
    return Container(
      margin: EdgeInsets.only(top: 10.0, right: 10.0),
      child: Text(text, style: TextStyle(fontSize: 13, letterSpacing: 0.5, color: Colors.black)),
    );
  }

  TextStyle getTextStyle() {
    return TextStyle(color: Colors.grey[700], fontSize: 13.0, fontWeight: FontWeight.w600);
  }

  String getDate(String date) {
    DateTime dateObj = DateUtil.convertStringToDate(date);
    return DateUtil.getDayMonthYearDateFormatted(dateObj) +
        " " +
        dateObj.hour.toString() +
        ":" +
        getMinute(dateObj);
  }

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