pmtool / src /services /leaveBalanceApi.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
6.6 kB
import { LeaveBalance } from '@/types';
import apiClient from '@/lib/api/axios-instance';
import { createHeaders } from '@/lib/api';
import { isAxiosError } from 'axios';
class LeaveBalanceApi {
private baseUrl = '/api/LeaveBalance';
async getAll(): Promise<LeaveBalance[]> {
try {
console.log('LeaveBalanceApi: Fetching all leave balances');
const response = await apiClient.get(this.baseUrl);
console.log('LeaveBalanceApi: Successfully fetched all leave balances');
return response.data || [];
} catch (error) {
if (isAxiosError(error)) {
console.error('LeaveBalanceApi: Error fetching all leave balances:', error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error('LeaveBalanceApi: Unknown error fetching all leave balances:', error);
}
return [];
}
}
async getByEmployeeIdAndYear(employeeId: number, year: number): Promise<LeaveBalance[]> {
try {
console.log(`LeaveBalanceApi: Fetching leave balance for employee ${employeeId} and year ${year}`);
const response = await apiClient.get(`${this.baseUrl}/employee/${employeeId}/year/${year}`);
console.log(`LeaveBalanceApi: Successfully fetched leave balance for employee ${employeeId}`);
return response.data || [];
} catch (error) {
if (isAxiosError(error)) {
console.error(`LeaveBalanceApi: Error fetching leave balance for employee ${employeeId}:`, error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error(`LeaveBalanceApi: Unknown error fetching leave balance for employee ${employeeId}:`, error);
}
return [];
}
}
async getByEmployeeId(employeeId: number): Promise<LeaveBalance[]> {
try {
console.log(`LeaveBalanceApi: Fetching all leave balances for employee ${employeeId}`);
const response = await apiClient.get(`${this.baseUrl}/employee/${employeeId}`);
console.log(`LeaveBalanceApi: Successfully fetched all leave balances for employee ${employeeId}`);
return response.data || [];
} catch (error) {
if (isAxiosError(error)) {
console.error(`LeaveBalanceApi: Error fetching all leave balances for employee ${employeeId}:`, error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error(`LeaveBalanceApi: Unknown error fetching all leave balances for employee ${employeeId}:`, error);
}
return [];
}
}
async getById(id: number): Promise<LeaveBalance | null> {
try {
console.log(`LeaveBalanceApi: Fetching leave balance with ID ${id}`);
const response = await apiClient.get(`${this.baseUrl}/${id}`);
console.log(`LeaveBalanceApi: Successfully fetched leave balance with ID ${id}`);
return response.data;
} catch (error) {
if (isAxiosError(error)) {
console.error(`LeaveBalanceApi: Error fetching leave balance with ID ${id}:`, error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error(`LeaveBalanceApi: Unknown error fetching leave balance with ID ${id}:`, error);
}
return null;
}
}
async create(leaveBalance: LeaveBalance): Promise<LeaveBalance | null> {
try {
console.log('LeaveBalanceApi: Creating new leave balance', leaveBalance);
const response = await apiClient.post(this.baseUrl, leaveBalance, {
headers: createHeaders(true),
withCredentials: false
});
console.log('LeaveBalanceApi: Successfully created leave balance', response.data);
return response.data;
} catch (error) {
if (isAxiosError(error)) {
console.error('LeaveBalanceApi: Error creating leave balance:', error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error('LeaveBalanceApi: Unknown error creating leave balance:', error);
}
throw error;
}
}
async update(id: number, leaveBalance: LeaveBalance): Promise<LeaveBalance | null> {
try {
console.log(`LeaveBalanceApi: Updating leave balance ${id}`, leaveBalance);
const response = await apiClient.put(`${this.baseUrl}/${id}`, leaveBalance);
console.log(`LeaveBalanceApi: Successfully updated leave balance ${id}`, response.data);
return response.data;
} catch (error) {
if (isAxiosError(error)) {
console.error(`LeaveBalanceApi: Error updating leave balance ${id}:`, error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
console.error('LeaveBalanceApi: Response data:', error.response.data);
}
} else {
console.error(`LeaveBalanceApi: Unknown error updating leave balance ${id}:`, error);
}
throw error;
}
}
async delete(id: number): Promise<boolean> {
try {
console.log(`LeaveBalanceApi: Deleting leave balance ${id}`);
await apiClient.delete(`${this.baseUrl}/${id}`);
console.log(`LeaveBalanceApi: Successfully deleted leave balance ${id}`);
return true;
} catch (error) {
if (isAxiosError(error)) {
console.error(`LeaveBalanceApi: Error deleting leave balance ${id}:`, error.message);
if (error.response) {
console.error('LeaveBalanceApi: Response status:', error.response.status);
}
} else {
console.error(`LeaveBalanceApi: Unknown error deleting leave balance ${id}:`, error);
}
return false;
}
}
}
export const leaveBalanceApi = new LeaveBalanceApi();