"use server"

import { db } from "@/lib/db"
import { slugify } from "@/lib/utils"
import { revalidatePath } from "next/cache"
import { redirect } from "next/navigation"
import { z } from "zod"

const collaboratorSchema = z.object({
  name: z.string().min(1),
  role: z.enum(["Styliste", "Artiste", "Graphiste", "Agent IA", "Électronicien"]),
  isAI: z.coerce.boolean(),
  photo: z.string().optional(),
  universe: z.string().min(1),
  background: z.string().min(1),
  influences: z.string().min(1),
})

function parseForm(formData: FormData) {
  const parsed = collaboratorSchema.parse({
    name: formData.get("name"),
    role: formData.get("role"),
    isAI: formData.get("isAI") === "on",
    photo: formData.get("photo") || undefined,
    universe: formData.get("universe"),
    background: formData.get("background"),
    influences: formData.get("influences"),
  })
  return {
    name: parsed.name,
    slug: slugify(parsed.name),
    role: parsed.role,
    isAI: parsed.isAI,
    photo: parsed.isAI ? null : parsed.photo || null,
    universe: parsed.universe,
    background: parsed.background,
    influences: parsed.influences,
  }
}

export async function createCollaborator(formData: FormData) {
  const data = parseForm(formData)
  await db.collaborator.create({ data })
  revalidatePath("/admin/collaborators")
  redirect("/admin/collaborators")
}

export async function updateCollaborator(id: string, formData: FormData) {
  const data = parseForm(formData)
  await db.collaborator.update({ where: { id }, data })
  revalidatePath("/admin/collaborators")
  redirect("/admin/collaborators")
}

export async function deleteCollaborator(id: string) {
  await db.collaborator.delete({ where: { id } })
  revalidatePath("/admin/collaborators")
  redirect("/admin/collaborators")
}
