import { Head, Link, usePage } from '@inertiajs/react';

interface Tier {
    id: number;
    name: string;
    type: string;
    duration: string;
    price_usd: string;
}

interface Subscription {
    id: number;
    status: string;
    starts_at: string;
    expires_at: string | null;
    certificate_number: string | null;
    tier: Tier;
}

export default function PortalDashboard({ subscription }: { subscription: Subscription | null }) {
    const { auth } = usePage().props;
    const user = (auth as { user: { name: string; email: string; membership_number?: string } }).user;

    return (
        <>
            <Head title="My Dashboard" />
            <div className="space-y-6">
                <div>
                    <h1 className="font-serif text-2xl font-bold text-[#0A2647]">
                        Welcome, {user.name}
                    </h1>
                    <p className="mt-1 text-sm text-muted-foreground">Your ABEC membership dashboard</p>
                </div>

                {subscription ? (
                    <div className="rounded-xl border border-border bg-white p-6">
                        <div className="flex items-start justify-between">
                            <div>
                                <p className="text-xs font-semibold uppercase tracking-widest text-[#1B6B7D]">
                                    Membership
                                </p>
                                <h2 className="mt-1 font-serif text-xl font-bold text-[#0A2647]">
                                    {subscription.tier.name}
                                </h2>
                            </div>
                            <span
                                className={`rounded-full px-3 py-1 text-xs font-semibold ${
                                    subscription.status === 'active'
                                        ? 'bg-green-100 text-green-700'
                                        : 'bg-yellow-100 text-yellow-700'
                                }`}
                            >
                                {subscription.status}
                            </span>
                        </div>
                        <div className="mt-4 grid gap-4 sm:grid-cols-3">
                            {subscription.starts_at && (
                                <div>
                                    <p className="text-xs text-muted-foreground">Since</p>
                                    <p className="text-sm font-medium">
                                        {new Date(subscription.starts_at).toLocaleDateString('en-GB', {
                                            day: 'numeric',
                                            month: 'long',
                                            year: 'numeric',
                                        })}
                                    </p>
                                </div>
                            )}
                            {subscription.expires_at && (
                                <div>
                                    <p className="text-xs text-muted-foreground">Expires</p>
                                    <p className="text-sm font-medium">
                                        {new Date(subscription.expires_at).toLocaleDateString('en-GB', {
                                            day: 'numeric',
                                            month: 'long',
                                            year: 'numeric',
                                        })}
                                    </p>
                                </div>
                            )}
                            {subscription.certificate_number && (
                                <div>
                                    <p className="text-xs text-muted-foreground">Certificate No.</p>
                                    <p className="text-sm font-medium font-mono">{subscription.certificate_number}</p>
                                </div>
                            )}
                        </div>
                    </div>
                ) : (
                    <div className="rounded-xl border border-dashed border-[#C8D8EC] bg-[#EEF2F8] p-8 text-center">
                        <p className="font-serif text-lg font-semibold text-[#0A2647]">No active membership</p>
                        <p className="mt-2 text-sm text-muted-foreground">
                            Apply for membership to access all ABEC benefits.
                        </p>
                        <Link
                            href="/membership"
                            className="mt-4 inline-flex items-center rounded-full bg-[#0A2647] px-6 py-2.5 text-sm font-semibold text-white transition-colors hover:bg-[#071D35]"
                        >
                            Apply Now
                        </Link>
                    </div>
                )}

                {/* Quick links */}
                <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
                    {[
                        { href: '/portal/membership', label: 'My Membership', description: 'View certificate & status' },
                        { href: '/portal/events', label: 'Events', description: 'Registered and upcoming' },
                        { href: '/portal/directory', label: 'Directory', description: 'Connect with members' },
                        { href: '/portal/profile', label: 'Profile', description: 'Update your details' },
                    ].map((link) => (
                        <Link
                            key={link.href}
                            href={link.href}
                            className="rounded-xl border border-border bg-white p-5 transition-shadow hover:shadow-md"
                        >
                            <p className="font-semibold text-[#0A2647]">{link.label}</p>
                            <p className="mt-1 text-xs text-muted-foreground">{link.description}</p>
                        </Link>
                    ))}
                </div>
            </div>
        </>
    );
}
