193 lines
5.1 KiB
JavaScript
193 lines
5.1 KiB
JavaScript
import { useEffect, useState } from "react";
|
|
import { TasksRepository } from "../repositories/TaskRepository";
|
|
import { cacheData, getCachedData } from "../slices/apiDataManager";
|
|
import {MasterRespository} from "../repositories/MastersRepository";
|
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import showToast from "../services/toastService";
|
|
import {useSelector} from "react-redux";
|
|
|
|
|
|
// ---------Query---------------------------------
|
|
|
|
export const useTaskList = (projectId, dateFrom, toDate) => {
|
|
const enabled = !!projectId && !!dateFrom && !!toDate;
|
|
|
|
const {
|
|
data: TaskList = [],
|
|
isLoading: loading,
|
|
error,
|
|
refetch,
|
|
} = useQuery({
|
|
queryKey: ["taskList", projectId, dateFrom, toDate],
|
|
queryFn: async () => {
|
|
const response = await TasksRepository.getTaskList(
|
|
projectId,
|
|
dateFrom,
|
|
toDate
|
|
);
|
|
return response.data;
|
|
},
|
|
enabled,
|
|
|
|
});
|
|
|
|
return { TaskList, loading, error, refetch };
|
|
};
|
|
|
|
export const useTaskById = (TaskId) => {
|
|
const {
|
|
data: Task = null,
|
|
isLoading: loading,
|
|
error,
|
|
refetch,
|
|
} = useQuery({
|
|
queryKey: ["taskDetails", TaskId],
|
|
queryFn: async () => {
|
|
const res = await TasksRepository.getTaskById(TaskId);
|
|
return res.data;
|
|
},
|
|
enabled: !!TaskId,
|
|
});
|
|
|
|
return { Task, loading, error, refetch };
|
|
};
|
|
|
|
// export const useActivities = () => {
|
|
// return useQuery({
|
|
// queryKey: ["activitiesMaster"],
|
|
// queryFn: async () => {
|
|
// const response = await ActivityRepository.getActivities();
|
|
// return response.data;
|
|
// },
|
|
|
|
// });
|
|
// };
|
|
|
|
export const useAuditStatus = () => {
|
|
const {
|
|
data: status = [],
|
|
isLoading: loading,
|
|
error,
|
|
refetch,
|
|
} = useQuery({
|
|
queryKey: ["AuditStatus"],
|
|
queryFn: async () => {
|
|
const res = await MasterRespository.getAuditStatus();
|
|
return res.data;
|
|
},
|
|
|
|
});
|
|
|
|
return { status, loading, error, refetch };
|
|
};
|
|
|
|
|
|
// -----------------------Mutation------------------------
|
|
const toDate = new Date().toISOString().split('T')[0];
|
|
const dateFrom = new Date(Date.now() - 6 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
|
|
|
|
|
|
|
|
export const useReportTask = ( {onSuccessCallback, onErrorCallback} = {} ) =>
|
|
{
|
|
const queryClient = useQueryClient();
|
|
const {
|
|
mutate,
|
|
isPending,
|
|
isSuccess,
|
|
isError,
|
|
error,
|
|
} = useMutation({
|
|
mutationFn: async ( {reportData,workAreaId} ) =>
|
|
{
|
|
debugger
|
|
return await TasksRepository.reportTask(reportData);
|
|
},
|
|
onSuccess: ( data, variables ) =>
|
|
{
|
|
const {workAreaId} = variables;
|
|
queryClient.invalidateQueries( {queryKey: [ "taskList" ]} );
|
|
queryClient.invalidateQueries( {queryKey: [ "WorkItems", workAreaId ]} );
|
|
queryClient.invalidateQueries( {queryKey: [ 'ProjectsList' ]} );
|
|
showToast( "Task Reported Successfully.", "success" );
|
|
if (onSuccessCallback) onSuccessCallback(data);
|
|
},
|
|
onError: (error) => {
|
|
const msg =
|
|
error?.response?.data?.message || error.message || "Error occurred during API call";
|
|
showToast( msg, "error" );
|
|
},
|
|
});
|
|
|
|
return {
|
|
mutate,
|
|
isPending,
|
|
isSuccess,
|
|
isError,
|
|
error,
|
|
};
|
|
};
|
|
|
|
export const useSubmitTaskComment = ({ actionAllow, onSuccessCallback }) => {
|
|
const queryClient = useQueryClient();
|
|
const { mutate, isPending } = useMutation({
|
|
mutationFn: async ({ data, commentsData }) => {
|
|
const payload = {
|
|
...data,
|
|
[actionAllow ? "id" : "taskAllocationId"]: commentsData?.id,
|
|
...(actionAllow ? {} : { commentDate: new Date().toISOString() }),
|
|
};
|
|
|
|
const response = actionAllow
|
|
? await TasksRepository.auditTask(payload)
|
|
: await TasksRepository.taskComments(payload);
|
|
|
|
return response.data;
|
|
},
|
|
|
|
onSuccess: ( data,variables ) =>
|
|
{
|
|
|
|
const workAreaId = variables?.commentsData?.workItem?.workArea?.id;
|
|
queryClient.invalidateQueries({ queryKey: ["taskList"] });
|
|
if (actionAllow) {
|
|
showToast( "Review submitted successfully.", "success" );
|
|
|
|
} else
|
|
{
|
|
showToast("Comment sent successfully.", "success");
|
|
}
|
|
|
|
onSuccessCallback?.(data);
|
|
},
|
|
|
|
onError: (error) => {
|
|
const msg = error?.response?.data?.message || error.message || "Error during API call";
|
|
showToast(msg, "error");
|
|
},
|
|
});
|
|
|
|
return { submitComment: mutate, isPending };
|
|
};
|
|
|
|
export const useCreateTask = ( {onSuccessCallback, onErrorCallback} = {} ) =>
|
|
{
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: async ({payload,workAreaId}) => {
|
|
return await TasksRepository.assignTask(payload);
|
|
},
|
|
onSuccess: ( _, variables ) =>
|
|
{
|
|
queryClient.invalidateQueries( {queryKey: [ "taskList" ]} );
|
|
queryClient.invalidateQueries( {queryKey: [ "WorkItems", variables?.workAreaId ]} );
|
|
showToast( "Task Assigned Successfully.", "success" );
|
|
if (onSuccessCallback) onSuccessCallback(variables);
|
|
},
|
|
onError: ( error ) =>
|
|
{
|
|
showToast("Something went wrong. Please try again.", "error");
|
|
if (onErrorCallback) onErrorCallback(error);
|
|
},
|
|
});
|
|
}; |