import { api } from "@/lib/api"
import type { CreateServicePayload, CreateCategoryPayload } from "@/types/services"

export const createService = ["services", "create"]
export const getServices = ["services", "list"]
export const getCategorizedServices = ["services", "categorized"]
export const getServiceById = (id: string) => ["services", "detail", id]
export const createCategory = ["services", "category", "create"]
export const getCategories = ["services", "category", "list"]

export async function createNewCategory(payload: CreateCategoryPayload) {
  const { data } = await api.post("/services/category", payload)
  return data
}

export async function fetchCategories() {
  const { data } = await api.get("/services/categories/all")
  return data
}

export async function createNewService(payload: CreateServicePayload) {
  const { data } = await api.post("/services", payload)
  return data
}
export async function fetchServices(params?: any) {
  const { data } = await api.get("/services", { params })
  return data
}
export async function fetchCategorizedServices(params?: { page?: number; limit?: number }) {
  const { data } = await api.get("/services/categories/services", { params })
  return data
}
export async function removeService(id: string) {
  const { data } = await api.delete(`/services/${id}`)
  return data
}

export async function updateService(id: string, payload: CreateServicePayload) {
  const { data } = await api.patch(`/services/${id}`, payload)
  return data
}

export async function updateCategory(id: string, payload: CreateCategoryPayload) {
  const { data } = await api.patch(`/services/category/${id}`, payload)
  return data
}

export async function deleteCategory(id: string) {
  const { data } = await api.delete(`/services/category/${id}`)
  return data
}

export async function duplicateService(serviceId: string) {
  const { data } = await api.post("/services/duplicate", { serviceId })
  return data
}

export async function getServiceDetails(id: string) {
  const { data } = await api.get(`/services/${id}`)
  return data
}
