Spaces:
Sleeping
Sleeping
| import { LeaveMaster, LeaveMasterCreateRequest, LeaveMasterUpdateRequest } from '../types'; | |
| import apiClient from '@/lib/api/axios-instance'; | |
| import { createHeaders } from '@/lib/api'; | |
| import { API_BASE_URL } from '../config'; | |
| import axios from 'axios'; | |
| export const leaveMasterApi = { | |
| getAll: async (): Promise<LeaveMaster[]> => { | |
| try { | |
| console.log('LeaveMasterApi: Fetching all leave types'); | |
| const response = await apiClient.get(`/api/LeavesMaster`); | |
| console.log(`LeaveMasterApi: Successfully fetched ${response.data.length} leave types`); | |
| return response.data; | |
| } catch (error) { | |
| console.error('LeaveMasterApi: Error fetching leave types:', error); | |
| return []; | |
| } | |
| }, | |
| getById: async (id: number): Promise<LeaveMaster | null> => { | |
| try { | |
| console.log(`LeaveMasterApi: Fetching leave type with ID ${id}`); | |
| const response = await apiClient.get(`/api/LeavesMaster/${id}`); | |
| console.log(`LeaveMasterApi: Successfully fetched leave type with ID ${id}`); | |
| return response.data; | |
| } catch (error) { | |
| console.error(`LeaveMasterApi: Error fetching leave type with ID ${id}:`, error); | |
| return null; | |
| } | |
| }, | |
| getActive: async (): Promise<LeaveMaster[]> => { | |
| try { | |
| console.log('LeaveMasterApi: Fetching active leave types'); | |
| const response = await apiClient.get(`/api/LeavesMaster/active`); | |
| console.log(`LeaveMasterApi: Successfully fetched ${response.data.length} active leave types`); | |
| return response.data; | |
| } catch (error) { | |
| console.error('LeaveMasterApi: Error fetching active leave types:', error); | |
| return []; | |
| } | |
| }, | |
| create: async (leaveMaster: LeaveMasterCreateRequest): Promise<LeaveMaster | null> => { | |
| try { | |
| console.log('LeaveMasterApi: Creating new leave type', leaveMaster); | |
| const response = await apiClient.post(`/api/LeavesMaster`, leaveMaster); | |
| console.log('LeaveMasterApi: Successfully created new leave type', response.data); | |
| return response.data; | |
| } catch (error) { | |
| console.error('LeaveMasterApi: Error creating leave type:', error); | |
| throw error; | |
| } | |
| }, | |
| update: async (id: number, leaveMaster: LeaveMasterUpdateRequest): Promise<LeaveMaster | null> => { | |
| try { | |
| console.log(`LeaveMasterApi: Updating leave type with ID ${id}`, leaveMaster); | |
| const response = await apiClient.put(`/api/LeavesMaster/${id}`, leaveMaster); | |
| if (response.status === 204) { | |
| console.log(`LeaveMasterApi: Successfully updated leave type with ID ${id}, but no content returned.`); | |
| return null; // or return any other appropriate value when there's no content | |
| } else { | |
| console.log(`LeaveMasterApi: Successfully updated leave type with ID ${id}`, response.data); | |
| return response.data; | |
| } | |
| } catch (error) { | |
| console.error(`LeaveMasterApi: Error updating leave type with ID ${id}:`, error); | |
| throw error; | |
| } | |
| }, | |
| delete: async (id: number): Promise<boolean> => { | |
| try { | |
| console.log(`LeaveMasterApi: Deleting leave type with ID ${id}`); | |
| await apiClient.delete(`/api/LeavesMaster/${id}`); | |
| console.log(`LeaveMasterApi: Successfully deleted leave type with ID ${id}`); | |
| return true; | |
| } catch (error) { | |
| console.error(`LeaveMasterApi: Error deleting leave type with ID ${id}:`, error); | |
| throw error; | |
| } | |
| }, | |
| toggleStatus: async (id: number, isActive: boolean): Promise<LeaveMaster | null> => { | |
| try { | |
| console.log(`LeaveMasterApi: Toggling status to ${isActive} for leave type with ID ${id}`); | |
| const response = await apiClient.patch(`/api/LeavesMaster/${id}/status`, { isActive }, { | |
| headers: createHeaders(true), | |
| withCredentials: false | |
| }); | |
| console.log(`LeaveMasterApi: Successfully toggled status for leave type with ID ${id}`, response.data); | |
| return response.data; | |
| } catch (error) { | |
| console.error(`LeaveMasterApi: Error toggling status for leave type with ID ${id}:`, error); | |
| throw error; | |
| } | |
| }, | |
| getByRole: async (roleId: number): Promise<LeaveMaster[]> => { | |
| try { | |
| console.log(`LeaveMasterApi: Fetching leave types for role ID ${roleId}`); | |
| const response = await apiClient.get(`/api/LeavesMaster/role/${roleId}`); | |
| console.log(`LeaveMasterApi: Successfully fetched ${response.data.length} leave types for role ID ${roleId}`); | |
| return response.data; | |
| } catch (error) { | |
| console.error(`LeaveMasterApi: Error fetching leave types for role ID ${roleId}:`, error); | |
| return []; | |
| } | |
| } | |
| }; | |