import { useQuery } from '@tanstack/react-query'; import { useAuth } from '@/lib/auth-context'; import { assetRequestApi } from '@/services/assetRequestApi'; /** * Hook to get unread asset request notifications count * For employees: count of requests with status changes (approved, rejected, assigned) * For admins: count of pending requests */ export const useAssetRequestNotifications = () => { const { userData } = useAuth(); const isAdmin = userData?.roleId === 1 || userData?.roleName?.toLowerCase() === 'admin'; const employeeId = userData?.employeeId || 0; // For admins: get count of pending requests const { data: pendingRequests = [] } = useQuery({ queryKey: ['assetRequests', 'pending'], queryFn: () => assetRequestApi.getPending(), enabled: isAdmin, staleTime: 30000, refetchInterval: 60000, // Refresh every minute }); // For employees: get their requests and count status changes // In a real implementation, this would track which notifications have been "read" // For now, we'll just count non-pending requests as potential notifications const { data: employeeRequests = [] } = useQuery({ queryKey: ['assetRequests', 'employee', employeeId], queryFn: () => assetRequestApi.getByEmployeeId(employeeId), enabled: !isAdmin && employeeId > 0, staleTime: 30000, refetchInterval: 60000, }); // Calculate notification count const notificationCount = isAdmin ? pendingRequests.length : employeeRequests.filter( (req) => req.status === 'approved' || req.status === 'rejected' || req.status === 'assigned' ).length; return { notificationCount, hasNotifications: notificationCount > 0, }; };