"use server";

import { Ancre } from "@prisma/client";
import { revalidatePath } from "next/cache";
import { z } from "zod";
import { exigerRole } from "@/lib/auth";
import { db } from "@/lib/db";

const schemaEtape = z.object({
  libelle: z.string().trim().min(2),
  responsable: z.string().trim().min(1),
  ancre: z
    .union([z.nativeEnum(Ancre), z.literal("")])
    .transform((v) => (v === "" ? null : v)),
  decalage: z.coerce.number().int().min(-365).max(365),
});

/** Modifie une étape du modèle ; s'applique aux dossiers créés ensuite. */
export async function modifierEtape(id: string, form: FormData) {
  await exigerRole("DIRECTEUR", "ADMIN");
  const donnees = schemaEtape.parse(Object.fromEntries(form.entries()));
  await db.etapeModele.update({ where: { id }, data: { ...donnees, ancreRepli: null, decalageRepli: 0 } });
  revalidatePath("/parametres/procedure");
}
