"use server";

import { revalidatePath } from "next/cache";
import { api } from "../../../convex/_generated/api";
import { m } from "@/lib/convex-server";
import { run, type ActionResult } from "@/lib/action";

export async function generateContract(reservationId: string): Promise<ActionResult<{ id: string; code: string; version: number }>> {
  return run(async () => {
    const r = await m(api.contracts.generate, { reservationId });
    revalidatePath(`/reservations/${reservationId}`);
    revalidatePath("/documents");
    return r;
  });
}

export async function markContractSigned(contractId: string, signatureData?: string): Promise<ActionResult<undefined>> {
  return run(async () => {
    await m(api.contracts.markSigned, { contractId, signatureData });
    revalidatePath(`/contracts/${contractId}`);
    revalidatePath("/documents");
    return undefined;
  });
}
