import React, { useState, useEffect } from 'react'; import { District, Building } from '../../types'; import { MapPin, ArrowRight, X, AlertCircle } from 'lucide-react'; import { backendApi } from '../../services/apiClient'; import { storageService } from '../../services/storageService'; interface Props { isOpen: boolean; onClose: () => void; onComplete: () => void; sourceDistrict: District; buildings: Building[]; allDistricts: District[]; } export const MoveBuildingsModal: React.FC = ({ isOpen, onClose, onComplete, sourceDistrict, buildings, allDistricts, }) => { const [targetDistrictId, setTargetDistrictId] = useState(''); const [isMoving, setIsMoving] = useState(false); // Исключаем текущий участок из списка const availableDistricts = allDistricts.filter(d => d.id !== sourceDistrict.id); useEffect(() => { if (isOpen && availableDistricts.length > 0 && !targetDistrictId) { setTargetDistrictId(availableDistricts[0].id); } }, [isOpen, availableDistricts, targetDistrictId]); if (!isOpen) return null; const handleMove = async () => { if (!targetDistrictId || buildings.length === 0) return; setIsMoving(true); try { // Перемещаем каждый дом for (const building of buildings) { const updatedBuilding = { ...building, districtId: targetDistrictId, }; // Обновляем в localStorage storageService.saveBuildingData(updatedBuilding); // Обновляем на сервере try { await backendApi.updateBuilding(updatedBuilding); } catch (error) { console.error(`Failed to move building ${building.id}:`, error); // Продолжаем с другими домами } } onComplete(); } catch (error) { console.error('Failed to move buildings:', error); alert('Ошибка при перемещении домов. Попробуйте еще раз.'); } finally { setIsMoving(false); } }; if (availableDistricts.length === 0) { return (
e.stopPropagation()} >

Нет доступных участков

Для перемещения домов нужен хотя бы один другой участок

Создайте новый участок, чтобы переместить {buildings.length} {buildings.length === 1 ? 'дом' : 'домов'} из участка "{sourceDistrict.name}".

); } return (
e.stopPropagation()} > {/* Header */}

Перемещение домов

Выберите участок для перемещения {buildings.length} {buildings.length === 1 ? 'дома' : 'домов'}

{/* Content */}

Из участка:

{sourceDistrict.name}

{buildings.length > 0 && (

Дома для перемещения:

{buildings.map(building => (
• {building.passport.address}
))}
)}
{/* Footer */}
); };