import { api } from "./client"

export type DocumentTemplate = {
  id: number
  title: string
  description: string
  category: string
  file_url: string | null
  file_name: string | null
  created_by: number | null
  created_by_username: string
  created_at: string
  updated_at: string
}

export function listDocumentTemplates(): Promise<DocumentTemplate[]> {
  return api.request("/document-templates/")
}

export function createDocumentTemplate(fd: FormData): Promise<DocumentTemplate> {
  return api.request("/document-templates/", {
    method: "POST",
    body: fd,
  })
}

export function updateDocumentTemplate(
  id: number,
  payload: { title?: string; description?: string; category?: string; file?: File },
): Promise<DocumentTemplate> {
  if (payload.file) {
    const fd = new FormData()
    if (payload.title !== undefined) fd.append("title", payload.title)
    if (payload.description !== undefined) fd.append("description", payload.description)
    if (payload.category !== undefined) fd.append("category", payload.category)
    fd.append("file", payload.file)
    return api.request(`/document-templates/${id}/`, { method: "PUT", body: fd })
  }
  return api.request(`/document-templates/${id}/`, {
    method: "PATCH",
    body: JSON.stringify(payload),
    headers: { "Content-Type": "application/json" },
  })
}

export function deleteDocumentTemplate(id: number): Promise<void> {
  return api.request(`/document-templates/${id}/`, { method: "DELETE" })
}
