Spaces:
Sleeping
Sleeping
| 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(); |