import { Head, Link, usePage } from '@inertiajs/react';
import { useMemo } from 'react';
import {
    editItem as customerOrderItemEdit,
    index as customerOrdersIndex,
    show as customerOrdersShow,
    updateItem,
} from '@/actions/App/Http/Controllers/CustomerOrderController';
import { CustomerOrderItemForm } from '@/components/customer-orders/customer-order-item-form';
import { Button } from '@/components/ui/button';
import { useLanguage } from '@/contexts/language-context';
import AppLayout from '@/layouts/app-layout';
import { dashboard } from '@/routes';

export default function CustomerOrderItemEdit() {
    const { t } = useLanguage();
    const p = t.customerOrdersPage;
    const { order, item, products = [] } = usePage().props;

    const breadcrumbs = useMemo(
        () => [
            { title: t.dashboard.breadcrumb, href: dashboard() },
            { title: t.nav.customers, href: '#' },
            { title: p.breadcrumb, href: customerOrdersIndex.url() },
            {
                title: String(order?.id ?? ''),
                href: customerOrdersShow.url(order?.id),
            },
            {
                title: p.editItemBreadcrumb,
                href: customerOrderItemEdit.url(item?.id),
            },
        ],
        [t.dashboard.breadcrumb, t.nav.customers, p.breadcrumb, p.editItemBreadcrumb, order?.id, item?.id],
    );

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={p.editItemHeadTitle} />
            <div className="flex h-full flex-1 flex-col gap-6 overflow-x-auto p-4">
                <Button variant="outline" size="sm" asChild className="w-fit">
                    <Link href={customerOrdersShow.url(order?.id)} prefetch>
                        {p.backToOrder}
                    </Link>
                </Button>

                <CustomerOrderItemForm
                    labels={p}
                    validation={t.validation}
                    appActions={t.appActions}
                    products={products}
                    item={item}
                    submitUrl={updateItem.url(item?.id)}
                    cancelHref={customerOrdersShow.url(order?.id)}
                />
            </div>
        </AppLayout>
    );
}
