import { useState, useEffect } from 'react';
import { aeroportService, Aeroport } from '@/services/api';

export const useAeroports = () => {
  const [aeroports, setAeroports] = useState<Aeroport[]>([]);
  const [loading, setLoading] = useState<boolean>(true);
  const [error, setError] = useState<string | null>(null);

  const fetchAeroports = async () => {
    try {
      setLoading(true);
      setError(null);
      const data = await aeroportService.getAll();
      setAeroports(data);
    } catch (err: any) {
      setError(err.message || 'Erreur lors de la récupération des aéroports');
      console.error('Erreur:', err);
    } finally {
      setLoading(false);
    }
  };

  useEffect(() => {
    fetchAeroports();
  }, []);

  const refreshAeroports = () => {
    fetchAeroports();
  };

  return {
    aeroports,
    loading,
    error,
    refreshAeroports,
  };
};

export const useAeroport = (id: number) => {
  const [aeroport, setAeroport] = useState<Aeroport | null>(null);
  const [loading, setLoading] = useState<boolean>(true);
  const [error, setError] = useState<string | null>(null);

  const fetchAeroport = async () => {
    try {
      setLoading(true);
      setError(null);
      const data = await aeroportService.getById(id);
      setAeroport(data);
    } catch (err: any) {
      setError(err.message || 'Erreur lors de la récupération de l\'aéroport');
      console.error('Erreur:', err);
    } finally {
      setLoading(false);
    }
  };

  useEffect(() => {
    if (id) {
      fetchAeroport();
    }
  }, [id]);

  const refreshAeroport = () => {
    fetchAeroport();
  };

  return {
    aeroport,
    loading,
    error,
    refreshAeroport,
  };
};

