import { Head, router } from '@inertiajs/react';
import { useState } from 'react';

import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import AdminLayout from '@/layouts/admin-layout';

export default function AdminProfitLoss({ revenue, cost, grossProfit, filters }: {
    revenue: number; cost: number; grossProfit: number; filters: { from: string; to: string };
}) {
    const [from, setFrom] = useState(filters.from);
    const [to, setTo] = useState(filters.to);
    const apply = () => router.get('/admin/reports/profit-loss', { from, to }, { preserveState: true });
    const margin = revenue > 0 ? ((grossProfit / revenue) * 100).toFixed(1) : '0';

    return (
        <AdminLayout title="Profit / Loss">
            <Head title="Profit / Loss" />
            <div className="mb-4 flex flex-wrap items-end gap-3">
                <div className="space-y-1"><Label>From</Label><Input type="date" value={from} onChange={(e) => setFrom(e.target.value)} className="w-44" /></div>
                <div className="space-y-1"><Label>To</Label><Input type="date" value={to} onChange={(e) => setTo(e.target.value)} className="w-44" /></div>
                <Button onClick={apply} className="bg-indigo-600 hover:bg-indigo-700">Apply</Button>
            </div>

            <div className="grid gap-4 sm:grid-cols-3">
                {[
                    ['Total Revenue', `৳${Number(revenue).toLocaleString()}`, 'bg-green-50 border-green-200'],
                    ['Total Cost', `৳${Number(cost).toLocaleString()}`, 'bg-red-50 border-red-200'],
                    [grossProfit >= 0 ? 'Gross Profit' : 'Gross Loss', `৳${Math.abs(grossProfit).toLocaleString()} (${margin}%)`, grossProfit >= 0 ? 'bg-blue-50 border-blue-200' : 'bg-orange-50 border-orange-200'],
                ].map(([label, val, cls]) => (
                    <Card key={String(label)} className={`border ${cls}`}>
                        <CardContent className="p-6">
                            <p className="text-sm text-slate-500">{label}</p>
                            <p className="mt-1 text-2xl font-bold">{val}</p>
                        </CardContent>
                    </Card>
                ))}
            </div>
        </AdminLayout>
    );
}
