import React, { useState, useEffect } from "react";
import Image from "next/image";
import Link from "next/link";
import axios from "axios";
import { useRouter } from "next/router";
import { useDispatch, useSelector } from "react-redux";
import { setNumber } from "../../Redux/numberSlice";
import Loader from "@/components/helpers/Loader";
import { RootState } from "@/Redux/store";
import Swal from "sweetalert2";
import toast, { Toaster } from "react-hot-toast";
import { userActivity } from "@/components/commonFunctions/userActivity";
import { motion } from "framer-motion";
import { setCode } from "@/Redux/referralSlice";
import { Tag } from "antd";
import Head from "next/head";

const SignUpWithMob = () => {
  const handleSignIn = (icon: any, title: any) => {
    const Toast = Swal.mixin({
      toast: true,
      position: "bottom-end",
      showConfirmButton: false,
      timer: 5000,
      timerProgressBar: true,
      didOpen: (toast) => {
        toast.addEventListener("mouseenter", Swal.stopTimer);
        toast.addEventListener("mouseleave", Swal.resumeTimer);
      },
    });

    Toast.fire({
      icon: icon,
      title: title,
    });
  };

  const router = useRouter();
  const dispatch = useDispatch();

  // const {number} = useSelector((state: RootState) => state.number);
  const { number } = useSelector((state: RootState) => state.number);
  const _loggedIn_user = useSelector((state: RootState) => state.user.user);
  const _refCode = useSelector((state: RootState) => state.referral.code);

  const [userNumber, setUserNumber] = useState("");
  const [loading, setLoading] = useState(false);

  const [referralInput, setReferralInput] = useState(false);
  const [referralcode, setReferralCode] = useState("");

  const handleSubmit = async () => {
    userActivity(
      _loggedIn_user?._id,
      "website",
      "/product page",
      {
        pageVisit: `OTP verify`,
        userLogin: "incomplete",
      },
      navigator.userAgent
    );
    if (number.length === 11) {
      // if(number.length === 11){
      //   const last10Digits = number.substring(1);
      //   console.log("10 DIGITS",last10Digits)
      //   data = {
      //     phoneCode:"+234",
      //     phone:last10Digits
      //   }
      // }else{
      //   data = {
      //     phoneCode:"+234",
      //     phone:number
      //   }
      // }

      try {
        setLoading(true);
        const data = {
          phoneCode: "+234",
          phone: number,
          referralCode: _refCode,
        };
        const response = await axios.post(
          "https://api.jazzagain.com/public/index.php/api/auth/login/",
          data
        );
        console.log("Response:", response);
        handleSignIn("success", "OTP Sent SuccessFully !");

        // if(response.data.otp == true) router.push(`/auth/verify-mobile-otp`);
        if (response) router.push(`/auth/verify-mobile-otp`);
        setLoading(false);
      } catch (error: any) {
        handleSignIn("error", error.response.data.message);
        setLoading(false);
      }
    } else {
      toast.error("Enter valid number !");
    }
  };

  // const handleChange = (event:any)=>{
  //   dispatch(setNumber(event.target.value));
  // }

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    const inputValue = event.target.value;
    const numericValue = inputValue.replace(/[^0-9]/g, "");
    const maxLength = 11;

    if (numericValue.length <= maxLength) {
      dispatch(setNumber(numericValue));
    }
  };

  const handleReferralCodeChange = (e: any) => {
    const newValue = e.target.value;
    setReferralCode(newValue);
    dispatch(setCode(newValue));
    console.log("Referral code changed to:", newValue);
  };

  return (
    <>
      <Head>
        <link rel="shortcut icon" href="/images/jazzagian-logo.png" />
        <script
          dangerouslySetInnerHTML={{
            __html: `
              !function(f,b,e,v,n,t,s)
              {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
              n.callMethod.apply(n,arguments):n.queue.push(arguments)};
              if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
              n.queue=[];t=b.createElement(e);t.async=!0;
              t.src=v;s=b.getElementsByTagName(e)[0];
              s.parentNode.insertBefore(t,s)}(window, document,'script',
              'https://connect.facebook.net/en_US/fbevents.js');
              fbq('init', '360254480441103');
              fbq('track', 'SignUpWithMob');
            `,
          }}
        />
        <noscript>
          <Image
            height="1"
            width="1"
            alt="facebook link"
            style={{ display: "none" }}
            src="https://www.facebook.com/tr?id=360254480441103&ev=SignUpWithMob&noscript=1"
          />
        </noscript>
      </Head>
      {loading ? (
        <Loader />
      ) : (
        <div className="flex flex-col items-center">
          <div className="grid grid-cols-1 text-sm sm:text-base lg:grid-cols-2 text-center place-items-center my-auto ">
            <div className="hidden lg:block border-r-2 border-gray-400 p-[3rem]">
              <Image
                src={"/images/login3.jpg"}
                height={500}
                width={500}
                alt="login image"
                className="w-full rounded-3xl"
                priority
              />
            </div>

            <Toaster
              toastOptions={{
                className: "",
                duration: 5000,
              }}
            />

            <div className={"p-[1rem] sm:p-[3rem]  rounded-lg "}>
              <div className="sm:px-[2rem]">
                <p>Get gently used fashion items at cheap prices.</p>{" "}
                <p>
                  {" "}
                  Make money from your wardrobe, <br /> selling clothes you
                  don&apos;t rock anymore
                </p>
              </div>
              {/* <h2 className="text-4xl font-extrabold text-[#E98195] sm:pt-[1rem] sm:pb-[.5rem] mt-[1rem]">
            JazzAgain
          </h2> */}
              <div className="flex justify-center my-3">
                <Image
                  src={"/images/jazzagian-logo.png"}
                  width={100}
                  height={100}
                  alt="jazzagain logo"
                  className="w-44"
                />
              </div>
              <h3 className="font-semibold text-lg mb-[1.5rem]">
                Welcome to Jazzagain
              </h3>
              <div className="max-w-xs mx-auto">
                <form>
                  <label htmlFor="mob">Enter Mobile Number</label>
                  <input
                    value={number}
                    id="mob"
                    type="text"
                    className="p-2 my-3 rounded-xl border border-gray-500 w-[70%]"
                    onChange={(e) => handleChange(e)}
                  />
                  {_refCode && (
                    <Tag bordered={false} color="cyan">
                      Referral code applied : {_refCode}
                    </Tag>
                  )}
                </form>
              </div>
              <p className="my-2 text-sm opacity-90 cursor-pointer">
                have a referral code ?
                <span
                  className="text-[#FE342B]"
                  onClick={() => setReferralInput(!referralInput)}
                >
                  {referralInput ? "Close" : "Tap here"}
                </span>
              </p>
              {referralInput && (
                <>
                  <motion.input
                    value={_refCode}
                    animate={{ y: [-10, 0], opacity: [0, 1] }}
                    id="mob"
                    type="text"
                    className="p-2 my-1 rounded-xl border border-gray-500 w-[70%] md:w-[50%]"
                    onChange={handleReferralCodeChange}
                    placeholder="Enter referral code here"
                  />
                  <br />
                </>
              )}
              <button
                className="font-semibold text-sm mb-3 m-1 text-white rounded-lg bg-[#FE342B] hover:bg-[#383736] transition-all duration-300 p-2 px-4"
                onClick={handleSubmit}
              >
                Submit
              </button>
              {/* <div>
            Already Have an Account?{" "}
            <Link href={"/auth/login"} className="text-blue-700">
              Login
            </Link>
          </div> */}
            </div>
          </div>
        </div>
      )}
    </>
  );
};

export default SignUpWithMob;
