pmtool / src /services /holidayApi.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
5.15 kB
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();