import Card from '@/Components/Card';
import DeviceBatteryIndicator from '@/Components/DeviceBatteryIndicator';
import DeviceTypeIcon from '@/Components/DeviceTypeIcon';
import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import { capitalize, t } from '@/lib/utils';
import { Device, User } from '@/types';
import { Head, usePage } from '@inertiajs/react';

interface PatientListProps {
    devices: Device[];
    availableTypes: string[];
    patient: User;
}

export default function PatientList({ devices, patient }: PatientListProps) {
    const user = usePage().props.auth.user;
    const deviceCards = devices.map((device) => (
        <Card
            key={device.id}
            className="relative h-[140px] p-4 pb-3 text-black"
        >
            <div>
                {device.manufacturer} {device.model}
            </div>
            <div className="text-zinc-500">{device.serial_number}</div>
            <div className="absolute bottom-3 left-4">
                <DeviceBatteryIndicator device={device} />
            </div>
            <div className="absolute bottom-3 right-4">
                <DeviceTypeIcon type={device.type} />
            </div>
        </Card>
    ));

    const EmptyMessage = () => {
        return <div className="text-center">Nessun dispositivo assegnato.</div>;
    };

    const backLinkLabel =
        patient.id === user.id
            ? 'Dashboard'
            : `${patient.name} ${patient.surname}`;

    return (
        <AuthenticatedLayout
            backLink={route('dashboard.personal', { target: patient.id })}
            backLinkLabel={backLinkLabel}
        >
            <Head title={capitalize(t('devices'))} />

            <div className="py-2">
                <div className="mx-auto max-w-7xl sm:px-6 lg:px-8">
                    <div className="overflow-hidden sm:rounded-lg">
                        <div className="p-6 text-gray-900">
                            <div className="scroll-m-20 text-4xl font-light tracking-tight lg:text-5xl">
                                {capitalize(t('devices'))}
                            </div>
                            <div className="container mx-auto py-10">
                                <div className="flex flex-col gap-4 md:flex-row">
                                    {deviceCards.length ? (
                                        deviceCards
                                    ) : (
                                        <EmptyMessage />
                                    )}
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
