import { Head, Link, router } from '@inertiajs/react';
import AdminLayout from '@/Layouts/AdminLayout';
import Card from '@/Components/UI/Card';
import Badge from '@/Components/UI/Badge';
import Button from '@/Components/UI/Button';

interface InstituteRow {
    id: number;
    name: string;
    status: string;
    subject_area: string | null;
    programmes_count: number;
}

export default function Index({ institutes }: { institutes: InstituteRow[] }) {
    const destroy = (institute: InstituteRow) => {
        if (confirm(`Remove "${institute.name}"? This cannot be undone.`)) {
            router.delete(route('admin.institutes.destroy', institute.id));
        }
    };

    return (
        <AdminLayout>
            <Head title="Institutes" />

            <div className="flex items-center justify-between">
                <div>
                    <h1 className="text-institute-title text-on-surface">Institutes</h1>
                    <p className="text-body-md text-on-surface-variant">
                        Every Institute may hold one or more Professional Certification Programmes.
                    </p>
                </div>
                <Button href={route('admin.institutes.create')} variant="action">
                    + New Institute
                </Button>
            </div>

            <Card className="mt-6 overflow-x-auto p-0">
                <table className="w-full text-left text-sm">
                    <thead className="border-b border-outline-variant text-on-surface-variant">
                        <tr>
                            <th className="px-6 py-3 font-medium">Name</th>
                            <th className="px-6 py-3 font-medium">Subject Area</th>
                            <th className="px-6 py-3 font-medium">Status</th>
                            <th className="px-6 py-3 font-medium">Programmes</th>
                            <th className="px-6 py-3 font-medium">Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        {institutes.map((institute) => (
                            <tr key={institute.id} className="border-b border-outline-variant last:border-0">
                                <td className="px-6 py-3 font-medium text-on-surface">{institute.name}</td>
                                <td className="px-6 py-3 text-on-surface-variant">{institute.subject_area}</td>
                                <td className="px-6 py-3">
                                    <Badge tone={institute.status === 'published' ? 'published' : 'draft'}>
                                        {institute.status}
                                    </Badge>
                                </td>
                                <td className="px-6 py-3 text-on-surface-variant">{institute.programmes_count}</td>
                                <td className="px-6 py-3">
                                    <div className="flex gap-3">
                                        <Link
                                            href={route('admin.institutes.edit', institute.id)}
                                            className="text-jgcp-navy hover:underline"
                                        >
                                            Edit
                                        </Link>
                                        <button onClick={() => destroy(institute)} className="text-error hover:underline">
                                            Delete
                                        </button>
                                    </div>
                                </td>
                            </tr>
                        ))}
                    </tbody>
                </table>
            </Card>
        </AdminLayout>
    );
}
