mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 22:52:06 +00:00
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
|
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||
|
|
import { pmSchedulesApi } from '../../lib/api/services';
|
||
|
|
import { toast } from 'react-toastify';
|
||
|
|
import {
|
||
|
|
PM_SCHEDULES_LIST,
|
||
|
|
PM_SCHEDULES_DETAIL,
|
||
|
|
API_SUCCESS_MESSAGE,
|
||
|
|
API_ERROR_MESSAGE,
|
||
|
|
} from '../../constants';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to fetch PM schedules list
|
||
|
|
*/
|
||
|
|
export function usePMSchedules(params = {}) {
|
||
|
|
return useQuery({
|
||
|
|
queryKey: [PM_SCHEDULES_LIST, params],
|
||
|
|
queryFn: () => pmSchedulesApi.getList(params),
|
||
|
|
keepPreviousData: true,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to fetch a single PM schedule by ID
|
||
|
|
*/
|
||
|
|
export function usePMSchedule(id, options = {}) {
|
||
|
|
return useQuery({
|
||
|
|
queryKey: [PM_SCHEDULES_DETAIL, id],
|
||
|
|
queryFn: () => pmSchedulesApi.getById(id),
|
||
|
|
enabled: !!id,
|
||
|
|
...options,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to save (create/update) a PM schedule
|
||
|
|
*/
|
||
|
|
export function useSavePMSchedule() {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
|
||
|
|
return useMutation({
|
||
|
|
mutationFn: (data) => pmSchedulesApi.save(data),
|
||
|
|
onSuccess: () => {
|
||
|
|
queryClient.invalidateQueries([PM_SCHEDULES_LIST]);
|
||
|
|
queryClient.invalidateQueries([PM_SCHEDULES_DETAIL]);
|
||
|
|
toast.success('PM schedule saved successfully!');
|
||
|
|
},
|
||
|
|
onError: (error) => {
|
||
|
|
toast.error(error.message || API_ERROR_MESSAGE);
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to delete a PM schedule
|
||
|
|
*/
|
||
|
|
export function useDeletePMSchedule() {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
|
||
|
|
return useMutation({
|
||
|
|
mutationFn: (id) => pmSchedulesApi.delete(id),
|
||
|
|
onSuccess: () => {
|
||
|
|
queryClient.invalidateQueries([PM_SCHEDULES_LIST]);
|
||
|
|
toast.success('PM schedule deleted successfully!');
|
||
|
|
},
|
||
|
|
onError: (error) => {
|
||
|
|
toast.error(error.message || API_ERROR_MESSAGE);
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|