import { apiFetch } from "@/lib/api/server";
import type { EventCategory, KolaboraEvent, PaginatedResponse } from "@/types/event";

export interface EventListParams {
  search?: string;
  category?: string;
  city?: string;
  date?: string;
  sort?: "latest" | "oldest" | "upcoming" | "popular";
  page?: number;
}

export async function getEvents(params: EventListParams = {}) {
  const query = new URLSearchParams();
  for (const [key, value] of Object.entries(params)) {
    if (value !== undefined && value !== "") query.set(key, String(value));
  }
  const qs = query.toString();

  return apiFetch<PaginatedResponse<KolaboraEvent>>(`/events${qs ? `?${qs}` : ""}`);
}

export async function getEventBySlug(slug: string) {
  return apiFetch<{ data: KolaboraEvent }>(`/events/${slug}`);
}

export async function getEventCategories() {
  return apiFetch<{ data: EventCategory[] }>("/event-categories");
}

export async function getSignatureEvent() {
  return apiFetch<{ data: KolaboraEvent | null }>("/events/signature");
}
