import Container from "@/components/elements/Container";
import { cookies } from "next/headers";
import InfinitePosts from "@/components/academy/InfinitePakage";
import { Metadata } from "next";
import AcademyFilter from "@/components/academy/AcademyFilter";

interface IProjectsProps {
  params: Promise<{ slug?: string[] }>;
  searchParams: Promise<{
    search?: string;
    category?: string;
    minPrice?: string;
    maxPrice?: string;
    hasOffer?: string;
    type?: string;
    sortBy?: string;
    sortOrder?: string;
  }>;
}

export async function generateMetadata({
  searchParams,
}: IProjectsProps): Promise<Metadata> {
  const filters = await searchParams;
  
  // خواندن مقادیر فیلترها (اگر خالی بود مقدار پیش‌فرض در نظر گرفته میشه)
  const categoryLabel = filters.category || "حوزه زیبایی";
  const typeLabel = filters.type ? ` به صورت ${filters.type}` : "";
  const descTypeLabel = filters.type ? ` بصورت ${filters.type}` : "";

  // مقادیر پیش‌فرض زمانی که هیچ فیلتری انتخاب نشده
  let title = "آموزش آنلاین انواع خدمات حوزه زیبایی و مدلینگ - مدستاگرام";
  let description = "آموزش آنلاین تخصصی و حرفه‌ای از انواع اساتید حوزه زیبایی در همه زمینه‌ها اعم از آرایشگری، مدلینگ و عکاسی - مدستاگرام";

  // اگر کاربر فیلتر "دسته بندی" یا "نوع" رو انتخاب کرده بود، متن‌ها داینامیک میشن
  if (filters.category || filters.type) {
    title = `آموزش آنلاین انواع خدمات ${categoryLabel}${typeLabel} - مدستاگرام`;
    description = `آموزش آنلاین تخصصی و حرفه ای خدمات ${categoryLabel}${descTypeLabel} در مدستاگرام`;
  }

  // ساخت آدرس URL داینامیک بر اساس فیلترها
  let canonicalUrl = "https://modstagram.com/academy";
  const queryParams = new URLSearchParams();
  if (filters.category) queryParams.append("category", filters.category);
  if (filters.type) queryParams.append("type", filters.type);
  
  const queryString = queryParams.toString();
  if (queryString) {
    canonicalUrl += `?${queryString}`;
  }

  return {
    title,
    description,
    alternates: {
      canonical: canonicalUrl,
    },
  };
}

export default async function Projects({
  searchParams,
}: {
  searchParams: Promise<{
    search?: string;
    category?: string;
    minPrice?: string;
    maxPrice?: string;
    hasOffer?: string;
    type?: string;
    sortBy?: string;
    sortOrder?: string;
  }>;
}) {
  const params = await searchParams;
  const cookieStore = await cookies();
  const token = cookieStore.get("token")?.value || "";

  const filters = {
    search: params.search || "",
    category: params.category || "",
    minPrice: params.minPrice ? Number(params.minPrice) : undefined,
    maxPrice: params.maxPrice ? Number(params.maxPrice) : undefined,
    hasOffer: params.hasOffer === "true",
    type: params.type || "",
    sortBy: params.sortBy || "createdAt",
    sortOrder: params.sortOrder || "desc",
  };

  return (
    <Container>
      <AcademyFilter />
      <InfinitePosts filters={filters} token={token} />
    </Container>
  );
}
