import React from 'react'; import { useSelector } from 'react-redux'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { RootState } from '@/store'; interface ZMDialogProps { isOpen: boolean; onOpenChange: (open: boolean) => void; editingZMId: string | null; zmManagerId: string; setZmManagerId: (id: string) => void; zmStatus: 'active' | 'inactive'; setZmStatus: (status: 'active' | 'inactive') => void; selectedZone: string; setSelectedZone: (id: string) => void; selectedRegions: string[]; setSelectedRegions: (regions: string[]) => void; onSave: () => void; userAssignedData: any[]; } export const ZMDialog: React.FC = ({ isOpen, onOpenChange, editingZMId, zmManagerId, setZmManagerId, zmStatus, setZmStatus, selectedZone, setSelectedZone, selectedRegions, setSelectedRegions, onSave, userAssignedData }) => { const { zones, regionalOffices } = useSelector((state: RootState) => state.master); const filteredZMUsers = userAssignedData.filter(u => { const roles = u.allRoles || []; return roles.some((r: string) => { const roleStr = (r || '').toUpperCase(); return ['ZM', 'ZONAL MANAGER', 'ZBH', 'ZONE BUSINESS HEAD', 'RM', 'RBM', 'REGIONAL MANAGER'].includes(roleStr) || roleStr.includes('ZONAL') || roleStr.includes('REGIONAL'); }); }); const availableRegions = regionalOffices.filter(r => r.zoneId === selectedZone); return ( {editingZMId ? 'Edit' : 'Add'} Zonal Manager Assign Zonal Manager to Regions within a Zone
{selectedZone && (
{availableRegions.map((region) => (
{ if (checked) { setSelectedRegions([...selectedRegions, region.id]); } else { setSelectedRegions(selectedRegions.filter(id => id !== region.id)); } }} />
))} {availableRegions.length === 0 && (

No regions found for this zone

)}
)}
); };