This commit is contained in:
2026-03-06 12:02:52 -06:00
parent 45d785964d
commit 13f6c9d164
6 changed files with 372 additions and 26 deletions

View File

@@ -0,0 +1,40 @@
import { useState, useEffect } from 'react';
import axios from 'axios';
/**
* Fetches CPAS score, 90-day violation type counts, and full history
* for a given employeeId. Re-fetches whenever employeeId changes.
*/
export default function useEmployeeIntelligence(employeeId) {
const [score, setScore] = useState(null);
const [counts90, setCounts90] = useState({}); // { violation_type: count } 90-day
const [countsAllTime, setCountsAllTime] = useState({}); // { violation_type: { count, max_points_used } }
const [history, setHistory] = useState([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
if (!employeeId) {
setScore(null);
setCounts90({});
setCountsAllTime({});
setHistory([]);
return;
}
setLoading(true);
Promise.all([
axios.get(`/api/employees/${employeeId}/score`),
axios.get(`/api/employees/${employeeId}/violation-counts`),
axios.get(`/api/employees/${employeeId}/violation-counts/alltime`),
axios.get(`/api/violations/employee/${employeeId}?limit=20`),
]).then(([scoreRes, counts90Res, allTimeRes, historyRes]) => {
setScore(scoreRes.data);
setCounts90(counts90Res.data);
setCountsAllTime(allTimeRes.data);
setHistory(historyRes.data);
}).catch(console.error)
.finally(() => setLoading(false));
}, [employeeId]);
return { score, counts90, countsAllTime, history, loading };
}