import { useState, useCallback } from 'react';
import { Cliente } from '../../Interfaces/Interfaces';

export const useClientesPorFila = () => {
    const [selectedClientesElectricoPorFila, setSelectedClientesElectricoPorFila] = useState<{ [key: number]: Cliente[] }>({});
    const [selectedClientesGasPorFila, setSelectedClientesGasPorFila] = useState<{ [key: number]: Cliente[] }>({});

    const handleClienteElectricoChange = useCallback((cliente: Cliente | null, index: number, setData: (key: string, value: any) => void, dataElectrico: any[]) => {
        if (cliente) {
            const updatedElectrico = [...dataElectrico];
            updatedElectrico[index] = {
                ...updatedElectrico[index],
                documento_fiscal: cliente.NumCifCli,
                razon_social: cliente.RazSocCli,
                clienteId: cliente.CodCli
            };
            setData("electrico", updatedElectrico);
            setSelectedClientesElectricoPorFila(prev => ({ ...prev, [index]: [cliente] }));
        }
    }, []);

    const handleClienteGasChange = useCallback((cliente: Cliente | null, index: number, setData: (key: string, value: any) => void, dataGas: any[]) => {
        if (cliente) {
            const updatedGas = [...dataGas];
            updatedGas[index] = {
                ...updatedGas[index],
                documento_fiscal: cliente.NumCifCli,
                razon_social: cliente.RazSocCli,
                clienteId: cliente.CodCli
            };
            setData("gas", updatedGas);
            setSelectedClientesGasPorFila(prev => ({ ...prev, [index]: [cliente] }));
        }
    }, []);

    const handleClearClienteElectrico = useCallback((index: number, setData: (key: string, value: any) => void, dataElectrico: any[]) => {
        const updatedElectrico = [...dataElectrico];
        updatedElectrico[index] = {
            ...updatedElectrico[index],
            documento_fiscal: '',
            razon_social: '',
            clienteId: null,
            cups_electrico: '',
            direccion: '',
            tarifa: '',
            nombreTarifa: '',
            consumo_kw: ''
        };
        setData("electrico", updatedElectrico);
        setSelectedClientesElectricoPorFila(prev => {
            const newSelected = { ...prev };
            delete newSelected[index];
            return newSelected;
        });
    }, []);

    const handleClearClienteGas = useCallback((index: number, setData: (key: string, value: any) => void, dataGas: any[]) => {
        const updatedGas = [...dataGas];
        updatedGas[index] = {
            ...updatedGas[index],
            documento_fiscal: '',
            razon_social: '',
            clienteId: null,
            cupsGas: '',
            direccionGas: '',
            tarifaGas: '',
            nombreTarifa: '',
            consumoGas: ''
        };
        setData("gas", updatedGas);
        setSelectedClientesGasPorFila(prev => {
            const newSelected = { ...prev };
            delete newSelected[index];
            return newSelected;
        });
    }, []);

    return {
        selectedClientesElectricoPorFila,
        setSelectedClientesElectricoPorFila,
        selectedClientesGasPorFila,
        setSelectedClientesGasPorFila,
        handleClienteElectricoChange,
        handleClienteGasChange,
        handleClearClienteElectrico,
        handleClearClienteGas
    };
};

