"use client"; import { useState } from "react"; import { Spinner } from "../UI"; import { driverService } from "../../services/driver.service"; import { getStoredToken } from "../../lib/auth"; // ── Props ───────────────────────────────────────────────────────────────────── interface DriverReportPanelProps { driverId: string; } // ── Component ───────────────────────────────────────────────────────────────── export function DriverReportPanel({ driverId }: DriverReportPanelProps) { const today = new Date().toISOString().slice(0, 10); const [date, setDate] = useState(today); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const handleGenerate = async () => { if (!date) return; setLoading(true); setError(null); try { const token = getStoredToken(); const res = await driverService.getDailyReport(driverId, date, token); // The response shape: { data: { reportUrl, filename } } const reportUrl = ( res as unknown as { data: { reportUrl: string; filename: string } } ).data?.reportUrl; if (!reportUrl) throw new Error("لم يتم إرجاع رابط التقرير."); // Navigate directly to the report URL window.location.href = reportUrl; } catch (err) { setError(err instanceof Error ? err.message : "تعذّر إنشاء التقرير."); } finally { setLoading(false); } }; return (
{/* Heading */}

إنشاء تقرير يومي

{/* Date input */}
{ setDate(e.target.value); setError(null); }} style={{ width: "100%", height: 38, padding: "0 0.625rem", borderRadius: "var(--radius-md)", border: "1px solid var(--color-border)", background: "var(--color-surface)", fontSize: 13, color: "var(--color-text-primary)", outline: "none", fontFamily: "var(--font-sans)", }} />
{/* Generate button */}
{/* Error */} {error && (
⚠ {error}
)}
); }