testes/src_2/features/financeiro-cnab/hooks/useFavorecidos.js

63 lines
1.8 KiB
JavaScript

import { useState, useEffect, useCallback } from 'react';
import { toast } from 'sonner';
import cnabService from '../services/cnabService';
/**
* Hook customizado para gestão de favorecidos CNAB
*/
export const useFavorecidos = () => {
const [favorecidos, setFavorecidos] = useState([]);
const [loading, setLoading] = useState(true);
const [selectedFavorecido, setSelectedFavorecido] = useState(null);
const [searchTerm, setSearchTerm] = useState('');
/**
* Carrega favorecidos iniciais
*/
const loadFavorecidos = useCallback(async () => {
setLoading(true);
try {
const data = await cnabService.getFavorecidos();
setFavorecidos(data);
} catch (error) {
toast.error('Erro ao carregar favorecidos.');
} finally {
setLoading(false);
}
}, []);
useEffect(() => {
loadFavorecidos();
}, [loadFavorecidos]);
/**
* Filtra favorecidos baseado no termo de busca
*/
const filteredFavorecidos = favorecidos.filter(f =>
f.nome.toLowerCase().includes(searchTerm.toLowerCase()) ||
f.documento.includes(searchTerm) ||
f.pix.toLowerCase().includes(searchTerm.toLowerCase())
);
const handleExport = () => {
toast.success('Exportação iniciada para o formato Excel.');
};
const handleDelete = (id) => {
setFavorecidos(prev => prev.filter(f => f.id !== id));
toast.success('Favorecido removido com sucesso.');
};
return {
favorecidos: filteredFavorecidos,
loading,
searchTerm,
setSearchTerm,
selectedFavorecido,
setSelectedFavorecido,
handleExport,
handleDelete,
refresh: loadFavorecidos
};
};