import { client } from "@/utils/api"; import { unwrap } from "@/utils/endpoint"; import { URL_CONSTANTS } from "@/constants/URLS"; import type { ApiResponse } from "@/types/apiResponse"; import type { CreateDropdownOptionDto, CreateDropdownSettingDto, DropdownOption, DropdownSetting, UpdateDropdownOptionDto, UpdateDropdownSettingDto, } from "@/types/dropdownSettings"; const BASE = URL_CONSTANTS.DROPDOWN_SETTINGS.BASE; export const dropdownSettingsService = { list: async (): Promise => { const response = await client.get>(BASE); return unwrap(response.data); }, getById: async (id: string): Promise => { const response = await client.get>( URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id), ); return unwrap(response.data); }, getByCode: async (code: string): Promise => { const response = await client.get>( URL_CONSTANTS.DROPDOWN_SETTINGS.BY_CODE(code), ); return unwrap(response.data); }, create: async ( payload: CreateDropdownSettingDto, ): Promise => { const response = await client.post>( BASE, payload, ); return unwrap(response.data); }, update: async ( id: string, payload: UpdateDropdownSettingDto, ): Promise => { const response = await client.patch>( URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id), payload, ); return unwrap(response.data); }, remove: async (id: string): Promise => { await client.delete(URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id)); }, replaceOptions: async ( id: string, options: CreateDropdownOptionDto[], ): Promise => { const response = await client.put>( URL_CONSTANTS.DROPDOWN_SETTINGS.OPTIONS(id), options, ); return unwrap(response.data); }, addOption: async ( id: string, payload: CreateDropdownOptionDto, ): Promise => { const response = await client.post>( URL_CONSTANTS.DROPDOWN_SETTINGS.OPTIONS(id), payload, ); return unwrap(response.data); }, updateOption: async ( optionId: string, payload: UpdateDropdownOptionDto, ): Promise => { const response = await client.patch>( URL_CONSTANTS.DROPDOWN_SETTINGS.OPTION_BY_ID(optionId), payload, ); return unwrap(response.data); }, removeOption: async (optionId: string): Promise => { await client.delete(URL_CONSTANTS.DROPDOWN_SETTINGS.OPTION_BY_ID(optionId)); }, };