import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import { Head, Link, router } from '@inertiajs/react';
import { Badge } from '@/Components/ui/badge';
import { Button, LinkButton } from '@/Components/ui/button';
import { formatCurrency, formatDate, formatDateTime } from '@/lib/utils';
import { Edit, Printer } from 'lucide-react';

export default function DOShow({ deliveryOrder: d }: any) {
    const act = (href: string, label: string, data: any={}, confirm?: string) => (
        <Button type="button" variant="outline" size="sm" onClick={()=>{ if(confirm&&!window.confirm(confirm)) return; router.post(href,data); }}>{label}</Button>
    );
    return (
        <AuthenticatedLayout header={d.do_number}>
            <Head title={d.do_number} />
            <div className="space-y-6">
                <div className="flex flex-wrap gap-2 items-center">
                    <Badge status={d.status}/>
                    {d.status==='draft'&&act(`/delivery-orders/${d.id}/issue`,'Issue DO')}
                    {d.status==='issued'&&act(`/delivery-orders/${d.id}/transit`,'Mark In Transit')}
                    {d.status==='in_transit'&&act(`/delivery-orders/${d.id}/deliver`,'Mark Delivered')}
                    {!['delivered','cancelled'].includes(d.status)&&act(`/delivery-orders/${d.id}/cancel`,'Cancel',{reason:'Cancelled'},'Cancel this DO?')}
                    <LinkButton href={`/delivery-orders/${d.id}/edit`} variant="outline" size="sm"><Edit className="w-4 h-4"/>Edit</LinkButton>
                    <button onClick={()=>window.print()} className="flex items-center gap-2 px-3 py-1.5 border rounded-md text-sm hover:bg-muted"><Printer className="w-4 h-4"/>Print</button>
                    <LinkButton href="/delivery-orders" variant="ghost" size="sm">← Back</LinkButton>
                </div>
                <div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
                    <div className="space-y-4">
                        <div className="bg-white rounded-lg border p-5 space-y-3">
                            <h2 className="font-semibold border-b pb-2">DO Details</h2>
                            {[['Customer',d.customer?.name],['Client PO#',d.client_po_number],['Currency',d.currency],['Expected Delivery',formatDate(d.expected_delivery_date)],['Issued',formatDateTime(d.issued_at)],['Delivered',formatDateTime(d.delivered_at)]].map(([l,v])=><div key={l}><p className="text-xs text-muted-foreground">{l}</p><p className="text-sm font-medium">{v??'—'}</p></div>)}
                        </div>
                        <div className="bg-white rounded-lg border p-5">
                            <h2 className="font-semibold border-b pb-2 mb-3">Totals</h2>
                            <div className="space-y-1 text-sm">
                                {[['Subtotal',formatCurrency(d.subtotal,d.currency)],[`Tax (${d.tax_rate??0}%)`,formatCurrency(d.tax_amount,d.currency)],['Shipping',formatCurrency(d.shipping_cost??0,d.currency)]].map(([l,v])=><div key={l} className="flex justify-between"><span className="text-muted-foreground">{l}</span><span>{v}</span></div>)}
                                <div className="flex justify-between font-bold text-base border-t pt-2"><span>Total</span><span>{formatCurrency(d.total_amount,d.currency)}</span></div>
                            </div>
                        </div>
                    </div>
                    <div className="lg:col-span-2 bg-white rounded-lg border p-5">
                        <h2 className="font-semibold border-b pb-2 mb-4">Line Items</h2>
                        <table className="w-full text-sm"><thead className="border-b"><tr><th className="text-left py-2 font-medium">Description</th><th className="text-right py-2 font-medium">Qty</th><th className="text-right py-2 font-medium">Unit Price</th><th className="text-right py-2 font-medium">Total</th></tr></thead>
                        <tbody className="divide-y">{d.line_items?.map((i:any)=><tr key={i.id}><td className="py-2">{i.description}{i.sku&&<span className="text-xs text-muted-foreground ml-2">({i.sku})</span>}</td><td className="py-2 text-right">{i.quantity} {i.unit}</td><td className="py-2 text-right">{formatCurrency(i.unit_price,d.currency)}</td><td className="py-2 text-right font-medium">{formatCurrency(i.total_price,d.currency)}</td></tr>)}</tbody></table>
                    </div>
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
