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, MapPin, Building, Mail, Phone, Globe } from 'lucide-react';
import { showConfirmation, showSuccess, showError } from '@/lib/toast';

interface Institution {
    id: number;
    name: string;
}

interface InstitutionSede {
    id: number;
    name: string;
    address: string;
    phone?: string;
    email?: string;
    latitude?: number;
    longitude?: number;
    institution_id: number;
    institution: Institution;
    created_at: string;
    updated_at: string;
}

interface Props {
    sede: InstitutionSede;
}

export default function ShowInstitutionSede({ sede }: Props) {
    const breadcrumbs: BreadcrumbItem[] = [
        { title: 'Dashboard', href: '/dashboard' },
        { title: 'Sedes', href: '/institution-sedes' },
        { title: sede.name, href: `/institution-sedes/${sede.id}` },
    ];

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

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={sede.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="p-2 bg-emerald-100 dark:bg-emerald-900/20 rounded-lg">
                            <MapPin className="w-8 h-8 text-emerald-600" />
                        </div>
                        <div>
                            <h1 className="text-2xl font-bold text-emerald-700 dark:text-emerald-400 sm:text-3xl">{sede.name}</h1>
                            <p className="text-slate-600 dark:text-slate-400 mt-1 text-sm">
                                Detalles de la sede institucional
                            </p>
                        </div>
                    </div>
                    <div className="flex gap-2">
                        <Button variant="outline" asChild>
                            <Link href="/institution-sedes">
                                <ArrowLeft className="w-4 h-4 mr-2" />
                                Volver
                            </Link>
                        </Button>
                        <Button variant="outline" asChild>
                            <Link href={`/institution-sedes/${sede.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">
                    <Card>
                        <CardHeader>
                            <CardTitle>Información General</CardTitle>
                            <CardDescription>
                                Datos básicos de la sede
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                                <div>
                                    <label className="text-sm font-medium text-muted-foreground">Nombre de la Sede</label>
                                    <p className="text-lg font-semibold">{sede.name}</p>
                                </div>

                                <div>
                                    <label className="text-sm font-medium text-muted-foreground flex items-center gap-1">
                                        <Building className="w-4 h-4" />
                                        Institución
                                    </label>
                                    <p className="text-lg font-semibold">{sede.institution.name}</p>
                                </div>
                            </div>

                            <div>
                                <label className="text-sm font-medium text-muted-foreground flex items-center gap-1">
                                    <MapPin className="w-4 h-4" />
                                    Dirección
                                </label>
                                <p className="text-sm leading-relaxed mt-1">{sede.address}</p>
                            </div>
                        </CardContent>
                    </Card>

                    <Card>
                        <CardHeader>
                            <CardTitle>Información de Contacto</CardTitle>
                            <CardDescription>
                                Datos de contacto de la sede
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                                {sede.phone && (
                                    <div>
                                        <label className="text-sm font-medium text-muted-foreground flex items-center gap-1">
                                            <Phone className="w-4 h-4" />
                                            Teléfono
                                        </label>
                                        <p className="text-sm">{sede.phone}</p>
                                    </div>
                                )}

                                {sede.email && (
                                    <div>
                                        <label className="text-sm font-medium text-muted-foreground flex items-center gap-1">
                                            <Mail className="w-4 h-4" />
                                            Email
                                        </label>
                                        <p className="text-sm">{sede.email}</p>
                                    </div>
                                )}
                            </div>
                        </CardContent>
                    </Card>

                    {(sede.latitude && sede.longitude) && (
                        <Card>
                            <CardHeader>
                                <CardTitle>Ubicación Geográfica</CardTitle>
                                <CardDescription>
                                    Coordenadas GPS de la sede
                                </CardDescription>
                            </CardHeader>
                            <CardContent className="space-y-4">
                                <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                                    <div>
                                        <label className="text-sm font-medium text-muted-foreground">Latitud</label>
                                        <p className="font-mono text-sm">{sede.latitude}</p>
                                    </div>
                                    <div>
                                        <label className="text-sm font-medium text-muted-foreground">Longitud</label>
                                        <p className="font-mono text-sm">{sede.longitude}</p>
                                    </div>
                                </div>
                                <div className="pt-2">
                                    <Button variant="outline" size="sm" asChild>
                                        <a
                                            href={`https://www.google.com/maps?q=${sede.latitude},${sede.longitude}`}
                                            target="_blank"
                                            rel="noopener noreferrer"
                                        >
                                            <Globe className="w-4 h-4 mr-2" />
                                            Ver en Google Maps
                                        </a>
                                    </Button>
                                </div>
                            </CardContent>
                        </Card>
                    )}

                    <Card>
                        <CardHeader>
                            <CardTitle>Información del Sistema</CardTitle>
                            <CardDescription>
                                Metadatos y fechas de registro
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
                                <div>
                                    <label className="text-sm font-medium text-muted-foreground">ID</label>
                                    <p className="font-mono text-sm">{sede.id}</p>
                                </div>
                                <div>
                                    <label className="text-sm font-medium text-muted-foreground">Fecha de Creación</label>
                                    <p className="text-sm">{new Date(sede.created_at).toLocaleString('es-ES')}</p>
                                </div>
                                <div>
                                    <label className="text-sm font-medium text-muted-foreground">Última Actualización</label>
                                    <p className="text-sm">{new Date(sede.updated_at).toLocaleString('es-ES')}</p>
                                </div>
                            </div>
                        </CardContent>
                    </Card>
                </div>
            </div>
        </AppLayout>
    );
}
