"use client"; import { useCallback, useState } from "react"; import { useParams, useRouter } from "next/navigation"; import { Alert, ArchiveButton, PageHeader, Spinner, Toast } from "@/src/Components/UI"; import { CarMaintenanceFormModal } from "@/src/Components/Car_Maintanance/CarMaintananceFormModal"; import { CarMaintenanceDeleteModal } from "@/src/Components/Car_Maintanance/CarMaintananceDeleteModal"; import { ArchivedCarsMaintenanceModal } from "@/src/Components/Car_Maintanance/archive/ArchivedCarsMaintananceModal"; import { useCarMaintenanceList, useCarMaintenanceMutations, useMaintenanceToast, } from "@/src/hooks/UseCarsMaintanance"; import { useCarDetail } from "@/src/hooks/useCars"; import { MAINTENANCE_STATUS_MAP, fmtDate, fmtCost, durationDays, getMaintenanceStatus, } from "@/src/types/carMaintanance"; import type { CarMaintenance, CreateMaintenancePayload, UpdateMaintenancePayload, } from "@/src/types/carMaintanance"; function MaintenanceCard({ record, onView, onEdit, onDelete, }: { record: CarMaintenance; onView: () => void; onEdit: () => void; onDelete: () => void; }) { const status = MAINTENANCE_STATUS_MAP[getMaintenanceStatus(record)]; return (

{record.reason}

{status.label}
التكلفة {fmtCost(record.cost)}
المدة {durationDays(record.startAt, record.endAt)} يوم
تاريخ البدء {fmtDate(record.startAt)}
تاريخ الانتهاء {fmtDate(record.endAt)}
); } export default function CarMaintenancePage() { const { carId } = useParams<{ carId: string }>(); const router = useRouter(); const { car, refetch: refetchCar } = useCarDetail(carId); const carLabel = car ? `${car.manufacturer} ${car.model} — ${car.plateLetters} ${car.plateNumber}` : undefined; const { records, loading, error, loadRecords, removeRecord, setError } = useCarMaintenanceList(carId); const { toast, notify } = useMaintenanceToast(); const [formTarget, setFormTarget] = useState(false); // false = closed const [deleteTarget, setDeleteTarget] = useState(null); const [archiveOpen, setArchiveOpen] = useState(false); const getEditTarget = useCallback( () => (formTarget instanceof Object && formTarget !== null ? (formTarget as CarMaintenance) : null), [formTarget], ); const { deleting, handleFormSubmit, handleDeleteConfirm } = useCarMaintenanceMutations({ carId, onSuccess: (msg) => { notify({ type: "success", message: msg }); loadRecords(); refetchCar(); }, onError: (msg) => notify({ type: "error", message: msg }), onDeleted: (id) => { removeRecord(id); setDeleteTarget(null); refetchCar(); }, getEditTarget, }); return ( <> {formTarget !== false && ( setFormTarget(false)} onSubmit={(payload: CreateMaintenancePayload | UpdateMaintenancePayload, isNew: boolean) => handleFormSubmit(payload, isNew).then(ok => { if (ok) setFormTarget(false); return ok; }) } /> )} {deleteTarget && ( setDeleteTarget(null)} onConfirm={() => handleDeleteConfirm(deleteTarget)} /> )} {archiveOpen && ( setArchiveOpen(false)} /> )}
setFormTarget(null)} style={{ height: 40, padding: "0 1.125rem", borderRadius: "var(--radius-lg)", border: "none", background: "var(--color-brand-600)", fontSize: 13, fontWeight: 700, color: "#FFF", cursor: "pointer", display: "inline-flex", alignItems: "center", gap: 7, fontFamily: "var(--font-sans)", whiteSpace: "nowrap", }}> إضافة سجل صيانة } /> {error && setError(null)} />} {loading ? (
جارٍ تحميل سجلات الصيانة…
) : records.length === 0 ? (
🔧

لا توجد سجلات صيانة بعد

اضغط على "إضافة سجل صيانة" لتسجيل أول عملية صيانة لهذه المركبة.

) : (
{records.map(record => ( router.push(`/dashboard/cars/${carId}/maintenance/${record.id}`)} onEdit={() => setFormTarget(record)} onDelete={() => setDeleteTarget(record)} /> ))}
)}
setArchiveOpen(true)} label="أرشيف الصيانة" /> ); }