'use client'; import { useState } from 'react'; import { createICAOChecklist, createEASAChecklist, createFAAChecklist, createARMACChecklist, createUniversalChecklist, ICAOCategories, EASACategories, FAACategories, ARMACCategories, type ComplianceChecklist } from '@/lib/compliance/checklist-formats'; interface ChecklistCreateModalProps { isOpen: boolean; onClose: () => void; onCreate?: (checklist: { name: string; type: string; status: string; aircraft: string; date: string; items: number; completed: number; description?: string; checklistItems?: Array<{ id: string; text: string; checked: boolean }>; standards?: { icao?: boolean; easa?: boolean; faa?: boolean; armak?: boolean }; inspector?: string; inspectorLicense?: string; operator?: string; }) => void; } export default function ChecklistCreateModal({ isOpen, onClose, onCreate }: ChecklistCreateModalProps) { const [standard, setStandard] = useState<'icao' | 'easa' | 'faa' | 'armak' | 'universal'>('universal'); const [formData, setFormData] = useState({ name: '', type: 'pre-flight' as 'pre-flight' | 'post-flight' | 'maintenance' | 'annual' | 'special', status: 'В процессе', aircraft: '', aircraftType: '', operator: '', date: new Date().toISOString().split('T')[0], description: '', inspector: '', inspectorLicense: '', items: [] as Array<{ id: string; category: string; text: string; requirement: string; checked: boolean; status: 'compliant' | 'non-compliant' | 'not-applicable' | 'pending' }>, }); const [newItemText, setNewItemText] = useState(''); const [newItemCategory, setNewItemCategory] = useState(''); const [newItemRequirement, setNewItemRequirement] = useState(''); // Получаем категории в зависимости от выбранного стандарта const getCategories = () => { switch (standard) { case 'easa': return EASACategories; case 'faa': return FAACategories; case 'armak': return ARMACCategories; case 'icao': default: return ICAOCategories; } }; const categories = getCategories(); if (!isOpen) { return null; } const handleChange = (field: string, value: string) => { setFormData({ ...formData, [field]: value }); }; const handleAddItem = () => { if (newItemText.trim() && newItemCategory) { setFormData({ ...formData, items: [...formData.items, { id: `item-${Date.now()}`, category: newItemCategory, text: newItemText.trim(), requirement: newItemRequirement.trim() || 'Не указано', checked: false, status: 'pending' as const, }], }); setNewItemText(''); setNewItemCategory(''); setNewItemRequirement(''); } }; const handleAddStandardItems = (category: string, items: string[]) => { const newItems = items.map((item, index) => ({ id: `item-${Date.now()}-${index}`, category, text: item, requirement: standard === 'easa' ? 'EASA Part-M' : standard === 'faa' ? 'FAA Part 91/135' : standard === 'armak' ? 'АРМАК / ФАП' : 'ICAO Annex 6', checked: false, status: 'pending' as const, })); setFormData({ ...formData, items: [...formData.items, ...newItems], }); }; const handleRemoveItem = (itemId: string) => { setFormData({ ...formData, items: formData.items.filter(item => item.id !== itemId), }); }; const handleSubmit = () => { if (!formData.name || !formData.aircraft || !formData.inspector) { alert('Пожалуйста, заполните все обязательные поля (Название, ВС, Инспектор)'); return; } // Создаем чек-лист согласно выбранному стандарту const standards = { icao: standard === 'icao' || standard === 'universal', easa: standard === 'easa' || standard === 'universal', faa: standard === 'faa' || standard === 'universal', armak: standard === 'armak' || standard === 'universal', }; const checklistData = { aircraftRegistration: formData.aircraft, aircraftType: formData.aircraftType, operator: formData.operator, date: formData.date, inspector: formData.inspector, inspectorLicense: formData.inspectorLicense, checklistType: formData.type, items: formData.items.map(item => ({ id: item.id, category: item.category, item: item.text, requirement: item.requirement, status: item.status, notes: item.checked ? 'Выполнено' : undefined, })), }; // Создаем compliance checklist для будущего использования // (пока не используется, но может быть полезен для экспорта/сохранения) const getComplianceChecklist = (): ComplianceChecklist => { switch (standard) { case 'easa': return createEASAChecklist(checklistData); case 'faa': return createFAAChecklist(checklistData); case 'armak': return createARMACChecklist(checklistData); case 'icao': return createICAOChecklist(checklistData); default: return createUniversalChecklist(checklistData); } }; // Вызываем функцию для создания compliance checklist (может быть использован в будущем) getComplianceChecklist(); if (onCreate) { onCreate({ name: formData.name, type: formData.type === 'pre-flight' ? 'Предполётный' : formData.type === 'post-flight' ? 'Послеполётный' : formData.type === 'maintenance' ? 'Техническое обслуживание' : formData.type === 'annual' ? 'Годовой' : 'Специальный', status: formData.status, aircraft: formData.aircraft, date: formData.date, items: formData.items.length, completed: formData.items.filter(i => i.checked).length, description: formData.description, checklistItems: formData.items.map(item => ({ id: item.id, text: `[${item.category}] ${item.text} (${item.requirement})`, checked: item.checked, })), standards, inspector: formData.inspector, inspectorLicense: formData.inspectorLicense, operator: formData.operator, }); setFormData({ name: '', type: 'pre-flight', status: 'В процессе', aircraft: '', aircraftType: '', operator: '', date: new Date().toISOString().split('T')[0], description: '', inspector: '', inspectorLicense: '', items: [], }); setNewItemText(''); setNewItemCategory(''); setNewItemRequirement(''); setStandard('universal'); onClose(); } }; return (