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

/**
 * Hook customizado para gerenciar a lógica de Operações dentro do GR.
 */
export const useGrOps = () => {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  const fetchDashboardStats = useCallback(async () => {
    setLoading(true);
    setError(null);
    try {
      const data = await grOpsService.getDashboardStats();
      return data;
    } catch (err) {
      setError(err.message || 'Erro ao carregar estatísticas do dashboard');
      return null;
    } finally {
      setLoading(false);
    }
  }, []);

  const runOutlookProcess = useCallback(async (config) => {
    setLoading(true);
    setError(null);
    try {
      const result = await grOpsService.processOutlook(config);
      return result;
    } catch (err) {
      setError(err.message || 'Erro ao processar Outlook');
      return null;
    } finally {
      setLoading(false);
    }
  }, []);

  const fetchChecklists = useCallback(async (params) => {
    setLoading(true);
    setError(null);
    try {
      const data = await grOpsService.getChecklists(params);
      return data;
    } catch (err) {
      setError(err.message || 'Erro ao carregar checklists');
      return null;
    } finally {
      setLoading(false);
    }
  }, []);

  return {
    loading,
    error,
    fetchDashboardStats,
    runOutlookProcess,
    fetchChecklists
  };
};
