import 'package:fcs/domain/entities/discount.dart';
import 'package:fcs/helpers/theme.dart';
import 'package:fcs/localization/app_translations.dart';
import 'package:fcs/pages/main/util.dart';
import 'package:fcs/pages/widgets/display_text.dart';
import 'package:fcs/pages/widgets/input_text.dart';
import 'package:fcs/pages/widgets/progress.dart';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

class DiscountEditor extends StatefulWidget {
  final Discount discount;

  const DiscountEditor({Key key, this.discount}) : super(key: key);
  @override
  _DiscountEditorState createState() => _DiscountEditorState();
}

class _DiscountEditorState extends State<DiscountEditor> {
  bool _isLoading = false;
  Discount _discount = new Discount();
  TextEditingController _codeController = new TextEditingController();
  TextEditingController _amountController = new TextEditingController();
  TextEditingController _statusController = new TextEditingController();
  TextEditingController _customerController = new TextEditingController();

  bool isNew = false;

  @override
  void initState() {
    super.initState();
    if (widget.discount != null) {
      _discount = widget.discount;
      _codeController.text = _discount.code;
      _amountController.text = _discount.amount.toString();
      _statusController.text = _discount.status;
      _customerController.text = 'Ko Nyi';
    } else {
      isNew = true;
      _customerController.text = '';
    }
  }

  @override
  Widget build(BuildContext context) {
    final codeBox = InputText(
        labelTextKey: 'discount.code',
        iconData: FontAwesomeIcons.algolia,
        controller: _codeController);
    final nameBox = InputText(
        labelTextKey: 'discount.name',
        iconData: Feather.user,
        controller: _customerController);
    final amountBox = InputText(
        labelTextKey: 'discount.amount',
        iconData: FontAwesomeIcons.moneyBill,
        controller: _amountController);
    final statusBox = DisplayText(
      text: _statusController.text,
      labelTextKey: getLocalString(context, "discount.status"),
      iconData: Icons.av_timer,
    );

    return LocalProgress(
      inAsyncCall: _isLoading,
      child: Scaffold(
          backgroundColor: Colors.white,
          appBar: AppBar(
            centerTitle: true,
            title: Text(
              AppTranslations.of(context).text("discount.form"),
            ),
            leading: new IconButton(
              icon: new Icon(Icons.close),
              onPressed: () => Navigator.of(context).pop(),
            ),
            backgroundColor: primaryColor,
            actions: <Widget>[],
          ),
          body: Padding(
            padding: const EdgeInsets.only(left: 20.0),
            child: Column(
              children: <Widget>[
                Expanded(
                  child: ListView(
                    children: <Widget>[
                      codeBox,
                      nameBox,
                      amountBox,
                      widget.discount == null
                          ? Container()
                          : Container(
                              padding: EdgeInsets.only(top: 5),
                              child: statusBox,
                            ),
                    ],
                  ),
                ),
                widget.discount == null
                    ? Align(
                        alignment: Alignment.bottomCenter,
                        child: Center(
                            child: Container(
                          width: 250,
                          child: FlatButton(
                            child: Text('Add Discount'),
                            color: primaryColor,
                            textColor: Colors.white,
                            onPressed: () {
                              Navigator.pop(context);
                            },
                          ),
                        )))
                    : Align(
                        alignment: Alignment.bottomCenter,
                        child: Center(
                            child: Container(
                          width: 250,
                          child: FlatButton(
                            child: Text('Save box'),
                            color: primaryColor,
                            textColor: Colors.white,
                            onPressed: () {
                              Navigator.pop(context);
                            },
                          ),
                        ))),
                SizedBox(
                  height: 30,
                )
              ],
            ),
          )),
    );
  }
}
