import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:get/get.dart';

import '../../../constant/box_name.dart';
import '../../../constant/colors.dart';
import '../../../constant/info.dart';
import '../../../constant/style.dart';
import '../../../controller/auth/captin/login_captin_controller.dart';
import '../../../controller/auth/login_controller.dart';
import '../../../main.dart';
import '../../home/profile/passenger_profile_page.dart';
import '../../widgets/elevated_btn.dart';
import '../../widgets/my_scafold.dart';
import '../../widgets/mycircular.dart';
import 'register_captin.dart';

class LoginCaptin extends StatelessWidget {
  final controller = Get.put(LoginController());

  LoginCaptin({super.key});

  @override
  Widget build(BuildContext context) {
    Get.put(LoginCaptinController());

    return GetBuilder<LoginCaptinController>(
      builder: (controller) => MyScafolld(
        title: 'Login Driver'.tr,
        isleading: true,
        body: [
          if (box.read(BoxName.agreeTerms) != 'agreed')
            agreedPage()
          else if (box.read(BoxName.countryCode) == null)
            CountryPicker()
          else
            SingleChildScrollView(
              child: Column(
                children: [
                  Padding(
                      padding: const EdgeInsets.all(25),
                      child: Container(
                        decoration: const BoxDecoration(
                          boxShadow: [
                            BoxShadow(
                                offset: Offset(3, 3),
                                color: AppColor.accentColor,
                                blurRadius: 3)
                          ],
                          color: AppColor.secondaryColor,
                        ),
                        child: Form(
                          key: controller.formKey,
                          child: Padding(
                            padding: const EdgeInsets.all(16.0),
                            child: SingleChildScrollView(
                              child: Column(
                                children: [
                                  TextFormField(
                                    keyboardType: TextInputType.emailAddress,
                                    controller: controller.emailController,
                                    decoration: InputDecoration(
                                      focusedBorder: OutlineInputBorder(
                                        borderSide: const BorderSide(
                                          color: AppColor.primaryColor,
                                          width: 2.0,
                                        ),
                                        borderRadius: BorderRadius.circular(10),
                                      ),
                                      fillColor: AppColor.accentColor,
                                      hoverColor: AppColor.accentColor,
                                      focusColor: AppColor.accentColor,
                                      border: const OutlineInputBorder(
                                          borderRadius: BorderRadius.all(
                                              Radius.circular(12))),
                                      labelText: 'Email'.tr,
                                      hintText: 'Enter your email address'.tr,
                                    ),
                                    validator: (value) {
                                      if (value!.isEmpty ||
                                          (!value.contains('@') ||
                                              !value.contains('.'))) {
                                        return 'Please enter Your Email.'.tr;
                                      }
                                      return null;
                                    },
                                  ),
                                  const SizedBox(
                                    height: 30,
                                  ),
                                  TextFormField(
                                    keyboardType: TextInputType.phone,
                                    cursorColor: AppColor.accentColor,
                                    controller: controller.phoneController,
                                    decoration: InputDecoration(
                                      focusedBorder: OutlineInputBorder(
                                        borderSide: const BorderSide(
                                          color: AppColor.primaryColor,
                                          width: 2.0,
                                        ),
                                        borderRadius: BorderRadius.circular(10),
                                      ),
                                      focusColor: AppColor.accentColor,
                                      fillColor: AppColor.accentColor,
                                      border: const OutlineInputBorder(
                                          borderRadius: BorderRadius.all(
                                              Radius.circular(12))),
                                      labelText: 'Phone'.tr,
                                      hintText: 'Enter your phone number'.tr,
                                    ),
                                    validator: (value) {
                                      if (value!.isEmpty ||
                                          value.length != 10) {
                                        return 'Please enter your phone number.'
                                            .tr;
                                      }
                                      return null;
                                    },
                                  ),
                                  const SizedBox(
                                    height: 15,
                                  ),
                                  TextFormField(
                                    obscureText: true,
                                    keyboardType: TextInputType.emailAddress,
                                    controller: controller.passwordController,
                                    decoration: InputDecoration(
                                      focusedBorder: OutlineInputBorder(
                                        borderSide: const BorderSide(
                                          color: AppColor.primaryColor,
                                          width: 2.0,
                                        ),
                                        borderRadius: BorderRadius.circular(10),
                                      ),
                                      fillColor: AppColor.accentColor,
                                      hoverColor: AppColor.accentColor,
                                      focusColor: AppColor.accentColor,
                                      border: const OutlineInputBorder(
                                          borderRadius: BorderRadius.all(
                                              Radius.circular(12))),
                                      labelText: 'Password'.tr,
                                      hintText:
                                          'Please enter your phone number.'.tr,
                                    ),
                                    validator: (value) {
                                      if (value!.isEmpty) {
                                        return 'Please enter Your Password.'.tr;
                                      }
                                      if (value.length < 6) {
                                        return 'Password must br at least 6 character.'
                                            .tr;
                                      }
                                      return null;
                                    },
                                  ),
                                  GetBuilder<LoginCaptinController>(
                                    builder: (controller) => controller
                                            .isloading
                                        ? const MyCircularProgressIndicator()
                                        : MyElevatedButton(
                                            onPressed: () {
                                              if (controller
                                                  .formKey.currentState!
                                                  .validate()) {
                                                controller.login();
                                              }
                                            },
                                            title: 'Submit'.tr,
                                          ),
                                  )
                                ],
                              ),
                            ),
                          ),
                        ),
                      )),
                  Text(
                    'if you don\'t have account'.tr,
                    style: AppStyle.subtitle,
                  ),
                  AnimatedTextKit(
                    onTap: () => Get.to(() => const RegisterCaptin()),
                    animatedTexts: [
                      TypewriterAnimatedText(
                        'Register as Driver'.tr,
                        textStyle: AppStyle.headTitle2,
                        speed: const Duration(milliseconds: 200),
                      ),
                    ],
                    totalRepeatCount: 4,
                    pause: const Duration(milliseconds: 200),
                    displayFullTextOnTap: true,
                    stopPauseOnTap: true,
                  ),
                  // IconButton(
                  // onPressed: () async {
                  //   // String v =
                  //   //     await storage.read(key: BoxName.serverAPI) ?? '';
                  //   // print(v);
                  //   // sql.deleteAllData(TableName.faceDetectTimes);
                  //   AC credentials = AC();
                  //   // String apiKey = AK.secretKey;
                  //   // // // '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';
                  //   // credentials.gAK();
                  //   // String? apiKeyf =
                  //   //     await storage.read(key: BoxName.chatGPTkey);
                  //   // print(apiKeyf);
                  //   // String convertedString = credentials.c(apiKey, s);
                  //   // String convertedStrings = credentials.c(apiKey, s);
                  //   // print('Converted String s: $convertedStrings');
                  //   // String convertedStringC =
                  //   //     credentials.c(convertedStrings, c);
                  //   // print('v: $v');
                  //   // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
                  //   // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
                  //   String convertedStringN = credentials.c(
                  //       credentials.c(
                  //           credentials.c(
                  //               '0vQRyaYYDWpsv73A5CZOknseK7S2sgwE', cs),
                  //           cC),
                  //       cn);
                  //   print('Converted v: $convertedStringN');
                  //   // //
                  //   // String retrievedStringN =
                  //   //     credentials.r(convertedStringN, n);
                  //   // print('Retrieved String: $retrievedStringN');
                  //   // String retrievedStringC =
                  //   //     credentials.r(retrievedStringN, c);
                  //   // print('Retrieved String: $retrievedStringC');

                  //   String retrievedStringS = credentials.r(
                  //       credentials.r(
                  //           credentials.r(convertedStringN, cn), cC),
                  //       cs);
                  //   print('Retrieved String: $retrievedStringS');

                  //   // if (retrievedStringS == apiKey) {
                  //   //   print('same');
                  //   // }
                  //   // print(' AK is ' + AK.chatGPTkey); //

                  //   // print(' ENV is ' + Env.chatGPTkey); //
                  //   // // print('storage is ' + v); //
                  //   // print('storage is ' + apiKeyf!); //
                  // },
                  // icon: const Icon(
                  //   Icons.close,
                  //   color: AppColor.blueColor,
                  // ),
                  // ),
                ],
              ),
            )
        ],
      ),
    );
  }

  Padding agreedPage() {
    return Padding(
      padding: const EdgeInsets.all(16),
      child: SingleChildScrollView(
        child: Column(
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Image.asset(
                  'assets/images/notepad.png',
                  width: Get.width * .2,
                ),
                SizedBox(
                  width: Get.width * .7,
                  child: Text(
                    'Accept Ride\'s Terms & Review Privacy Notice'.tr,
                    style: AppStyle.headTitle2,
                  ),
                ),
              ],
            ),
            const SizedBox(
              height: 30,
            ),
            RichText(
              text: TextSpan(
                text:
                    'By selecting "I Agree" below, I have reviewed and agree to the Terms of Use and acknowledge the '
                        .tr,
                style: AppStyle.title,
                children: <TextSpan>[
                  TextSpan(
                      text: 'Privacy Notice'.tr,
                      style: const TextStyle(
                          decoration: TextDecoration.underline,
                          color: AppColor.blueColor),
                      recognizer: TapGestureRecognizer()
                        ..onTap = () {
                          Get.defaultDialog(
                              title: ''.tr,
                              content: const SizedBox(
                                height: 400,
                                width: 400,
                                child: SingleChildScrollView(
                                  child:
                                      HtmlWidget(AppInformation.privacyPolicy),
                                ),
                              ));
                        }),
                  const TextSpan(
                    text: '. I am at least 18 years of age.',
                  ),
                ],
              ),
            ),
            const SizedBox(
              height: 100,
            ),
            GetBuilder<LoginController>(
              builder: (controller) => Column(
                children: [
                  Row(
                    children: [
                      Checkbox.adaptive(
                        autofocus: true,
                        tristate: true,
                        splashRadius: 25,
                        activeColor: AppColor.primaryColor,
                        value: controller.isAgreeTerms,
                        onChanged: (value) => controller.changeAgreeTerm(),
                      ),
                      Text(
                        'I Agree'.tr,
                        style: controller.isAgreeTerms
                            ? AppStyle.title
                            : AppStyle.title
                                .copyWith(color: AppColor.accentColor),
                      ),
                    ],
                  ),
                  MyElevatedButton(
                      title: 'Submit'.tr,
                      onPressed: () => controller.saveAgreementTerms()),
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}
