Corrigido problema na contagem de chamados e adicionado possibilidade de fechar chamados automaticamente após um periodo de tempo

This commit is contained in:
Danilo Alves
2022-01-13 14:47:01 -03:00
parent 783c05d172
commit 31bce333da
3 changed files with 81 additions and 52 deletions

View File

@@ -1 +1,2 @@
REACT_APP_BACKEND_URL = http://localhost:8080/ REACT_APP_BACKEND_URL = http://localhost:8080/
REACT_APP_HORAS_FECHAR_CHAMADOS_AUTO =

View File

@@ -15,11 +15,12 @@ const useTickets = ({
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const [hasMore, setHasMore] = useState(false); const [hasMore, setHasMore] = useState(false);
const [tickets, setTickets] = useState([]); const [tickets, setTickets] = useState([]);
const [count, setCount] = useState(0);
useEffect(() => { useEffect(() => {
setLoading(true); setLoading(true);
const delayDebounceFn = setTimeout(() => { const delayDebounceFn = setTimeout(() => {
const fetchTickets = async () => { const fetchTickets = async() => {
try { try {
const { data } = await api.get("/tickets", { const { data } = await api.get("/tickets", {
params: { params: {
@@ -31,18 +32,45 @@ const useTickets = ({
queueIds, queueIds,
withUnreadMessages, withUnreadMessages,
}, },
}); })
setTickets(data.tickets); setTickets(data.tickets)
setHasMore(data.hasMore);
setLoading(false); let horasFecharAutomaticamente = process.env.REACT_APP_HOURS_CLOSE_TICKETS_AUTO
} catch (err) {
setLoading(false); if (status === "open" && horasFecharAutomaticamente && horasFecharAutomaticamente !== "" &&
toastError(err); horasFecharAutomaticamente !== "0" && Number(horasFecharAutomaticamente) > 0) {
let dataLimite = new Date()
dataLimite.setHours(dataLimite.getHours() - Number(horasFecharAutomaticamente))
data.tickets.forEach(ticket => {
if (ticket.status !== "closed") {
let dataUltimaInteracaoChamado = new Date(ticket.updatedAt)
if (dataUltimaInteracaoChamado < dataLimite)
closeTicket(ticket)
} }
}; })
fetchTickets(); }
}, 500);
return () => clearTimeout(delayDebounceFn); setHasMore(data.hasMore)
setCount(data.count)
setLoading(false)
} catch (err) {
setLoading(false)
toastError(err)
}
}
const closeTicket = async(ticket) => {
await api.put(`/tickets/${ticket.id}`, {
status: "closed",
userId: ticket.userId || null,
})
}
fetchTickets()
}, 500)
return () => clearTimeout(delayDebounceFn)
}, [ }, [
searchParam, searchParam,
pageNumber, pageNumber,
@@ -51,9 +79,9 @@ const useTickets = ({
showAll, showAll,
queueIds, queueIds,
withUnreadMessages, withUnreadMessages,
]); ])
return { tickets, loading, hasMore }; return { tickets, loading, hasMore, count };
}; };
export default useTickets; export default useTickets;

View File

@@ -54,13 +54,13 @@ const Dashboard = () => {
const GetTickets = (status, showAll, withUnreadMessages) => { const GetTickets = (status, showAll, withUnreadMessages) => {
const { tickets } = useTickets({ const { count } = useTickets({
status: status, status: status,
showAll: showAll, showAll: showAll,
withUnreadMessages: withUnreadMessages, withUnreadMessages: withUnreadMessages,
queueIds: JSON.stringify(userQueueIds) queueIds: JSON.stringify(userQueueIds)
}); });
return tickets.length; return count;
} }
return ( return (