"use server";

import { revalidatePath } from "next/cache";
import { db } from "@/lib/db";

// ── Hero Slides ────────────────────────────────────────────────────────────────

export async function saveHeroSlideAction(formData: FormData) {
  const id = formData.get("id") as string | null;
  const data = {
    imageUrl: (formData.get("imageUrl") as string).trim(),
    badge: (formData.get("badge") as string | null)?.trim() || null,
    badgeIcon: (formData.get("badgeIcon") as string | null)?.trim() || "jobs",
    title: (formData.get("title") as string | null)?.trim() || null,
    highlight: (formData.get("highlight") as string | null)?.trim() || null,
    description: (formData.get("description") as string | null)?.trim() || null,
    ctaLabel: (formData.get("ctaLabel") as string | null)?.trim() || null,
    ctaHref: (formData.get("ctaHref") as string | null)?.trim() || null,
    ctaSecondLabel: (formData.get("ctaSecondLabel") as string | null)?.trim() || null,
    ctaSecondHref: (formData.get("ctaSecondHref") as string | null)?.trim() || null,
    sortOrder: parseInt(formData.get("sortOrder") as string) || 0,
    isActive: formData.get("isActive") === "true",
  };

  if (!data.imageUrl) return { error: "Image URL is required." };

  if (id) {
    await db.heroSlide.update({ where: { id }, data });
  } else {
    await db.heroSlide.create({ data });
  }

  revalidatePath("/");
  revalidatePath("/admin/home");
  return { ok: true };
}

export async function deleteHeroSlideAction(id: string) {
  await db.heroSlide.delete({ where: { id } });
  revalidatePath("/");
  revalidatePath("/admin/home");
  return { ok: true };
}

export async function toggleHeroSlideActiveAction(id: string, isActive: boolean) {
  await db.heroSlide.update({ where: { id }, data: { isActive } });
  revalidatePath("/");
  revalidatePath("/admin/home");
  return { ok: true };
}
