import { api } from "@/lib/api"
import type { CreateStylistPayload, StylistsResponse, Stylist } from "@/types/stylists"

export const createStylist = ["stylists", "create"]
export const getStylists = ["stylists", "list"]
export const getStylistById = (id: string) => ["stylists", "detail", id]
export const getStylistsByService = (serviceId: string) => ["stylists", "service", serviceId]

export async function createNewStylist(payload: CreateStylistPayload) {
  const { data } = await api.post("/stylists", payload)
  return data
}

export async function fetchStylists(filter?: "all" | "active" | "offDuty"): Promise<StylistsResponse> {
  let url = "/stylists"
  if (filter === "active") {
    url += "?active=true"
  } else if (filter === "offDuty") {
    url += "?onVacation=true"
  }
  const { data } = await api.get(url)
  return data
}

export async function fetchStylistsByService(serviceId: string): Promise<Stylist[]> {
  const { data } = await api.get(`/stylists/service/${serviceId}`)
  return data
}


export async function fetchStylistById(id: string): Promise<Stylist> {
  const { data } = await api.get(`/stylists/${id}`)
  return data
}

export async function updateStylist(id: string, payload: Partial<CreateStylistPayload>) {
  const { data } = await api.patch(`/stylists/${id}`, payload)
  return data
}

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


export async function uploadStylistImage(id: string, imageFile: File) {
  const formData = new FormData()
  formData.append("image", imageFile)

  const { data } = await api.post(`/stylists/${id}/images`, formData, {
    headers: {
      "Content-Type": "multipart/form-data",
    },
  })
  return data
}

export async function addVacation(id: string, payload: any) {
  const { data } = await api.post(`/stylists/${id}/vacations`, payload)
  return data
}

export async function deleteVacation(vacationId: string) {
  const { data } = await api.delete(`/stylists/vacation/${vacationId}`)
  return data
}
