diff --git a/client/src/pages/general-planning.tsx b/client/src/pages/general-planning.tsx index 5d00b2e..af6182c 100644 --- a/client/src/pages/general-planning.tsx +++ b/client/src/pages/general-planning.tsx @@ -132,7 +132,7 @@ export default function GeneralPlanning() { }; // Query per guardie disponibili (solo quando dialog è aperto) - const { data: availableGuards, isLoading: isLoadingGuards } = useQuery({ + const { data: availableGuards, isLoading: isLoadingGuards, refetch: refetchGuards } = useQuery({ queryKey: ["/api/guards/availability", selectedCell?.siteId, selectedLocation, startTime, durationHours], queryFn: async () => { if (!selectedCell) return []; @@ -144,6 +144,7 @@ export default function GeneralPlanning() { return response.json(); }, enabled: !!selectedCell, // Query attiva solo se dialog è aperto + staleTime: 0, // Dati sempre considerati stale, refetch ad ogni apertura dialog }); // Mutation per eliminare assegnazione guardia @@ -174,19 +175,21 @@ export default function GeneralPlanning() { mutationFn: async (data: { siteId: string; date: string; guardId: string; startTime: string; durationHours: number; consecutiveDays: number }) => { return apiRequest("POST", "/api/general-planning/assign-guard", data); }, - onSuccess: () => { + onSuccess: async () => { // Invalida cache planning generale - queryClient.invalidateQueries({ queryKey: ["/api/general-planning"] }); - queryClient.invalidateQueries({ queryKey: ["/api/guards/availability"] }); + await queryClient.invalidateQueries({ queryKey: ["/api/general-planning"] }); + await queryClient.invalidateQueries({ queryKey: ["/api/guards/availability"] }); + + // Refetch immediatamente guardie disponibili per aggiornare lista + await refetchGuards(); toast({ title: "Guardia assegnata", description: "La guardia è stata assegnata con successo", }); - // Reset form + // Reset solo guardia selezionata (NON chiudere dialog per vedere lista aggiornata) setSelectedGuardId(""); - setSelectedCell(null); }, onError: (error: any) => { // Parse error message from API response