import { Head, usePage } from '@inertiajs/react';
import { useMemo } from 'react';
import {
    destroy as enrollmentDestroy,
    index as enrollmentsIndex,
    store as enrollmentStore,
} from '@/actions/App/Http/Controllers/AttendanceEnrollmentController';
import { AttendanceEnrollmentsPanel } from '@/components/attendance/attendance-enrollments-panel';
import {
    Card,
    CardContent,
    CardDescription,
    CardHeader,
    CardTitle,
} from '@/components/ui/card';
import { useLanguage } from '@/contexts/language-context';
import AppLayout from '@/layouts/app-layout';
import { dashboard } from '@/routes';

export default function AttendanceEnrollmentsIndex() {
    const { t } = useLanguage();
    const p = t.attendancePage;
    const a = t.appActions;
    const page = usePage();
    const { enrollments, filters, devices, staffOptions } = page.props;

    const breadcrumbs = useMemo(
        () => [
            { title: t.dashboard.breadcrumb, href: dashboard() },
            { title: t.nav.employeeManagement, href: '#' },
            { title: p.breadcrumb, href: '#' },
            { title: p.enrollmentsTitle, href: enrollmentsIndex.url() },
        ],
        [t.dashboard.breadcrumb, t.nav.employeeManagement, p.breadcrumb, p.enrollmentsTitle],
    );

    const labels = useMemo(() => ({ ...p }), [p]);

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={p.enrollmentsTitle} />
            <div className="flex flex-col gap-6 p-4">
                <Card>
                    <CardHeader>
                        <CardTitle>{p.enrollmentsTitle}</CardTitle>
                        <CardDescription>{p.enrollmentsSubtitle}</CardDescription>
                    </CardHeader>
                    <CardContent>
                        <AttendanceEnrollmentsPanel
                            enrollments={enrollments}
                            filters={filters}
                            devices={devices ?? []}
                            staffOptions={staffOptions ?? []}
                            labels={labels}
                            indexUrl={(opts) => enrollmentsIndex.url(opts)}
                            storeUrl={enrollmentStore.url()}
                            destroyUrl={(id) =>
                                enrollmentDestroy.url({ attendanceEnrollment: id })
                            }
                            cancelLabel={a.cancel}
                        />
                    </CardContent>
                </Card>
            </div>
        </AppLayout>
    );
}
