import type { NextPage } from 'next';
import Head from 'next/head';
import { useSession } from 'next-auth/react';
import { useRouter } from 'next/router';
import Link from 'next/link';
import { useEffect, useState } from 'react';
import toast from 'react-hot-toast';

interface Order {
  id: number;
  orderNumber: string;
  date: string;
  total: number;
  status: string;
  items: number;
}

const Orders: NextPage = () => {
  const { status } = useSession();
  const router = useRouter();
  const [orders, setOrders] = useState<Order[]>([]);
  const [isLoading, setIsLoading] = useState(true);

  useEffect(() => {
    if (status === 'unauthenticated') {
      router.push('/login');
    }
  }, [status, router]);

  useEffect(() => {
    const fetchOrders = async () => {
      try {
        const response = await fetch('/api/user/orders');
        if (response.ok) {
          const data = await response.json();
          setOrders(data.orders);
        } else {
          toast.error('Chyba při načítání objednávek');
        }
      } catch (error) {
        toast.error('Chyba při připojení');
      } finally {
        setIsLoading(false);
      }
    };

    if (status === 'authenticated') {
      fetchOrders();
    }
  }, [status]);

  if (status === 'loading') {
    return (
      <div className="min-h-screen flex items-center justify-center pt-48 pb-8">
        <div className="text-luxury-light">Načítání...</div>
      </div>
    );
  }

  if (status === 'unauthenticated') {
    return null;
  }

  return (
    <>
      <Head>
        <title>Moje objednávky | Vystříkejto.cz</title>
        <meta name="robots" content="noindex,nofollow,noarchive" />
      </Head>
      <div className="min-h-screen w-full bg-luxury-dark pt-48 pb-16">
        <div className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
          {/* Header */}
          <div className="mb-12">
            <Link href="/profile">
              <button className="flex items-center gap-2 text-luxury-gold hover:text-yellow-300 font-semibold text-sm uppercase tracking-wider mb-6 transition-colors">
                <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
                </svg>
                Zpět na profil
              </button>
            </Link>
            <h1 className="text-4xl md:text-5xl font-aptos font-black text-luxury-light mb-4">
              Moje objednávky
            </h1>
            <p className="text-luxury-light/70">Celkem {orders.length} objednávek</p>
          </div>

          {/* Orders List */}
          {isLoading ? (
            <div className="text-center text-luxury-light/60 py-16">Načítání objednávek...</div>
          ) : orders.length === 0 ? (
            <div className="bg-luxury-dark/40 border border-luxury-gold/20 rounded-lg p-12 text-center">
              <svg className="w-16 h-16 text-luxury-gold/30 mx-auto mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z" />
              </svg>
              <p className="text-luxury-light/60 text-lg mb-6">Zatím nemáte žádné objednávky</p>
              <Link href="/">
                <button className="px-8 py-3 bg-luxury-gold hover:bg-yellow-300 text-luxury-dark font-semibold rounded-lg transition-all">
                  Začít nakupovat
                </button>
              </Link>
            </div>
          ) : (
            <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
              {orders.map((order) => (
                <Link key={order.id} href={`/orders/${order.id}`}>
                  <div className="group cursor-pointer bg-luxury-dark/40 border border-luxury-gold/20 hover:border-luxury-gold/40 rounded-lg p-6 hover:bg-luxury-dark/60 transition-all h-full flex flex-col">
                    <div className="grid grid-cols-1 gap-4 flex-1">
                      {/* Order Number */}
                      <div>
                        <p className="text-luxury-light/50 text-xs font-semibold uppercase tracking-wider mb-2">
                          Číslo objednávky
                        </p>
                        <p className="text-xl font-aptos font-bold text-luxury-light group-hover:text-luxury-gold transition-colors">
                          #{order.orderNumber}
                        </p>
                      </div>

                      {/* Date */}
                      <div>
                        <p className="text-luxury-light/50 text-xs font-semibold uppercase tracking-wider mb-2">
                          Datum
                        </p>
                        <p className="text-luxury-light">{order.date}</p>
                      </div>

                      {/* Items Count */}
                      <div>
                        <p className="text-luxury-light/50 text-xs font-semibold uppercase tracking-wider mb-2">
                          Položky
                        </p>
                        <p className="text-luxury-light">
                          {order.items} {order.items === 1 ? 'položka' : order.items < 5 ? 'položky' : 'položek'}
                        </p>
                      </div>

                      {/* Status & Total */}
                      <div className="text-right">
                        <p className="text-luxury-light/50 text-xs font-semibold uppercase tracking-wider mb-2">
                          Stav
                        </p>
                        <div className="flex flex-col items-end gap-2">
                          <span className="px-3 py-1 bg-luxury-gold/10 border border-luxury-gold/30 text-luxury-gold text-sm font-semibold rounded">
                            {order.status}
                          </span>
                          <p className="text-xl font-aptos font-bold text-luxury-light">
                            {Number(order.total).toFixed(2)} Kč
                          </p>
                        </div>
                      </div>
                    </div>

                    {/* Hover Arrow */}
                    <div className="flex justify-end mt-4 pt-4 border-t border-luxury-gold/10">
                      <svg className="w-5 h-5 text-luxury-gold group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                        <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
                      </svg>
                    </div>
                  </div>
                </Link>
              ))}
            </div>
          )}
        </div>
      </div>
    </>
  );
};

export default Orders;
