import React, { useEffect } from 'react'; import { useFormContext } from 'react-hook-form'; import { useLanguage } from '@/contexts/LanguageContext'; import { IncidentFormValues } from '../hooks/useIncidentForm'; import { FormField, FormItem, FormLabel, FormControl, FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { useQuery } from '@tanstack/react-query'; import { userService } from '@/services/userService'; import { Badge } from '@/components/ui/badge'; import { X, Users } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; export const IncidentBasicFields: React.FC = () => { const { t } = useLanguage(); const form = useFormContext(); const currentAssignedUserId = form.watch('assigned_to'); // For assigned users functionality const [selectedUserIds, setSelectedUserIds] = React.useState([]); // Update selectedUserIds when form value changes (for edit mode) useEffect(() => { if (currentAssignedUserId) { setSelectedUserIds([currentAssignedUserId]); } }, [currentAssignedUserId]); // Fetch users for assignment const { data: users = [], isLoading } = useQuery({ queryKey: ['users'], queryFn: async () => { try { const usersList = await userService.getUsers(); // console.log("Fetched users for incident assignment:", usersList); return Array.isArray(usersList) ? usersList : []; } catch (error) { // console.error("Failed to fetch users:", error); return []; } }, staleTime: 300000 // Cache for 5 minutes }); // Add user to assigned_to const addUser = (userId: string) => { // For now, we're using a single user assignment // console.log("Setting user ID in form:", userId); form.setValue('assigned_to', userId, { shouldValidate: true, shouldDirty: true }); setSelectedUserIds([userId]); }; // Remove assigned user const removeUser = () => { form.setValue('assigned_to', '', { shouldValidate: true, shouldDirty: true }); setSelectedUserIds([]); }; // Get selected user data const selectedUser = users.find(user => user.id === form.getValues('assigned_to')); // Function to get user initials from name const getUserInitials = (user: { full_name?: string; username: string }): string => { if (user.full_name) { const nameParts = user.full_name.split(' '); if (nameParts.length > 1) { return `${nameParts[0][0]}${nameParts[1][0]}`.toUpperCase(); } return user.full_name.substring(0, 2).toUpperCase(); } return user.username.substring(0, 2).toUpperCase(); }; return (
( {t('title')} )} /> ( {t('description')}