import ProductData from "@comp/AppsComponent/ProductData/page";
import { notFound, redirect } from "next/navigation";

async function getData(id) {
  const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/product/${id}`, {
    cache: "no-cache",
  });
  const post = await res.json();
  // console.log("object11", post);

  // // Check if the response status is 404
  if (post.statusCode === 404) {
    // Navigate to the custom 404 page
    return notFound(); // Exit the function
  }
  return post;
}

export async function generateMetadata({ params }) {
  const data = await getData(params.id[0]);

  const decodedName = decodeURIComponent(params.id[1]);
  const imageUrl = new URL(
    data?.product?.files && data?.product?.files[0]?.fileLocation,
    process.env.STORAGE_URL
  );

  const metadataUrl = new URL(
    `products/${params.id[0]}/${data?.product?.persianName}`,
    process.env.NEXT_PUBLIC_APP_URL
  );

  // Structured Data
  const productSchema = {
    "@context": "https://schema.org/",
    "@type": "Product",
    name: data?.product?.persianName,
    image: imageUrl.toString() || "https://example.com/default-image.jpg", // Provide a default image if none exists
    description:
      data?.product?.summery ||
      `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
    sku: data?.product?.id,
    brand: {
      "@type": "Brand",
      name: data?.product?.brandName || "نام برند",
    },
    offers: {
      "@type": "Offer",
      url: metadataUrl.toString(),
      priceCurrency: "IRR",
      price: (data?.product?.costWithDiscount / 10).toString() || "0",
      itemCondition: "https://schema.org/NewCondition",
      availability:
        data?.product?.stock > 0
          ? "https://schema.org/InStock"
          : "https://schema.org/OutOfStock",
      seller: {
        "@type": "Organization",
        name: "Vesmeh Store",
      },
    },
    aggregateRating: {
      "@type": "AggregateRating",
      ratingValue:
        data?.product?.reviews?.length > 0
          ? (
              data?.product?.reviews?.reduce(
                (acc, review) => acc + review.rating,
                0
              ) / data?.product?.reviews.length
            ).toFixed(1)
          : "4.5", // Default rating if no reviews
      reviewCount: data?.product?.reviews?.length.toString() || "0",
    },
  };

  return {
    title: !!data?.product.metaTags.find((e) => e.type == "title")
      ? data?.product.metaTags.find((e) => e.type == "title")?.value
      : data?.product?.persianName,
    description: !!data?.product.metaTags.find((e) => e.type == "description")
      ? data?.product.metaTags.find((e) => e.type == "description")?.value
      : data?.product?.summery != ""
      ? data?.product?.summery
      : `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,

    metadataBase: metadataUrl,
    product_id_meta: data?.product?.id,
    alternates: {
      canonical: metadataUrl,
    },

    openGraph: {
      title: !!data?.product.metaTags.find((e) => e.type == "title")
        ? data?.product.metaTags.find((e) => e.type == "title")?.value
        : data?.product?.persianName,
      description: !!data?.product.metaTags.find((e) => e.type == "description")
        ? data?.product.metaTags.find((e) => e.type == "description")?.value
        : data?.product?.summery != ""
        ? data?.product?.summery
        : `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
      images: [imageUrl.toString()],
      url: metadataUrl,
      type: "website",
      locale: "fa-IR",
    },
    twitter: {
      site: "@vesmehstore",
      title: !!data?.product.metaTags.find((e) => e.type == "title")
        ? data?.product.metaTags.find((e) => e.type == "title")?.value
        : data?.product?.persianName,
      description: !!data?.product.metaTags.find((e) => e.type == "description")
        ? data?.product.metaTags.find((e) => e.type == "description")?.value
        : data?.product?.summery != ""
        ? data?.product?.summery
        : `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
      creator: "@vesmehstore",
    },
    other: {
      product_id: data?.product?.id,
      product_name: data?.product?.persianName,
      product_price: data?.product?.costWithDiscount / 10,
      product_old_price: data?.product?.cost / 10,
      availability: data?.product?.stock > 0 ? "instock" : "outofstock",
      guarantee: data?.product?.warranty || "ضمانت دارد",
      ratingValue:
        data?.product?.reviews?.length > 0
          ? (
              data?.product?.reviews.reduce(
                (acc, review) => acc + review.rating,
                0
              ) / data?.product?.reviews.length
            ).toFixed(1)
          : "4.5", // Default rating if no reviews
    },
  };
}

const Page = async ({ params }) => {
  const data = await getData(params.id[0]);
  const imageUrl = new URL(
    data?.product?.files && data?.product?.files[0]?.fileLocation,
    process.env.STORAGE_URL
  );

  const structuredData = {
    "@context": "https://schema.org",
    "@type": "Product",
    name: data?.product?.persianName,
    image: imageUrl,
    description: `  خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
  };

  return (
    <>
      <ProductData params={params} data={data} />
      <script
        key="structured-data"
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(structuredData),
        }}
      />
    </>
  );
};

export default Page;
