Spaces:
Sleeping
Sleeping
| import axios from 'axios'; | |
| import { API_BASE_URL } from '@/config'; | |
| import apiClient from '@/lib/api/axios-instance'; | |
| import { createHeaders } from '@/lib/api'; | |
| import { Holiday, HolidayCreateRequest, HolidayUpdateRequest } from '@/types'; | |
| class HolidayApi { | |
| private baseUrl = `/api/Holiday`; | |
| async getAll(): Promise<Holiday[]> { | |
| try { | |
| console.log('HolidayApi: Fetching all holiday records from', this.baseUrl); | |
| const response = await apiClient.get(this.baseUrl, { | |
| headers: createHeaders(true), | |
| withCredentials: false | |
| }); | |
| if (!response.data) { | |
| console.warn('HolidayApi: No data in response'); | |
| return []; | |
| } | |
| if (!Array.isArray(response.data)) { | |
| console.warn('HolidayApi: Response is not an array', response.data); | |
| return []; | |
| } | |
| console.log(`HolidayApi: Successfully fetched ${response.data.length} holiday records`); | |
| return response.data; | |
| } catch (error) { | |
| if (apiClient.isAxiosError(error)) { | |
| console.error('HolidayApi: Axios error fetching holiday records:', error.message); | |
| if (error.response) { | |
| console.error('HolidayApi: Response status:', error.response.status); | |
| console.error('HolidayApi: Response data:', error.response.data); | |
| } else if (error.request) { | |
| console.error('HolidayApi: No response received from server'); | |
| } else { | |
| console.error('HolidayApi: Error setting up request:', error.message); | |
| } | |
| } else { | |
| console.error('HolidayApi: Unknown error fetching holiday records:', error); | |
| } | |
| return []; | |
| } | |
| } | |
| async getById(id: number): Promise<Holiday | null> { | |
| try { | |
| console.log(`HolidayApi: Fetching holiday record with ID ${id}`); | |
| const response = await apiClient.get(`${this.baseUrl}/${id}`); | |
| console.log(`HolidayApi: Successfully fetched holiday record with ID ${id}`); | |
| return response.data; | |
| } catch (error) { | |
| if (apiClient.isAxiosError(error)) { | |
| console.error(`HolidayApi: Error fetching holiday record ${id}:`, error.message); | |
| if (error.response) { | |
| console.error('HolidayApi: Response status:', error.response.status); | |
| } | |
| } else { | |
| console.error(`HolidayApi: Unknown error fetching holiday record ${id}:`, error); | |
| } | |
| return null; | |
| } | |
| } | |
| async create(holiday: HolidayCreateRequest): Promise<Holiday | null> { | |
| try { | |
| console.log('HolidayApi: Creating new holiday record', holiday); | |
| const response = await apiClient.post(this.baseUrl, holiday, { | |
| headers: createHeaders(true), | |
| withCredentials: false | |
| }); | |
| console.log('HolidayApi: Successfully created new holiday record', response.data); | |
| return response.data; | |
| } catch (error) { | |
| if (apiClient.isAxiosError(error)) { | |
| console.error('HolidayApi: Error creating holiday record:', error.message); | |
| if (error.response) { | |
| console.error('HolidayApi: Response status:', error.response.status); | |
| console.error('HolidayApi: Response data:', error.response.data); | |
| } | |
| } else { | |
| console.error('HolidayApi: Unknown error creating holiday record:', error); | |
| } | |
| return null; | |
| } | |
| } | |
| async update(id: number, holiday: HolidayUpdateRequest): Promise<Holiday | null> { | |
| try { | |
| console.log(`HolidayApi: Updating holiday record with ID ${id}`, holiday); | |
| const response = await apiClient.put(`${this.baseUrl}/${id}`, holiday); | |
| console.log(`HolidayApi: Successfully updated holiday record with ID ${id}`, response.data); | |
| return response.data; | |
| } catch (error) { | |
| if (apiClient.isAxiosError(error)) { | |
| console.error(`HolidayApi: Error updating holiday record ${id}:`, error.message); | |
| if (error.response) { | |
| console.error('HolidayApi: Response status:', error.response.status); | |
| console.error('HolidayApi: Response data:', error.response.data); | |
| } | |
| } else { | |
| console.error(`HolidayApi: Unknown error updating holiday record ${id}:`, error); | |
| } | |
| return null; | |
| } | |
| } | |
| async delete(id: number): Promise<boolean> { | |
| try { | |
| console.log(`HolidayApi: Deleting holiday record with ID ${id}`); | |
| const response = await apiClient.delete(`${this.baseUrl}/${id}`); | |
| console.log(`HolidayApi: Successfully deleted holiday record with ID ${id}`); | |
| return true; | |
| } catch (error) { | |
| if (apiClient.isAxiosError(error)) { | |
| console.error(`HolidayApi: Error deleting holiday record ${id}:`, error.message); | |
| if (error.response) { | |
| console.error('HolidayApi: Response status:', error.response.status); | |
| } | |
| } else { | |
| console.error(`HolidayApi: Unknown error deleting holiday record ${id}:`, error); | |
| } | |
| return false; | |
| } | |
| } | |
| } | |
| export const holidayApi = new HolidayApi(); | |