"use client" import { useEffect, useState } from "react" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" interface ManagedTypeOption { id?: number name: string managed: boolean parentId?: number | null } interface UserScopeModalUser { national_id: string name: string field?: string department?: string team?: string } interface UserScopeModalProps { isOpen: boolean onClose: () => void user: UserScopeModalUser | null fields: ManagedTypeOption[] departments: ManagedTypeOption[] teams: ManagedTypeOption[] onSave: (payload: { userId: string; field: string; department: string; team: string }) => Promise isSaving: boolean } export function UserScopeModal({ isOpen, onClose, user, fields, departments, teams, onSave, isSaving, }: UserScopeModalProps) { const [field, setField] = useState("") const [department, setDepartment] = useState("") const [team, setTeam] = useState("") useEffect(() => { if (user && isOpen) { setField(user.field || "") setDepartment(user.department || "") setTeam(user.team || "") } }, [user, isOpen]) const selectedFieldId = fields.find((item) => item.name === field)?.id const availableDepartments = selectedFieldId ? departments.filter((item) => item.parentId === selectedFieldId) : departments const selectedDepartmentId = departments.find((item) => item.name === department)?.id const availableTeams = selectedDepartmentId ? teams.filter((item) => item.parentId === selectedDepartmentId) : teams useEffect(() => { if (field && availableDepartments.length > 0) { const hasDepartment = availableDepartments.some((item) => item.name === department) if (!hasDepartment) { setDepartment("") setTeam("") } } }, [field, availableDepartments, department]) useEffect(() => { if (department && availableTeams.length > 0) { const hasTeam = availableTeams.some((item) => item.name === team) if (!hasTeam) { setTeam("") } } }, [department, availableTeams, team]) if (!user) return null const handleSave = async () => { if (!field || !department || !team) return await onSave({ userId: user.national_id, field, department, team }) } return ( שיוך מחדש למשתמש {user.name} יש לבחור תחום, מסגרת וצוות.
) }