296 lines
8.2 KiB
JavaScript
296 lines
8.2 KiB
JavaScript
import { useState, useEffect } from "react";
|
|
import GlobalRepository from "../repositories/GlobalRepository";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
|
|
|
|
export const useDashboard_Data = ({ days, FromDate, projectId }) => {
|
|
const [dashboard_data, setDashboard_Data] = useState([]);
|
|
const [isLineChartLoading, setLoading] = useState(false);
|
|
const [error, setError] = useState("");
|
|
|
|
useEffect(() => {
|
|
if (!days) return;
|
|
|
|
const fetchData = async () => {
|
|
setLoading(true);
|
|
setError("");
|
|
|
|
try {
|
|
const payload = {
|
|
days,
|
|
FromDate: FromDate || '',
|
|
projectId: projectId || null,
|
|
};
|
|
|
|
const response = await GlobalRepository.getDashboardProgressionData(payload);
|
|
setDashboard_Data(response.data);
|
|
} catch (err) {
|
|
setError("Failed to fetch dashboard data.");
|
|
console.error(err);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
fetchData();
|
|
}, [days, FromDate, projectId]);
|
|
|
|
return { dashboard_data, loading: isLineChartLoading, error };
|
|
};
|
|
|
|
|
|
// export const useDashboard_AttendanceData = (date, projectId) => {
|
|
// const [dashboard_Attendancedata, setDashboard_AttendanceData] = useState([]);
|
|
// const [isLineChartLoading, setLoading] = useState(false);
|
|
// const [error, setError] = useState("");
|
|
|
|
// useEffect(() => {
|
|
// const fetchData = async () => {
|
|
// setLoading(true);
|
|
// setError("");
|
|
|
|
// try {
|
|
// const response = await GlobalRepository.getDashboardAttendanceData(date, projectId); // date in 2nd param
|
|
// setDashboard_AttendanceData(response.data);
|
|
// } catch (err) {
|
|
// setError("Failed to fetch dashboard data.");
|
|
// console.error(err);
|
|
// } finally {
|
|
// setLoading(false);
|
|
// }
|
|
// };
|
|
|
|
// if (date && projectId !== null) {
|
|
// fetchData();
|
|
// }
|
|
// }, [date, projectId]);
|
|
|
|
// return { dashboard_Attendancedata, isLineChartLoading: isLineChartLoading, error };
|
|
// };
|
|
|
|
|
|
// 🔹 Dashboard Projects Card Data Hook
|
|
// export const useDashboardProjectsCardData = () => {
|
|
// const [projectsCardData, setProjectsData] = useState([]);
|
|
// const [loading, setLoading] = useState(false);
|
|
// const [error, setError] = useState("");
|
|
|
|
// useEffect(() => {
|
|
// const fetchProjectsData = async () => {
|
|
// setLoading(true);
|
|
// setError("");
|
|
|
|
// try {
|
|
// const response = await GlobalRepository.getDashboardProjectsCardData();
|
|
// setProjectsData(response.data);
|
|
// } catch (err) {
|
|
// setError("Failed to fetch projects card data.");
|
|
// console.error(err);
|
|
// } finally {
|
|
// setLoading(false);
|
|
// }
|
|
// };
|
|
|
|
// fetchProjectsData();
|
|
// }, []);
|
|
|
|
// return { projectsCardData, loading, error };
|
|
// };
|
|
|
|
// 🔹 Dashboard Teams Card Data Hook
|
|
// export const useDashboardTeamsCardData = (projectId) => {
|
|
// const [teamsCardData, setTeamsData] = useState({});
|
|
// const [loading, setLoading] = useState(false);
|
|
// const [error, setError] = useState("");
|
|
|
|
// useEffect(() => {
|
|
// const fetchTeamsData = async () => {
|
|
// setLoading(true);
|
|
// setError("");
|
|
|
|
// try {
|
|
// const response = await GlobalRepository.getDashboardTeamsCardData(projectId);
|
|
// setTeamsData(response.data || {});
|
|
// } catch (err) {
|
|
// setError("Failed to fetch teams card data.");
|
|
// console.error("Error fetching teams card data:", err);
|
|
// setTeamsData({});
|
|
// } finally {
|
|
// setLoading(false);
|
|
// }
|
|
// };
|
|
|
|
// fetchTeamsData();
|
|
// }, [projectId]);
|
|
|
|
// return { teamsCardData, loading, error };
|
|
// };
|
|
|
|
// export const useDashboardTasksCardData = (projectId) => {
|
|
// const [tasksCardData, setTasksData] = useState({});
|
|
// const [loading, setLoading] = useState(false);
|
|
// const [error, setError] = useState("");
|
|
|
|
// useEffect(() => {
|
|
// const fetchTasksData = async () => {
|
|
// setLoading(true);
|
|
// setError("");
|
|
|
|
// try {
|
|
// const response = await GlobalRepository.getDashboardTasksCardData(projectId);
|
|
// setTasksData(response.data);
|
|
// } catch (err) {
|
|
// setError("Failed to fetch tasks card data.");
|
|
// console.error(err);
|
|
// setTasksData({});
|
|
// } finally {
|
|
// setLoading(false);
|
|
// }
|
|
// };
|
|
|
|
// fetchTasksData();
|
|
// }, [projectId]);
|
|
|
|
// return { tasksCardData, loading, error };
|
|
// };
|
|
|
|
|
|
export const useAttendanceOverviewData = (projectId, days) => {
|
|
const [attendanceOverviewData, setAttendanceOverviewData] = useState([]);
|
|
const [loading, setLoading] = useState(false);
|
|
const [error, setError] = useState("");
|
|
|
|
useEffect(() => {
|
|
if (!projectId || !days) return;
|
|
const fetchAttendanceOverview = async () => {
|
|
setLoading(true);
|
|
setError("");
|
|
|
|
try {
|
|
const response = await GlobalRepository.getAttendanceOverview(projectId, days);
|
|
setAttendanceOverviewData(response.data);
|
|
} catch (err) {
|
|
setError("Failed to fetch attendance overview data.");
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
fetchAttendanceOverview();
|
|
}, [projectId, days]);
|
|
|
|
return { attendanceOverviewData, loading, error };
|
|
};
|
|
|
|
|
|
// -------------------Query----------------------------
|
|
|
|
// export const useDashboard_Data = (days, FromDate, projectId)=>{
|
|
// return useQuery({
|
|
// queryKey:["dashboardProjectProgress"],
|
|
// queryFn:async()=> {
|
|
// const payload = {
|
|
// days,
|
|
// FromDate: FromDate || '',
|
|
// projectId: projectId || null,
|
|
// };
|
|
// const resp = await GlobalRepository.getDashboardProgressionData(payload);
|
|
// return resp.data;
|
|
// }
|
|
// })
|
|
// }
|
|
|
|
export const useDashboard_AttendanceData = (date, projectId) => {
|
|
return useQuery({
|
|
queryKey: ["dashboardAttendances", date, projectId],
|
|
queryFn: async () => {
|
|
|
|
const resp = await await GlobalRepository.getDashboardAttendanceData(date, projectId)
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
|
|
export const useDashboardTeamsCardData = (projectId) => {
|
|
return useQuery({
|
|
queryKey: ["dashboardTeams", projectId],
|
|
queryFn: async () => {
|
|
|
|
const resp = await GlobalRepository.getDashboardTeamsCardData(projectId)
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
|
|
export const useDashboardTasksCardData = (projectId) => {
|
|
return useQuery({
|
|
queryKey: ["dashboardTasks", projectId],
|
|
queryFn: async () => {
|
|
|
|
const resp = await GlobalRepository.getDashboardTasksCardData(projectId)
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
// export const useAttendanceOverviewData = (projectId, days) => {
|
|
// return useQuery({
|
|
// queryKey:["dashboardAttendanceOverView",projectId],
|
|
// queryFn:async()=> {
|
|
|
|
// const resp = await GlobalRepository.getAttendanceOverview(projectId, days);
|
|
// return resp.data;
|
|
// }
|
|
// })
|
|
// }
|
|
|
|
export const useDashboardProjectsCardData = () => {
|
|
return useQuery({
|
|
queryKey: ["dashboardProjects"],
|
|
queryFn: async () => {
|
|
|
|
const resp = await GlobalRepository.getDashboardProjectsCardData();
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
|
|
export const useExpenseAnalysis = (projectId, startDate, endDate) => {
|
|
const hasBothDates = !!startDate && !!endDate;
|
|
const noDatesSelected = !startDate && !endDate;
|
|
|
|
const shouldFetch =
|
|
noDatesSelected ||
|
|
hasBothDates;
|
|
return useQuery({
|
|
queryKey: ["expenseAnalysis", projectId, startDate, endDate],
|
|
queryFn: async () => {
|
|
const resp = await GlobalRepository.getExpenseData(projectId, startDate, endDate);
|
|
return resp.data;
|
|
},
|
|
enabled: shouldFetch,
|
|
refetchOnWindowFocus: true, // refetch when you come back
|
|
refetchOnMount: "always", // always refetch on remount
|
|
staleTime: 0,
|
|
});
|
|
};
|
|
|
|
export const useExpenseStatus = (projectId) => {
|
|
return useQuery({
|
|
queryKey: ["expense_stauts", projectId],
|
|
queryFn: async () => {
|
|
const resp = await GlobalRepository.getExpenseStatus(projectId);
|
|
return resp.data;
|
|
}
|
|
})
|
|
}
|
|
|
|
export const useExpenseDataByProject = (projectId, categoryId, months) => {
|
|
return useQuery({
|
|
queryKey: ["expenseByProject", projectId, categoryId, months],
|
|
queryFn: async () => {
|
|
const resp = await GlobalRepository.getExpenseDataByProject(projectId, categoryId, months);
|
|
return resp.data;
|
|
},
|
|
|
|
});
|
|
}; |