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/int_extensions.dart';
import 'package:tangheem/extensions/string_extensions.dart';
import 'package:tangheem/extensions/widget_extensions.dart';
import 'package:tangheem/widgets/common_textfield_widget.dart';
import 'package:tangheem/widgets/new/CommonHeader.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) {
    bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;

    Widget _header = SizedBox(height: isPortrait ? null : double.infinity, width: double.infinity, child: CommonHeader("اتصل بنا", "assets/icons/new/contact_bg.jpg", Color(0xff416A6C)));

    Widget _inputDataList = Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisSize: MainAxisSize.min,
      children: [
        "نسعد بتواصلكم بالمساهمة في تطوير المشروع وطرح المقترحات التي حقق جودته. الرجاء تعبئة البيانات لكي تصل إلينا بشكل مناسب، وسيتم التواصل معكم في أقرب وقت ممكن."
            .toText(13, color: ColorConsts.darkText, textAlign: TextAlign.center),
        32.height,
        CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController, fillColor: Colors.white, isBorder: true),
        8.height,
        CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController, fillColor: Colors.white, isBorder: true),
        8.height,
        CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, fillColor: Colors.white, isBorder: true, isEmail: true),
        8.height,
        CommonTextFieldWidget(hint: " رقم الاتصال${" (" + ("9xx") + " xxxxxxxxx)"}", controller: _mobileNumberController, fillColor: Colors.white, isBorder: true),
        8.height,
        CommonTextFieldWidget(hint: "التفاصيل", controller: _descriptionController, maxLines: 5, fillColor: Colors.white, isBorder: true),
        22.height,
        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(
              backgroundColor: ColorConsts.darkText,
              foregroundColor: Colors.white,
              textStyle: TextStyle(fontSize: 18),
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(25.0),
              ),
            ),
            child: Text("إرسال"),
          ),
        ),
      ],
    );
    return Scaffold(
      backgroundColor: ColorConsts.greyF4Color,
      body: isPortrait
          ? SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              child: Column(
                children: [
                  _header,
                  _inputDataList.paddingAll(35),
                ],
              ),
            )
          : Row(
              children: [
                Expanded(child: _header, flex: 4),
                Expanded(
                    child: SingleChildScrollView(
                      physics: BouncingScrollPhysics(),
                      padding: EdgeInsets.all(48),
                      child: _inputDataList,
                    ),
                    flex: 6)
              ],
            ),
    );
  }
}
