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

interface InstituteRow {
    id: number;
    name: string;
    status: string;
    programmes_count: number;
    enrolment_count: number;
}

interface QueueItem {
    id: number;
    student_name: string;
    title: string;
    submitted_at: string | null;
}

export default function Dashboard({
    stats,
    institutes,
    capstoneQueue,
    videoQueue,
}: {
    stats: {
        institutes: number;
        programmes: number;
        published_programmes: number;
        courses: number;
        active_enrolments: number;
        capstone_pending: number;
    };
    institutes: InstituteRow[];
    capstoneQueue: QueueItem[];
    videoQueue: QueueItem[];
}) {
    return (
        <AdminLayout>
            <Head title="Command Center" />

            <h1 className="text-institute-title text-on-surface">Institutional Command &amp; Oversight</h1>
            <p className="text-body-md text-on-surface-variant">
                Real-time visibility across every Institute, Programme, and certification workflow.
            </p>

            <div className="mt-8 grid gap-4 md:grid-cols-4">
                <StatTile label="Institutes" value={stats.institutes} />
                <StatTile label="Programmes" value={stats.programmes} hint={`${stats.published_programmes} published`} />
                <StatTile label="Active Enrolments" value={stats.active_enrolments} />
                <StatTile label="Capstone Queue" value={stats.capstone_pending} hint="Pending review" />
            </div>

            <div className="mt-10 flex items-center justify-between">
                <h2 className="text-course-title text-on-surface">Institute &amp; Programme Command Center</h2>
                <Link href={route('admin.institutes.index')} className="text-sm font-medium text-jgcp-navy hover:underline">
                    Full Directory ({institutes.length})
                </Link>
            </div>

            <Card className="mt-4 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">Institute</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">Enrolments</th>
                        </tr>
                    </thead>
                    <tbody>
                        {institutes.slice(0, 8).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">
                                    <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 text-on-surface-variant">{institute.enrolment_count}</td>
                            </tr>
                        ))}
                    </tbody>
                </table>
            </Card>

            <div className="mt-10 grid gap-6 md:grid-cols-2">
                <Card>
                    <div className="flex items-center justify-between">
                        <h2 className="text-course-title text-on-surface">Compulsory Video Projects</h2>
                        <Badge tone="gold">{videoQueue.length} Pending</Badge>
                    </div>
                    <div className="mt-4 space-y-3">
                        {videoQueue.map((item) => (
                            <div key={item.id} className="flex items-center justify-between border-b border-outline-variant pb-3 last:border-0">
                                <div>
                                    <p className="text-sm font-medium text-on-surface">{item.student_name}</p>
                                    <p className="text-xs text-on-surface-variant">{item.title}</p>
                                </div>
                                <span className="text-xs text-on-surface-variant">{item.submitted_at}</span>
                            </div>
                        ))}
                        {videoQueue.length === 0 && (
                            <p className="text-sm text-on-surface-variant">No pending video projects.</p>
                        )}
                    </div>
                </Card>

                <Card>
                    <div className="flex items-center justify-between">
                        <h2 className="text-course-title text-on-surface">Capstone Projects</h2>
                        <Badge tone="gold">{capstoneQueue.length} Pending</Badge>
                    </div>
                    <div className="mt-4 space-y-3">
                        {capstoneQueue.map((item) => (
                            <div key={item.id} className="flex items-center justify-between border-b border-outline-variant pb-3 last:border-0">
                                <div>
                                    <p className="text-sm font-medium text-on-surface">{item.student_name}</p>
                                    <p className="text-xs text-on-surface-variant">{item.title}</p>
                                </div>
                                <span className="text-xs text-on-surface-variant">{item.submitted_at}</span>
                            </div>
                        ))}
                        {capstoneQueue.length === 0 && (
                            <p className="text-sm text-on-surface-variant">No pending capstone projects.</p>
                        )}
                    </div>
                </Card>
            </div>
        </AdminLayout>
    );
}
