import { apiGet, apiPost, apiPut } from "@/api/api"; import { API_PATHS } from "@/api/api-paths"; import { handleApiResponse } from "@/api/handle-api-response"; import { mapService, mapServices } from "@/domain/services/mappers/service-mapper"; import type { Service, ServiceInput } from "@/domain/services/types/service"; const SERVICE_WORK_ORDER_TYPE_API = { PM: 2, Emergency: 3, Reactive: 6, } as const; function toApiInput(input: ServiceInput) { return { ...input, supportedWorkOrderTypes: input.supportedWorkOrderTypes.map( (type) => SERVICE_WORK_ORDER_TYPE_API[type], ), }; } export const servicesApi = { getAll: async (isActive?: boolean): Promise => { const data = await apiGet(API_PATHS.services.list, { searchParams: isActive === undefined ? undefined : { isActive }, }); return mapServices(handleApiResponse(data)); }, create: async (input: ServiceInput): Promise => { const data = await apiPost(API_PATHS.services.list, toApiInput(input)); return mapService(handleApiResponse(data)); }, update: async (id: string | number, input: ServiceInput): Promise => { const data = await apiPut(API_PATHS.services.byId(id), toApiInput(input)); return mapService(handleApiResponse(data)); }, deactivate: async (id: string | number): Promise => { await apiPost(API_PATHS.services.deactivate(id)); }, };