import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tangheem/api/tangheem_user_api_client.dart';
import 'package:tangheem/classes/colors.dart';
import 'package:tangheem/classes/utils.dart';
import 'package:tangheem/extensions/string_extensions.dart';
import 'package:tangheem/widgets/common_textfield_widget.dart';

class ContactUsScreen extends StatefulWidget {
  static const String routeName = "/contact_us";

  ContactUsScreen({Key key}) : super(key: key);

  @override
  _ContactUsScreenState createState() {
    return _ContactUsScreenState();
  }
}

class _ContactUsScreenState extends State<ContactUsScreen> {
  TextEditingController _firstNameController = TextEditingController();
  TextEditingController _lastNameController = TextEditingController();
  TextEditingController _emailController = TextEditingController();
  TextEditingController _mobileNumberController = TextEditingController();
  TextEditingController _descriptionController = TextEditingController();

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

  void sendFeedback(String _firstName, String _lastName, String _email, String _phone, String _description) async {
    Utils.showLoading(context);
    try {
      await TangheemUserApiClient().contactUs(_firstName, _lastName, _email, _phone, _description);
      Utils.showToast("تم إرسال الطلب بنجاح");
      Utils.hideLoading(context);
      Navigator.pop(context);
    } catch (ex) {
      if (mounted) Utils.handleException(ex, null);
      Utils.hideLoading(context);
    }
  }

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: ColorConsts.secondaryWhite,
      body: SingleChildScrollView(
        padding: EdgeInsets.all(32.0),
        physics: BouncingScrollPhysics(),
        child: Container(
          width: MediaQuery.of(context).size.width,
          decoration: BoxDecoration(borderRadius: BorderRadius.circular(8.0), color: Colors.white),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisSize: MainAxisSize.min,
            children: [
              Padding(
                padding: EdgeInsets.only(top: 24, bottom: 24),
                child: SvgPicture.asset("assets/logos/tangheem_logo.svg", width: 100, height: 100),
              ),
              Text(
                "اتصل بنا",
                style: TextStyle(fontSize: 22, color: ColorConsts.primaryBlue),
              ),
              Padding(
                padding: EdgeInsets.all(8),
                child: Text(
                  "لا تتردد في الاتصال بنا ، يسعدنا أن نسمع منك",
                  textAlign: TextAlign.center,
                  style: TextStyle(fontSize: 14, color: ColorConsts.primaryBlue, height: 1),
                ),
              ),
              Container(
                margin: EdgeInsets.only(top: 16),
                width: double.infinity,
                padding: EdgeInsets.all(32.0),
                decoration: BoxDecoration(
                  color: ColorConsts.primaryBlue,
                  borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(8),
                    bottomRight: Radius.circular(8),
                  ),
                ),
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController),
                    SizedBox(height: 8),
                    CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController),
                    SizedBox(height: 8),
                    CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController),
                    SizedBox(height: 8),
                    CommonTextFieldWidget(hint: " رقم الاتصال${" (" + ("9xx") + " xxxxxxxxx)"}", controller: _mobileNumberController),
                    SizedBox(height: 8),
                    CommonTextFieldWidget(hint: "التفاصيل", controller: _descriptionController, maxLines: 4),
                    SizedBox(height: 12),
                    SizedBox(
                      width: double.infinity,
                      height: 50,
                      child: TextButton(
                        onPressed: () {
                          if (_firstNameController.text.length < 1) {
                            Utils.showToast("يرجى إدخال الاسم الأول");
                            return;
                          }
                          if (_lastNameController.text.length < 1) {
                            Utils.showToast("يرجى إدخال الاسم الأخير");
                            return;
                          }
                          if (_emailController.text.length < 1) {
                            Utils.showToast("يرجى إدخال البريد الإلكتروني");
                            return;
                          }
                          if (_mobileNumberController.text.length < 1) {
                            Utils.showToast("يرجى إدخال رقم الهاتف");
                            return;
                          }
                          if (_mobileNumberController.text.length != 12) {
                            Utils.showToast("صيغة الرقم غير صحيحة");
                            return;
                          }
                          if (_descriptionController.text.length < 1) {
                            Utils.showToast("يرجى إدخال التفاصيل");
                            return;
                          }
                          if (_descriptionController.text.trim().length < 1) {
                            Utils.showToast("يرجى إدخال التفاصيل");
                            return;
                          }
                          if (!_emailController.text.isValidEmail()) {
                            Utils.showToast("صيغة البريد الإلكتروني غير صحيحة");
                            return;
                          }
                          sendFeedback(_firstNameController.text, _lastNameController.text, _emailController.text, _mobileNumberController.text, _descriptionController.text);
                        },
                        style: TextButton.styleFrom(
                          primary: Colors.white,
                          backgroundColor: ColorConsts.secondaryPink,
                          textStyle: TextStyle(fontSize: 16, fontFamily: "DroidKufi"),
                          shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(6.0),
                          ),
                        ),
                        child: Text("إرسال"),
                      ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
