import { useEffect, useState } from "react";
import axios from "axios";
import { useRouter } from "next/router";
import Cookies from "js-cookie";
import { SyncOutlined } from "@ant-design/icons";
import { Spin } from "antd";
import PaymentStatus from "./paymentStatus";
import toast from "react-hot-toast";
import ConfirmOrder from "./confirmOrder";
import { userActivity } from "@/components/commonFunctions/userActivity";
import { useSelector } from "react-redux";
import { RootState } from "@/Redux/store";
import Head from "next/head";
import Image from "next/image";
// import { orderInterface } from '@/INTERFACES/order';

const apiKey = process.env.API_KEY;

const antIcon = <SyncOutlined style={{ fontSize: 44, color: "#fff" }} spin />;

const PaymentCallback = () => {
  const router = useRouter();
  const { reference } = router.query;

  const _loggedIn_user = useSelector((state: RootState) => state.user.user);

  const [isOrderPlace, setOrderPlace] = useState<any>();
  const [loading, setLoading] = useState(true);

  const authToken = Cookies.get("jazz_token");

  // Configure the Axios instance with the authorization header
  const axiosInstance = axios.create({
    baseURL: "https://api.jazzagain.com/public/index.php",
    headers: {
      authorization: `Bearer ${authToken}`,
    },
  });

  // useEffect(() => {
  //   if (reference) {
  //     const orderResponse = async () => {
  //       try {
  //         const res = await axiosInstance.get(`/api/user/orders/${reference}/edit`);
  //         console.log("order --- ",res)
  //         setOrderPlace(res.data.order);
  //         setLoading(!loading);
  //       } catch (error) {
  //         console.error("Error fetching or processing data:", error);
  //         return toast.error("Error fetching data !")
  //       }
  //     };
  //     orderResponse();
  //   }
  // }, [reference]);

  useEffect(() => {
    if (reference) {
      const verifyPayment = async () => {
        try {
          const response = await axios.get(
            `https://api.paystack.co/transaction/verify/${reference}`,
            {
              headers: {
                Authorization: `Bearer ${apiKey}`,
              },
            }
          );

          const paymentStatus = response.data.data.status;
          if (paymentStatus === "success") {
            // console.log(response)
            userActivity(
              _loggedIn_user?._id,
              "website",
              "Payment page",
              {
                purchase: "completed",
              },
              navigator.userAgent
            );
            const { metadata } = response.data.data;
            console.log("META-DATA", metadata);
            try {
              const res = await axiosInstance.get(
                `/api/user/orders/${metadata.order_id}/edit`
              );
              console.log("order --- ", res);
              setOrderPlace(res.data.order);
              setLoading(!loading);
            } catch (error) {
              console.error("Error fetching or processing data:", error);
              return toast.error("Error fetching data !");
            }
          } else {
            // Payment failed or was not successful
            console.log(response);
          }
        } catch (error) {
          console.error("Error verifying payment:", error);
        }
      };

      verifyPayment();
    }
  }, [reference]);

  // useEffect(()=>{
  //   if(reference){
  //     const orderResponse = async() => {
  //       let res = await axiosInstance.get(`/api/user/orders/${reference}/edit`)
  //       console.log(res.data)
  //       setOrderPlace(res.data.order)
  //       setLoading(!loading)
  //     }
  //     orderResponse();
  //   }

  // },[reference])

  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', 'PaymentCallback');
            `,
          }}
        />
        <noscript>
          <Image
            height="1"
            width="1"
            alt=""
            style={{ display: "none" }}
            src="https://www.facebook.com/tr?id=360254480441103&ev=PaymentCallback&noscript=1"
          />
        </noscript>
      </Head>

      {loading ? (
        <div className="fixed inset-0 flex items-center justify-center bg-black bg-opacity-70 z-50 ">
          <div className="text-white text-2xl text-center">
            <Spin indicator={antIcon} className="m-4" />
            <br />
            Your transaction is in process...
          </div>
        </div>
      ) : (
        // <PaymentStatus details={isOrderPlace}/>
        <ConfirmOrder details={isOrderPlace} />
      )}
    </>
  );
};

export default PaymentCallback;
