import { API_BASE_URL } from '@/shared/constants'; import apiClient from '../api-client'; import { IServerResponse } from '@/types/common.types'; import { IHolidayType, IOrganizationHoliday, ICountryHoliday, IAvailableCountry, ICreateHolidayRequest, IUpdateHolidayRequest, IImportCountryHolidaysRequest, IHolidayCalendarEvent, } from '@/types/holiday/holiday.types'; const rootUrl = `${API_BASE_URL}/holidays`; export const holidayApiService = { // Holiday types getHolidayTypes: async (): Promise> => { const response = await apiClient.get>(`${rootUrl}/types`); return response.data; }, // Organization holidays getOrganizationHolidays: async (year?: number): Promise> => { const params = year ? `?year=${year}` : ''; const response = await apiClient.get>(`${rootUrl}/organization${params}`); return response.data; }, createOrganizationHoliday: async (data: ICreateHolidayRequest): Promise> => { const response = await apiClient.post>(`${rootUrl}/organization`, data); return response.data; }, updateOrganizationHoliday: async (id: string, data: IUpdateHolidayRequest): Promise> => { const response = await apiClient.put>(`${rootUrl}/organization/${id}`, data); return response.data; }, deleteOrganizationHoliday: async (id: string): Promise> => { const response = await apiClient.delete>(`${rootUrl}/organization/${id}`); return response.data; }, // Country holidays getAvailableCountries: async (): Promise> => { const response = await apiClient.get>(`${rootUrl}/countries`); return response.data; }, getCountryHolidays: async (countryCode: string, year?: number): Promise> => { const params = year ? `?year=${year}` : ''; const response = await apiClient.get>(`${rootUrl}/countries/${countryCode}${params}`); return response.data; }, importCountryHolidays: async (data: IImportCountryHolidaysRequest): Promise> => { const response = await apiClient.post>(`${rootUrl}/import`, data); return response.data; }, // Calendar view getHolidayCalendar: async (year: number, month: number): Promise> => { const response = await apiClient.get>(`${rootUrl}/calendar?year=${year}&month=${month}`); return response.data; }, // Populate holidays populateCountryHolidays: async (): Promise> => { const response = await apiClient.post>(`${rootUrl}/populate`); return response.data; }, };