mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 17:02:05 +00:00
- Fixed Redux slice errors - All query keys now use constants from src/constants/ - Converted LoginPage to CSS Modules - Consolidated documentation
69 lines
1.7 KiB
JavaScript
69 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);
|
|
},
|
|
});
|
|
}
|