import React, { useState } from 'react' import { FaTimes, FaPlay, FaCalendar, FaUser } from 'react-icons/fa' import { PmMaintenanceWorkOrder, WorkOrderStatusEnum } from '../../../types/pm' import { mockEmployees } from '../../../mocks/mockEmployees' import { mockMaintenanceTeams } from '../../../mocks/mockMaintenanceTeams' interface StartWorkOrderModalProps { isOpen: boolean onClose: () => void onStart: (workOrders: PmMaintenanceWorkOrder[], startData: StartWorkOrderData) => void workOrders: PmMaintenanceWorkOrder[] } interface StartWorkOrderData { actualStart: Date assignedTo?: string maintenanceTeamId?: string notes?: string } const StartWorkOrderModal: React.FC = ({ isOpen, onClose, onStart, workOrders, }) => { const [formData, setFormData] = useState({ actualStart: new Date().toISOString().slice(0, 16), assignedTo: '', maintenanceTeamId: '', notes: '', }) const [errors, setErrors] = useState>({}) const validateForm = () => { const newErrors: Record = {} if (!formData.actualStart) { newErrors.actualStart = 'Başlangıç tarihi zorunludur' } const startDate = new Date(formData.actualStart) const now = new Date() if (startDate > now) { newErrors.actualStart = 'Başlangıç tarihi gelecekte olamaz' } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleSubmit = (e: React.FormEvent) => { e.preventDefault() if (!validateForm()) return const startData: StartWorkOrderData = { actualStart: new Date(formData.actualStart), assignedTo: formData.assignedTo || undefined, maintenanceTeamId: formData.maintenanceTeamId || undefined, notes: formData.notes || undefined, } onStart(workOrders, startData) onClose() } const canStartWorkOrders = workOrders.every( (wo) => wo.status === WorkOrderStatusEnum.Created || wo.status === WorkOrderStatusEnum.Planned || wo.status === WorkOrderStatusEnum.Released, ) const inProgressWorkOrders = workOrders.filter( (wo) => wo.status === WorkOrderStatusEnum.InProgress, ) if (!isOpen) return null return (

İş Emirlerini Başlat

{/* Work Orders Summary */}

Seçilen İş Emirleri ({workOrders.length})

{workOrders.map((workOrder) => (

{workOrder.workOrderNumber}

{workOrder.description}

{workOrder.status === WorkOrderStatusEnum.Created && 'Oluşturuldu'} {workOrder.status === WorkOrderStatusEnum.Planned && 'Planlandı'} {workOrder.status === WorkOrderStatusEnum.Released && 'Serbest Bırakıldı'} {workOrder.status === WorkOrderStatusEnum.InProgress && 'Devam Ediyor'} {workOrder.status === WorkOrderStatusEnum.OnHold && 'Beklemede'} {workOrder.status === WorkOrderStatusEnum.Completed && 'Tamamlandı'} {workOrder.status === WorkOrderStatusEnum.Cancelled && 'İptal Edildi'}
))}
{/* Validation Messages */} {!canStartWorkOrders && (
Uyarı

Bazı iş emirleri başlatılamaz durumda. Sadece "Oluşturuldu", "Planlandı" veya "Serbest Bırakıldı" durumundaki iş emirleri başlatılabilir.

)} {inProgressWorkOrders.length > 0 && (
Bilgi

{inProgressWorkOrders.length} iş emri zaten devam ediyor durumunda. Bu iş emirleri için sadece atama ve not güncellemesi yapılacak.

)}
{/* Start DateTime */}
setFormData({ ...formData, actualStart: e.target.value })} className={`w-full px-3 py-1.5 text-sm border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${ errors.actualStart ? 'border-red-500' : 'border-gray-300' }`} /> {errors.actualStart && (

{errors.actualStart}

)}
{/* Assignment */}
{/* Notes */}