pmtool / src /services /leaveMasterApi.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
4.72 kB
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 [];
}
}
};