add dashboard data hooks and global repository for API interactions

This commit is contained in:
Vaibhav Surve 2025-04-11 15:44:51 +05:30
parent f4a09c7f53
commit 51190b0d53
2 changed files with 147 additions and 0 deletions

View File

@ -0,0 +1,122 @@
import { useState, useEffect } from "react";
import GlobalRepository from "../repositories/GlobalRepository";
// 🔹 Dashboard Progression Data Hook
export const useDashboard_Data = ({ days, FromDate, projectId }) => {
const [dashboard_data, setDashboard_Data] = useState([]);
const [loading, 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 || 0,
};
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, 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 = () => {
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();
setTeamsData(response.data);
} catch (err) {
setError("Failed to fetch teams card data.");
console.error(err);
} finally {
setLoading(false);
}
};
fetchTeamsData();
}, []);
return { teamsCardData, loading, error };
};
// 🔹 Dashboard Tasks Card Data Hook
export const useDashboardTasksCardData = () => {
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();
setTasksData(response.data);
} catch (err) {
setError("Failed to fetch tasks card data.");
console.error(err);
} finally {
setLoading(false);
}
};
fetchTasksData();
}, []);
return { tasksCardData, loading, error };
};

View File

@ -0,0 +1,25 @@
import { api } from "../utils/axiosClient";
const GlobalRepository = {
getDashboardProgressionData: ({ days = '', FromDate = '', projectId = '' }) => {
const params = new URLSearchParams({
days: days.toString(),
FromDate,
projectId,
});
return api.get(`/api/Dashboard/Progression?${params.toString()}`);
},
getDashboardProjectsCardData: () => {
return api.get(`/api/Dashboard/projects`);
},
getDashboardTeamsCardData: () => {
return api.get(`/api/Dashboard/teams`);
},
getDashboardTasksCardData: () => {
return api.get(`/api/Dashboard/tasks`);
},
};
export default GlobalRepository;