import { useState, useCallback } from 'react';
import { rhService } from '../services/rhService';

/**
 * Hook para gestão de vencimentos de contratos de experiência
 */
export const useContratosExperiencia = () => {
  const [vencimentos, setVencimentos] = useState([]);
  const [loading, setLoading] = useState(false);
  const [filters, setFilters] = useState({
    search: '',
    status: '',
    dias_vencimento: ''
  });

  const fetchVencimentosContratosExperiencia = useCallback(async () => {
    setLoading(true);
    try {
      // Por enquanto, usar dados mock até a API estar disponível
      const response = await rhService.getVencimentosContratosExperiencia();
      
      // Calcular dias restantes e status
      const hoje = new Date();
      hoje.setHours(0, 0, 0, 0);
      
      const vencimentosProcessados = (response || []).map(item => {
        const dataVencimento = item.data_vencimento ? new Date(item.data_vencimento) : null;
        let diasRestantes = null;
        let statusVencimento = 'Vigente';

        if (dataVencimento) {
          dataVencimento.setHours(0, 0, 0, 0);
          const diffTime = dataVencimento - hoje;
          diasRestantes = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

          if (diasRestantes < 0) {
            statusVencimento = 'Vencido';
          } else if (diasRestantes <= 7) {
            statusVencimento = 'Vence em breve';
          } else if (diasRestantes <= 30) {
            statusVencimento = 'Atenção';
          }
        }

        return {
          ...item,
          dias_restantes: diasRestantes,
          status_vencimento: statusVencimento
        };
      });

      setVencimentos(vencimentosProcessados);
    } catch (error) {
      console.error('Erro ao buscar vencimentos:', error);
      setVencimentos([]);
    } finally {
      setLoading(false);
    }
  }, []);

  const updateFilters = useCallback((newFilters) => {
    setFilters(prev => ({ ...prev, ...newFilters }));
  }, []);

  return {
    vencimentos,
    loading,
    filters,
    fetchVencimentosContratosExperiencia,
    setFilters: updateFilters
  };
};
