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

type Order = {
    order_number: string;
    status: string;
    payment_status: string;
    tracking_number: string | null;
    total: string;
    items: { id: number; product_name: string; sku: string; quantity: number; total: string }[];
};

export default function OrderTrack({
    order,
    filters,
}: {
    order: Order | null;
    filters: { order_number: string; email: string };
}) {
    const [orderNumber, setOrderNumber] = useState(filters.order_number);
    const [email, setEmail] = useState(filters.email);

    function submit(event: FormEvent) {
        event.preventDefault();
        router.get('/orders/track/result', { order_number: orderNumber, email });
    }

    return (
        <>
            <Head title="Track order" />
            <main className="min-h-screen bg-slate-50 px-4 py-6 text-slate-900 sm:px-6 lg:px-8">
                <div className="mx-auto max-w-3xl rounded-lg border border-slate-200 bg-white p-5">
                    <h1 className="text-2xl font-semibold">Track order</h1>
                    <form onSubmit={submit} className="mt-5 grid gap-3 sm:grid-cols-[1fr_1fr_auto]">
                        <input value={orderNumber} onChange={(event) => setOrderNumber(event.target.value)} placeholder="Order number" className="input" />
                        <input value={email} onChange={(event) => setEmail(event.target.value)} placeholder="Email" type="email" className="input" />
                        <button className="rounded-md bg-cyan-700 px-4 py-2 text-sm font-semibold text-white hover:bg-cyan-800">
                            Track
                        </button>
                    </form>

                    {order ? (
                        <section className="mt-6 border-t border-slate-100 pt-5">
                            <div className="grid gap-3 text-sm sm:grid-cols-4">
                                <div>
                                    <p className="text-slate-500">Order</p>
                                    <p className="font-medium">{order.order_number}</p>
                                </div>
                                <div>
                                    <p className="text-slate-500">Status</p>
                                    <p className="font-medium capitalize">{order.status.replace('_', ' ')}</p>
                                </div>
                                <div>
                                    <p className="text-slate-500">Payment</p>
                                    <p className="font-medium capitalize">{order.payment_status}</p>
                                </div>
                                <div>
                                    <p className="text-slate-500">Tracking</p>
                                    <p className="font-medium">{order.tracking_number ?? '-'}</p>
                                </div>
                            </div>
                            <div className="mt-5 grid gap-2">
                                {order.items.map((item) => (
                                    <div key={item.id} className="flex justify-between gap-4 rounded-md border border-slate-200 p-3 text-sm">
                                        <div>
                                            <p className="font-medium">{item.product_name}</p>
                                            <p className="text-slate-500">SKU {item.sku} x {item.quantity}</p>
                                        </div>
                                        <p className="font-semibold">{item.total}</p>
                                    </div>
                                ))}
                            </div>
                        </section>
                    ) : null}
                </div>
            </main>
        </>
    );
}
