import { useState, ReactNode } from "react";
import { Head } from '@inertiajs/react';
import { useQuery } from "@tanstack/react-query";
import AdminLayout from '@/layouts/AdminLayout';
import { Label } from "@/components/ui/label";
import { Badge } from "@/components/ui/badge";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
import TrainerAvailabilityPanel from "@/components/admin/TrainerAvailabilityPanel";

// This page is just a trainer picker around TrainerAvailabilityPanel — the
// exact same panel shown by the Availability icon on /admin/trainers — so both
// entry points stay perfectly in sync (weekly days, bank holidays, overrides,
// specific dates).
const Availability = () => {
  const [selectedTrainerId, setSelectedTrainerId] = useState("");

  const { data: trainers } = useQuery({
    queryKey: ["trainers"],
    queryFn: async (): Promise<any[]> => {
      const res = await fetch('/api/admin/trainers');
      if (!res.ok) return [];
      return res.json();
    },
  });

  const selectedTrainer = trainers?.find((t: any) => t.id === selectedTrainerId);

  return (
    <>
      <Head title="Trainer Availability" />
      <div>
        <h1 className="text-2xl font-bold text-foreground mb-6">Trainer Availability</h1>

        <div className="mb-6 max-w-sm">
          <Label className="mb-2 block">Select Trainer</Label>
          <Select value={selectedTrainerId} onValueChange={setSelectedTrainerId}>
            <SelectTrigger><SelectValue placeholder="Choose a trainer" /></SelectTrigger>
            <SelectContent>
              {trainers?.map((t: any) => (
                <SelectItem key={t.id} value={t.id}>
                  <span className="flex items-center gap-2">
                    {t.first_name} {t.last_name}
                    <Badge variant="outline" className="text-[10px] ml-1">
                      {t.availability_mode === "specific_dates" ? "Specific Dates" : "Weekly"}
                    </Badge>
                  </span>
                </SelectItem>
              ))}
            </SelectContent>
          </Select>
        </div>

        {selectedTrainerId && selectedTrainer && (
          <TrainerAvailabilityPanel
            trainerId={selectedTrainerId}
            trainerName={`${selectedTrainer.first_name} ${selectedTrainer.last_name}`}
          />
        )}
      </div>
    </>
  );
};

Availability.layout = (page: ReactNode) => <AdminLayout>{page}</AdminLayout>;

export default Availability;
