import { api } from "@/lib/api";
import type { ApiEnvelope } from "@/types/api";
import type { AdminArticle, AdminSlide, AdminTemoignage, AdminPartenaire } from "@/types/admin";

// ── SLIDES ──
export async function getAdminSlides(): Promise<AdminSlide[]> {
  const { data } = await api.get<ApiEnvelope<AdminSlide[]>>("/admin/slides");
  return data.data;
}
export async function createAdminSlide(payload: Partial<AdminSlide>): Promise<AdminSlide> {
  const { data } = await api.post<ApiEnvelope<AdminSlide>>("/admin/slides", payload);
  return data.data;
}
export async function updateAdminSlide(id: number, payload: Partial<AdminSlide>): Promise<AdminSlide> {
  const { data } = await api.put<ApiEnvelope<AdminSlide>>(`/admin/slides/${id}`, payload);
  return data.data;
}
export async function deleteAdminSlide(id: number): Promise<void> {
  await api.delete(`/admin/slides/${id}`);
}

// ── ARTICLES ──
export async function getAdminArticles(): Promise<AdminArticle[]> {
  const { data } = await api.get<ApiEnvelope<AdminArticle[]>>("/admin/articles");
  return data.data;
}
export async function createAdminArticle(payload: { titre: string; contenu: string; resume?: string; image_url?: string; publie?: boolean }): Promise<AdminArticle> {
  const { data } = await api.post<ApiEnvelope<AdminArticle>>("/admin/articles", payload);
  return data.data;
}
export async function updateAdminArticle(id: number, payload: Partial<AdminArticle & { contenu: string; image_url: string }>): Promise<AdminArticle> {
  const { data } = await api.put<ApiEnvelope<AdminArticle>>(`/admin/articles/${id}`, payload);
  return data.data;
}
export async function deleteAdminArticle(id: number): Promise<void> {
  await api.delete(`/admin/articles/${id}`);
}

// ── TÉMOIGNAGES ──
export async function getAdminTemoignages(): Promise<AdminTemoignage[]> {
  const { data } = await api.get<ApiEnvelope<AdminTemoignage[]>>("/admin/temoignages");
  return data.data;
}
export async function createAdminTemoignage(payload: Partial<AdminTemoignage>): Promise<AdminTemoignage> {
  const { data } = await api.post<ApiEnvelope<AdminTemoignage>>("/admin/temoignages", payload);
  return data.data;
}
export async function updateAdminTemoignage(id: number, payload: Partial<AdminTemoignage>): Promise<AdminTemoignage> {
  const { data } = await api.put<ApiEnvelope<AdminTemoignage>>(`/admin/temoignages/${id}`, payload);
  return data.data;
}
export async function deleteAdminTemoignage(id: number): Promise<void> {
  await api.delete(`/admin/temoignages/${id}`);
}

// ── PARTENAIRES ──
export async function getAdminPartenaires(): Promise<AdminPartenaire[]> {
  const { data } = await api.get<ApiEnvelope<AdminPartenaire[]>>("/admin/partenaires");
  return data.data;
}
export async function createAdminPartenaire(payload: Partial<AdminPartenaire & { logo_url: string; site_web: string }>): Promise<AdminPartenaire> {
  const { data } = await api.post<ApiEnvelope<AdminPartenaire>>("/admin/partenaires", payload);
  return data.data;
}
export async function updateAdminPartenaire(id: number, payload: Partial<AdminPartenaire & { logo_url: string; site_web: string }>): Promise<AdminPartenaire> {
  const { data } = await api.put<ApiEnvelope<AdminPartenaire>>(`/admin/partenaires/${id}`, payload);
  return data.data;
}
export async function deleteAdminPartenaire(id: number): Promise<void> {
  await api.delete(`/admin/partenaires/${id}`);
}
