import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import AppLayout from '@/layouts/app-layout';
import { type BreadcrumbItem } from '@/types';
import { Head, Link, router } from '@inertiajs/react';
import { ArrowLeft, Edit, Trash2, Building, Mail, Phone, Globe, MapPin } from 'lucide-react';
import { showConfirmation, showSuccess, showError } from '@/lib/toast';

interface Institution {
    id: number;
    name: string;
    description?: string;
    address?: string;
    phone?: string;
    email?: string;
    website?: string;
    created_at: string;
    updated_at: string;
}

interface Props {
    institution: Institution;
}

export default function InstitutionsShow({ institution }: Props) {
    const breadcrumbs: BreadcrumbItem[] = [
        { title: 'Dashboard', href: '/dashboard' },
        { title: 'Instituciones', href: '/institutions' },
        { title: institution.name, href: `/institutions/${institution.id}` },
    ];

    const handleDelete = () => {
        showConfirmation(
            `¿Estás seguro de que quieres eliminar la institución "${institution.name}"?`,
            () => {
                router.delete(`/institutions/${institution.id}`, {
                    onSuccess: () => {
                        showSuccess('Institución eliminada exitosamente');
                    },
                    onError: () => {
                        showError('Error al eliminar la institución');
                    }
                });
            }
        );
    };

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={institution.name} />

            <div className="flex h-full flex-1 flex-col gap-4 p-4 lg:gap-6 lg:p-6">
                <div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
                    <div className="flex items-center gap-4">
                        <div className="flex items-center gap-3">
                            <div className="p-2 bg-emerald-100 dark:bg-emerald-900/20 rounded-lg">
                                <Building className="w-6 h-6 text-emerald-600 dark:text-emerald-400" />
                            </div>
                            <div>
                                <h1 className="text-2xl font-bold text-emerald-700 dark:text-emerald-400 sm:text-3xl">
                                    {institution.name}
                                </h1>
                                <p className="text-slate-600 dark:text-slate-400 mt-1 text-sm">
                                    Detalles de la institución
                                </p>
                            </div>
                        </div>
                    </div>
                    <div className="flex gap-2">
                        <Button variant="outline" asChild>
                            <Link href="/institutions">
                                <ArrowLeft className="w-4 h-4 mr-2" />
                                Volver
                            </Link>
                        </Button>
                        <Button variant="outline" asChild>
                            <Link href={`/institutions/${institution.id}/edit`}>
                                <Edit className="w-4 h-4 mr-2" />
                                Editar
                            </Link>
                        </Button>
                        <Button variant="destructive" onClick={handleDelete}>
                            <Trash2 className="w-4 h-4 mr-2" />
                            Eliminar
                        </Button>
                    </div>
                </div>

                <div className="grid gap-6 lg:grid-cols-2">
                    {/* Institution Details */}
                    <Card>
                        <CardHeader>
                            <CardTitle className="text-emerald-700 dark:text-emerald-400">
                                Información General
                            </CardTitle>
                            <CardDescription>
                                Detalles básicos de la institución
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div>
                                <label className="text-sm font-medium text-slate-900 dark:text-white">
                                    Nombre
                                </label>
                                <p className="mt-1 text-slate-700 dark:text-slate-300 bg-slate-50 dark:bg-slate-800/50 p-3 rounded-lg">
                                    {institution.name}
                                </p>
                            </div>

                            {institution.description && (
                                <div>
                                    <label className="text-sm font-medium text-slate-900 dark:text-white">
                                        Descripción
                                    </label>
                                    <p className="mt-1 text-slate-700 dark:text-slate-300 bg-slate-50 dark:bg-slate-800/50 p-3 rounded-lg">
                                        {institution.description}
                                    </p>
                                </div>
                            )}

                            <div className="grid grid-cols-1 gap-4 sm:grid-cols-2">
                                <div>
                                    <label className="text-sm font-medium text-slate-900 dark:text-white">
                                        Fecha de Creación
                                    </label>
                                    <p className="mt-1 text-slate-700 dark:text-slate-300 bg-slate-50 dark:bg-slate-800/50 p-3 rounded-lg text-sm">
                                        {new Date(institution.created_at).toLocaleDateString('es-ES', {
                                            year: 'numeric',
                                            month: 'long',
                                            day: 'numeric',
                                            hour: '2-digit',
                                            minute: '2-digit'
                                        })}
                                    </p>
                                </div>
                                <div>
                                    <label className="text-sm font-medium text-slate-900 dark:text-white">
                                        Última Actualización
                                    </label>
                                    <p className="mt-1 text-slate-700 dark:text-slate-300 bg-slate-50 dark:bg-slate-800/50 p-3 rounded-lg text-sm">
                                        {new Date(institution.updated_at).toLocaleDateString('es-ES', {
                                            year: 'numeric',
                                            month: 'long',
                                            day: 'numeric',
                                            hour: '2-digit',
                                            minute: '2-digit'
                                        })}
                                    </p>
                                </div>
                            </div>
                        </CardContent>
                    </Card>

                    {/* Contact Information */}
                    <Card>
                        <CardHeader>
                            <CardTitle className="text-emerald-700 dark:text-emerald-400">
                                Información de Contacto
                            </CardTitle>
                            <CardDescription>
                                Datos de contacto y ubicación
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            {institution.address && (
                                <div className="flex items-start gap-3">
                                    <MapPin className="w-5 h-5 text-emerald-600 dark:text-emerald-400 mt-0.5 flex-shrink-0" />
                                    <div className="flex-1">
                                        <label className="text-sm font-medium text-slate-900 dark:text-white">
                                            Dirección
                                        </label>
                                        <p className="mt-1 text-slate-700 dark:text-slate-300">
                                            {institution.address}
                                        </p>
                                    </div>
                                </div>
                            )}

                            {institution.phone && (
                                <div className="flex items-start gap-3">
                                    <Phone className="w-5 h-5 text-emerald-600 dark:text-emerald-400 mt-0.5 flex-shrink-0" />
                                    <div className="flex-1">
                                        <label className="text-sm font-medium text-slate-900 dark:text-white">
                                            Teléfono
                                        </label>
                                        <p className="mt-1 text-slate-700 dark:text-slate-300">
                                            <a href={`tel:${institution.phone}`} className="hover:text-emerald-600 dark:hover:text-emerald-400 transition-colors">
                                                {institution.phone}
                                            </a>
                                        </p>
                                    </div>
                                </div>
                            )}

                            {institution.email && (
                                <div className="flex items-start gap-3">
                                    <Mail className="w-5 h-5 text-emerald-600 dark:text-emerald-400 mt-0.5 flex-shrink-0" />
                                    <div className="flex-1">
                                        <label className="text-sm font-medium text-slate-900 dark:text-white">
                                            Email
                                        </label>
                                        <p className="mt-1 text-slate-700 dark:text-slate-300">
                                            <a href={`mailto:${institution.email}`} className="hover:text-emerald-600 dark:hover:text-emerald-400 transition-colors">
                                                {institution.email}
                                            </a>
                                        </p>
                                    </div>
                                </div>
                            )}

                            {institution.website && (
                                <div className="flex items-start gap-3">
                                    <Globe className="w-5 h-5 text-emerald-600 dark:text-emerald-400 mt-0.5 flex-shrink-0" />
                                    <div className="flex-1">
                                        <label className="text-sm font-medium text-slate-900 dark:text-white">
                                            Sitio Web
                                        </label>
                                        <p className="mt-1 text-slate-700 dark:text-slate-300">
                                            <a
                                                href={institution.website}
                                                target="_blank"
                                                rel="noopener noreferrer"
                                                className="hover:text-emerald-600 dark:hover:text-emerald-400 transition-colors break-all"
                                            >
                                                {institution.website}
                                            </a>
                                        </p>
                                    </div>
                                </div>
                            )}

                            {!institution.address && !institution.phone && !institution.email && !institution.website && (
                                <div className="text-center py-8">
                                    <p className="text-slate-500 dark:text-slate-400">
                                        No hay información de contacto disponible
                                    </p>
                                </div>
                            )}
                        </CardContent>
                    </Card>
                </div>
            </div>
        </AppLayout>
    );
}
