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 */}