import { useState, useEffect, useCallback } from 'react';
import { prafrotStatisticsService } from '../services/prafrotStatisticsService';
import { toast } from 'sonner';

export const usePrafrotStatistics = () => {
  const [loading, setLoading] = useState(true);
  const [data, setData] = useState({
    totalPlacas: 0,
    placasPorBase: [],
    placasPorAno: [],
    placasPorCategoria: [],
    placasPorModelo: [],
    placasPorTipo: [],
    placasPorStatus: [],
    placasPorManutencao: [],
    placasPorProprietario: [],
    placasPorDisponibilidade: [],
    placasPorUnidade: [],
    placasPorSinistro: [],
    placasPorManutencaoStatus: [],
    quantitativoManutencao: []
  });

  const fetchStatistics = useCallback(async () => {
    setLoading(true);
    try {
      const [
        totalRes,
        baseRes,
        anoRes,
        catRes,
        modRes,
        tipoRes,
        statusRes,
        manutRes,
        propRes,
        dispRes,
        unidRes,
        sinRes,
        mStatusRes,
        qManutRes
      ] = await Promise.all([
        prafrotStatisticsService.getTotalPlacas(),
        prafrotStatisticsService.getPlacasPorBase(),
        prafrotStatisticsService.getPlacasPorAno(),
        prafrotStatisticsService.getPlacasPorCategoria(),
        prafrotStatisticsService.getPlacasPorModelo(),
        prafrotStatisticsService.getPlacasPorTipo(),
        prafrotStatisticsService.getPlacasPorStatus(),
        prafrotStatisticsService.getPlacasPorManutencao(),
        prafrotStatisticsService.getPlacasPorProprietario(),
        prafrotStatisticsService.getPlacasPorDisponibilidade(),
        prafrotStatisticsService.getPlacasPorUnidade(),
        prafrotStatisticsService.getPlacasPorSinistro(),
        prafrotStatisticsService.getPlacasPorManutencaoStatus(),
        prafrotStatisticsService.getQuantitativoManutencao()
      ]);

      setData({
        totalPlacas: totalRes?.total_placas || totalRes?.[0]?.total_placas || 0,
        placasPorBase: Array.isArray(baseRes) ? baseRes : [],
        placasPorAno: Array.isArray(anoRes) ? anoRes : [],
        placasPorCategoria: Array.isArray(catRes) ? catRes : [],
        placasPorModelo: Array.isArray(modRes) ? modRes : [],
        placasPorTipo: Array.isArray(tipoRes) ? tipoRes : [],
        placasPorStatus: Array.isArray(statusRes) ? statusRes : [],
        placasPorManutencao: Array.isArray(manutRes) ? manutRes : [],
        placasPorProprietario: Array.isArray(propRes) ? propRes : [],
        placasPorDisponibilidade: Array.isArray(dispRes) ? dispRes : [],
        placasPorUnidade: Array.isArray(unidRes) ? unidRes : [],
        placasPorSinistro: Array.isArray(sinRes) ? sinRes : [],
        placasPorManutencaoStatus: Array.isArray(mStatusRes) ? mStatusRes : [],
        quantitativoManutencao: Array.isArray(qManutRes) ? qManutRes : []
      });
    } catch (error) {
      console.error('Erro ao buscar estatísticas:', error);
      toast.error('Erro ao carregar dados estatísticos');
    } finally {
      setLoading(false);
    }
  }, []);

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

  return {
    loading,
    data,
    refresh: fetchStatistics
  };
};
