﻿import React, { useState } from 'react';
import { Head, useForm } from '@inertiajs/react';
import { PublicLayout } from '@/Layouts/PublicLayout';
import { Modal } from '@/Components/Modal';
import { CurrencyPrice } from '@/Components/CurrencyPrice';
import { Utensils, Wine, Clock, Users, Check, Sparkles, Calendar, MapPin } from 'lucide-react';

interface Props {
    outlets: any[];
}

export default function Dining({ outlets = [] }: Props) {
    const [selectedOutlet, setSelectedOutlet] = useState<any>(outlets[0] || null);
    const [reservationModalOpen, setReservationModalOpen] = useState(false);

    const reservationForm = useForm({
        dining_outlet_id: selectedOutlet?.id || 1,
        guest_name: '',
        guest_email: '',
        guest_phone: '',
        reservation_date: new Date().toISOString().split('T')[0],
        reservation_time: '19:30',
        party_size: 2,
        seating_preference: 'Rooftop Terrace',
        occasion: 'Casual Dining',
        special_requests: '',
    });

    const handleReserve = (e: React.FormEvent) => {
        e.preventDefault();
        reservationForm.post('/dining/reserve-table', {
            preserveScroll: true,
            onSuccess: () => {
                setReservationModalOpen(false);
                reservationForm.reset();
            },
        });
    };

    return (
        <PublicLayout>
            <Head title="Dining & Rooftop Lounge — Primon Hotel Naalya" />

            {/* Header Hero */}
            <section className="relative py-28 bg-[#1A1A1A] text-[#FBF9F5] text-center border-b border-[#C5A880]/20">
                <div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 space-y-4">
                    <span className="text-xs uppercase tracking-[0.3em] text-[#C5A880] font-semibold">
                        Culinary Artistry
                    </span>
                    <h1 className="font-serif text-4xl sm:text-6xl font-light text-white">
                        Dining & Rooftop Lounge
                    </h1>
                    <p className="text-sm sm:text-base text-gray-300 font-light max-w-2xl mx-auto leading-relaxed">
                        From artisanal breakfasts to dry-aged cuts and elevated sunset cocktails over the Kampala skyline.
                    </p>
                </div>
            </section>

            {/* Outlets Switcher */}
            <section className="py-8 bg-[#F3EFEA] border-b border-[#C5A880]/20">
                <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-wrap justify-center gap-4">
                    {outlets.map((outlet) => (
                        <button
                            key={outlet.id}
                            onClick={() => {
                                setSelectedOutlet(outlet);
                                reservationForm.setData('dining_outlet_id', outlet.id);
                            }}
                            className={`px-6 py-3 rounded-full text-xs font-semibold uppercase tracking-widest transition-all ${
                                selectedOutlet?.id === outlet.id
                                    ? 'bg-[#1A1A1A] text-[#C5A880] shadow-lg border border-[#C5A880]'
                                    : 'bg-[#FBF9F5] text-gray-700 hover:bg-gray-200'
                            }`}
                        >
                            {outlet.name}
                        </button>
                    ))}
                </div>
            </section>

            {/* Selected Outlet Hero Showcase */}
            {selectedOutlet && (
                <section className="py-16 bg-[#FBF9F5]">
                    <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
                        <div className="grid grid-cols-1 lg:grid-cols-12 gap-12 items-center mb-16">
                            <div className="lg:col-span-6 space-y-6">
                                <div className="space-y-2">
                                    <span className="text-xs uppercase tracking-[0.25em] text-[#C5A880] font-semibold">
                                        {selectedOutlet.cuisine_type}
                                    </span>
                                    <h2 className="font-serif text-3xl sm:text-5xl font-light">
                                        {selectedOutlet.name}
                                    </h2>
                                    <p className="text-sm sm:text-base text-gray-700 font-light leading-relaxed">
                                        {selectedOutlet.description}
                                    </p>
                                </div>

                                <div className="p-4 rounded-2xl bg-[#F3EFEA] border border-[#C5A880]/20 flex items-center gap-3">
                                    <Clock className="h-5 w-5 text-[#C5A880] shrink-0" />
                                    <span className="text-xs font-medium text-[#1A1A1A]">{selectedOutlet.opening_hours}</span>
                                </div>

                                <button
                                    onClick={() => setReservationModalOpen(true)}
                                    className="bg-[#C5A880] hover:bg-[#DFC7A5] text-[#1A1A1A] px-8 py-3.5 rounded-full text-xs font-bold uppercase tracking-widest transition-all shadow-lg flex items-center gap-2"
                                >
                                    <Calendar className="h-4 w-4" />
                                    <span>Reserve a Table Online</span>
                                </button>
                            </div>

                            <div className="lg:col-span-6">
                                <img
                                    src={selectedOutlet.cover_image || 'https://images.unsplash.com/photo-1517248135467-4c7edcad34c4?auto=format&fit=crop&w=1200&q=80'}
                                    alt={selectedOutlet.name}
                                    className="rounded-3xl shadow-2xl w-full h-96 object-cover border border-[#C5A880]/30"
                                />
                            </div>
                        </div>

                        {/* Digital Menus */}
                        <div className="space-y-12 pt-8 border-t border-gray-200">
                            <div className="text-center max-w-2xl mx-auto space-y-2">
                                <span className="text-xs uppercase tracking-[0.25em] text-[#C5A880] font-semibold">
                                    A la Carte Menu
                                </span>
                                <h3 className="font-serif text-3xl sm:text-4xl font-light">
                                    Curated Culinary Selections
                                </h3>
                            </div>

                            <div className="space-y-12">
                                {(selectedOutlet.categories || []).map((cat: any) => (
                                    <div key={cat.id} className="space-y-6">
                                        <h4 className="font-serif text-2xl font-medium text-[#1A1A1A] pb-2 border-b border-[#C5A880]/30">
                                            {cat.name}
                                        </h4>
                                        <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
                                            {(cat.items || []).map((item: any) => (
                                                <div 
                                                    key={item.id}
                                                    className="p-6 rounded-2xl bg-[#F3EFEA] border border-[#C5A880]/20 flex flex-col justify-between space-y-3"
                                                >
                                                    <div className="flex items-start justify-between gap-4">
                                                        <div>
                                                            <h5 className="font-serif text-lg font-medium text-[#1A1A1A]">
                                                                {item.name}
                                                            </h5>
                                                            <p className="text-xs text-gray-600 font-light mt-1 leading-relaxed">
                                                                {item.description}
                                                            </p>
                                                        </div>
                                                        <span className="font-serif text-lg text-[#C5A880] font-semibold whitespace-nowrap">
                                                            <CurrencyPrice amountUsd={item.price_usd} />
                                                        </span>
                                                    </div>

                                                    {item.dietary_tags && (
                                                        <div className="flex flex-wrap gap-1.5 pt-2">
                                                            {item.dietary_tags.map((tag: string, tIdx: number) => (
                                                                <span key={tIdx} className="text-[9px] bg-white border border-[#C5A880]/30 px-2 py-0.5 rounded text-gray-600 font-medium">
                                                                    {tag}
                                                                </span>
                                                            ))}
                                                        </div>
                                                    )}
                                                </div>
                                            ))}
                                        </div>
                                    </div>
                                ))}
                            </div>
                        </div>
                    </div>
                </section>
            )}

            {/* Table Reservation Modal */}
            <Modal
                isOpen={reservationModalOpen}
                onClose={() => setReservationModalOpen(false)}
                title={`Reserve Table — ${selectedOutlet?.name || 'Primon Dining'}`}
            >
                <form onSubmit={handleReserve} className="space-y-4">
                    <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Full Name
                            </label>
                            <input
                                type="text"
                                required
                                value={reservationForm.data.guest_name}
                                onChange={(e) => reservationForm.setData('guest_name', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            />
                        </div>
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Email Address
                            </label>
                            <input
                                type="email"
                                required
                                value={reservationForm.data.guest_email}
                                onChange={(e) => reservationForm.setData('guest_email', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            />
                        </div>
                    </div>

                    <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Phone / WhatsApp
                            </label>
                            <input
                                type="text"
                                required
                                value={reservationForm.data.guest_phone}
                                onChange={(e) => reservationForm.setData('guest_phone', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            />
                        </div>
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Party Size
                            </label>
                            <select
                                value={reservationForm.data.party_size}
                                onChange={(e) => reservationForm.setData('party_size', parseInt(e.target.value))}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            >
                                {[1,2,3,4,5,6,8,10,12,16].map((num) => (
                                    <option key={num} value={num}>{num} Guests</option>
                                ))}
                            </select>
                        </div>
                    </div>

                    <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Date
                            </label>
                            <input
                                type="date"
                                required
                                value={reservationForm.data.reservation_date}
                                onChange={(e) => reservationForm.setData('reservation_date', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            />
                        </div>
                        <div>
                            <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                                Time Slot
                            </label>
                            <select
                                value={reservationForm.data.reservation_time}
                                onChange={(e) => reservationForm.setData('reservation_time', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2.5 text-xs focus:outline-none focus:border-[#C5A880]"
                            >
                                <option value="12:30">12:30 (Lunch)</option>
                                <option value="13:30">13:30 (Lunch)</option>
                                <option value="17:00">17:00 (Sunset Drinks)</option>
                                <option value="18:30">18:30 (Dinner)</option>
                                <option value="19:30">19:30 (Dinner)</option>
                                <option value="20:30">20:30 (Dinner)</option>
                            </select>
                        </div>
                    </div>

                    <div>
                        <label className="text-xs font-semibold uppercase tracking-wider text-gray-600 block mb-1">
                            Dietary Requests or Special Occasion
                        </label>
                        <textarea
                            rows={2}
                            placeholder="e.g. Anniversary dinner, vegetarian menu preference, terrace table"
                            value={reservationForm.data.special_requests}
                            onChange={(e) => reservationForm.setData('special_requests', e.target.value)}
                            className="w-full bg-white border border-gray-300 rounded-xl px-3.5 py-2 text-xs focus:outline-none focus:border-[#C5A880]"
                        />
                    </div>

                    <button
                        type="submit"
                        disabled={reservationForm.processing}
                        className="w-full bg-[#C5A880] hover:bg-[#DFC7A5] text-[#1A1A1A] py-3 rounded-xl text-xs font-bold uppercase tracking-widest transition-all shadow-md"
                    >
                        Confirm Table Reservation
                    </button>
                </form>
            </Modal>
        </PublicLayout>
    );
}
