import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import { Head, Link, useForm } from '@inertiajs/react';
import { Badge } from '@/Components/ui/badge';
import { LinkButton } from '@/Components/ui/button';
import { Plus, Search } from 'lucide-react';
import { formatCurrency, formatDate } from '@/lib/utils';

const STATUSES = ['','draft','submitted','approved','sent','received','overdue','cancelled','rejected'];

export default function POIndex({ orders }: any) {
    const params = new URLSearchParams(window.location.search);
    const { data, setData, get } = useForm({ search: params.get('search')??'', status: params.get('status')??'' });
    const search = (e: React.FormEvent) => { e.preventDefault(); get('/purchase-orders'); };
    return (
        <AuthenticatedLayout header="Purchase Orders">
            <Head title="Purchase Orders" />
            <div className="space-y-4">
                <div className="flex flex-wrap gap-3 items-center">
                    <form onSubmit={search} className="flex gap-2 flex-1 min-w-0">
                        <input value={data.search} onChange={e=>setData('search',e.target.value)} placeholder="Search PO number, supplier..." className="border rounded-md px-3 py-2 text-sm flex-1 focus:outline-none focus:ring-2 focus:ring-primary/30 min-w-0" />
                        <select value={data.status} onChange={e=>setData('status',e.target.value)} className="border rounded-md px-3 py-2 text-sm focus:outline-none"><option value="">All Status</option>{STATUSES.filter(Boolean).map(s=><option key={s} value={s}>{s.charAt(0).toUpperCase()+s.slice(1)}</option>)}</select>
                        <button type="submit" className="p-2 border rounded-md hover:bg-muted"><Search className="w-4 h-4" /></button>
                    </form>
                    <LinkButton href="/purchase-orders/create"><Plus className="w-4 h-4" />New PO</LinkButton>
                </div>
                <div className="bg-white rounded-lg border border-border shadow-sm overflow-hidden">
                    <table className="w-full text-sm">
                        <thead className="bg-muted/50 border-b"><tr><th className="text-left px-4 py-3 font-medium">PO #</th><th className="text-left px-4 py-3 font-medium hidden md:table-cell">Supplier</th><th className="text-left px-4 py-3 font-medium hidden lg:table-cell">Expected Delivery</th><th className="text-left px-4 py-3 font-medium">Status</th><th className="text-right px-4 py-3 font-medium">Amount</th></tr></thead>
                        <tbody className="divide-y divide-border">
                            {orders.data.map((o: any) => (
                                <tr key={o.id} className="hover:bg-muted/30">
                                    <td className="px-4 py-3"><Link href={`/purchase-orders/${o.id}`} className="font-medium hover:underline">{o.po_number ?? <span className="text-muted-foreground italic">Draft</span>}</Link><p className="text-xs text-muted-foreground">{formatDate(o.created_at)}</p></td>
                                    <td className="px-4 py-3 hidden md:table-cell">{o.supplier?.name}</td>
                                    <td className="px-4 py-3 hidden lg:table-cell text-muted-foreground">{formatDate(o.expected_delivery_date)}</td>
                                    <td className="px-4 py-3"><Badge status={o.status} /></td>
                                    <td className="px-4 py-3 text-right font-medium">{formatCurrency(o.total_amount, o.currency)}</td>
                                </tr>
                            ))}
                        </tbody>
                    </table>
                    {orders.data.length===0&&<p className="text-center py-12 text-muted-foreground">No purchase orders found.</p>}
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
