150 lines
4.2 KiB
JavaScript
150 lines
4.2 KiB
JavaScript
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import { ServiceProjectRepository } from "../repositories/ServiceProjectRepository";
|
|
import showToast from "../services/toastService";
|
|
|
|
//#region Service Project
|
|
export const useServiceProjects = (pageSize, pageNumber) => {
|
|
return useQuery({
|
|
queryKey: ["serviceProjects", pageSize, pageNumber],
|
|
queryFn: async () => {
|
|
const response = await ServiceProjectRepository.GetServiceProjects(
|
|
pageSize,
|
|
pageNumber
|
|
);
|
|
return response.data;
|
|
},
|
|
});
|
|
};
|
|
export const useServiceProject = (projectId) => {
|
|
return useQuery({
|
|
queryKey: ["serviceProject", projectId],
|
|
queryFn: async () => {
|
|
const response = await ServiceProjectRepository.GetServiceProject(
|
|
projectId
|
|
);
|
|
return response.data;
|
|
},
|
|
enabled: !!projectId,
|
|
});
|
|
};
|
|
export const useCreateServiceProject = (onSuccessCallback) => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: async (playload) =>
|
|
await ServiceProjectRepository.CreateServiceProject(playload),
|
|
onSuccess: (data, variables) => {
|
|
queryClient.invalidateQueries({ queryKey: ["serviceProjects"] });
|
|
if (onSuccessCallback) onSuccessCallback();
|
|
showToast("Project created successfully", "success");
|
|
},
|
|
onError: (error) => {
|
|
showToast(
|
|
error?.response?.data?.message ||
|
|
error.message ||
|
|
"Failed to delete task",
|
|
"error"
|
|
);
|
|
},
|
|
});
|
|
};
|
|
export const useUpdateServiceProject = (onSuccessCallback) => {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async ({ id, payload }) => {
|
|
return await ServiceProjectRepository.UpdateServiceProject(id, payload);
|
|
},
|
|
onSuccess: (data, variables) => {
|
|
queryClient.invalidateQueries({ queryKey: ["serviceProjects"] });
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["serviceProject", variables.id],
|
|
});
|
|
if (onSuccessCallback) onSuccessCallback();
|
|
showToast("Project updated successfully", "success");
|
|
},
|
|
onError: (error) => {
|
|
showToast(
|
|
error?.response?.data?.message ||
|
|
error.message ||
|
|
"Failed to update project",
|
|
"error"
|
|
);
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useActiveInActiveServiceProject = (onSuccessCallback) => {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async (id, status) => {
|
|
return await ServiceProjectRepository.DeleteServiceProject(id, status);
|
|
},
|
|
onSuccess: (data, variables) => {
|
|
queryClient.invalidateQueries({ queryKey: ["serviceProjects"] });
|
|
if (onSuccessCallback) onSuccessCallback();
|
|
showToast(
|
|
`Project ${status ? "restored" : "deleted"} successfully`,
|
|
"success"
|
|
);
|
|
},
|
|
onError: (error) => {
|
|
showToast(
|
|
error?.response?.data?.message ||
|
|
error.message ||
|
|
"Failed to update project",
|
|
"error"
|
|
);
|
|
},
|
|
});
|
|
};
|
|
//#endregion
|
|
|
|
//#region Service Jobs
|
|
|
|
|
|
export const useServiceProjectJobs=(pageSize,pageNumber,isActive=true,project)=>{
|
|
return useQuery({
|
|
queryKey:["serviceProjectJobs",pageSize,pageNumber,isActive,project],
|
|
queryFn:async() =>{
|
|
const resp = await ServiceProjectRepository.GetJobList(pageSize,pageNumber,isActive,project);
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
export const useServiceProjectJobDetails = (job)=>{
|
|
return useQuery({
|
|
queryKey:['service-job',job],
|
|
queryFn:async() =>{
|
|
const resp = await ServiceProjectRepository.GetJobDetails(job);
|
|
return resp.data;
|
|
},
|
|
enabled:!!job
|
|
})
|
|
}
|
|
|
|
export const useCreateServiceProjectJob = (onSuccessCallback) => {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async (payload) => {
|
|
return await ServiceProjectRepository.CreateJob(payload);
|
|
},
|
|
onSuccess: (data, variables) => {
|
|
queryClient.invalidateQueries({ queryKey: [""] });
|
|
|
|
if (onSuccessCallback) onSuccessCallback();
|
|
showToast("Job Created successfully", "success");
|
|
},
|
|
onError: (error) => {
|
|
showToast(
|
|
error?.response?.data?.message ||
|
|
error.message ||
|
|
"Failed to update project",
|
|
"error"
|
|
);
|
|
},
|
|
});
|
|
};
|
|
//#endregion
|