import { useState, useEffect } from 'react';
import axios from 'axios';
import { VentanaOption } from '../../Interfaces/Interfaces';
import { tipoContratoDesdeTipoprecio } from '../../ModalPrecios';

interface UseModalPreciosProps {
    servicio_Integracion: string;
    tipoCups: string;
    formDataElectrico: any;
    formDataGas: any;
}

export const useModalPrecios = ({
    servicio_Integracion,
    tipoCups,
    formDataElectrico,
    formDataGas
}: UseModalPreciosProps) => {
    const [showModalPrecios, setShowModalPrecios] = useState(false);
    const [modalRowIndex, setModalRowIndex] = useState<number>(-1);
    const [ventanaOptions, setVentanaOptions] = useState<VentanaOption[]>([]);

    const buscarVentanasPrecios = () => {
        if (!servicio_Integracion) {
            console.log("buscarVentanasPrecios llamado sin Servicio_Integracion");
            return;
        }

        let params = {};
        if (tipoCups === "luz") {
            params = {
                gama: formDataElectrico.codigoServicioProducto,
                tipo_contrato: tipoContratoDesdeTipoprecio(formDataElectrico.tipoprecio),
                tipo_tarifas: tipoCups,
                tarifa_luz: formDataElectrico.tarifa,
                tipo_contrato_gas: "",
                servicio: servicio_Integracion
            };
        } else {
            params = {
                gama: formDataGas.codigoServicioProducto,
                tipo_contrato: "",
                tipo_tarifas: tipoCups,
                tarifa_gas: "",
                tipo_contrato_gas: tipoContratoDesdeTipoprecio(formDataGas.tipoprecio),
                servicio: servicio_Integracion
            };
        }

        axios.post(route('tarifas.integracion'), { ...params })
            .then(res => {
                setVentanaOptions(res.data.data);
            })
            .catch((e) => {
                console.error("Error al buscar ventanas de precios:", e);
                setVentanaOptions([]);
            });
    };

    const handleOpenModalPrecios = (index: number) => {
        setModalRowIndex(index);
        setShowModalPrecios(true);
    };

    const handleCloseModalPrecios = () => {
        setShowModalPrecios(false);
        setModalRowIndex(-1);
    };

    return {
        showModalPrecios,
        setShowModalPrecios,
        modalRowIndex,
        setModalRowIndex,
        ventanaOptions,
        setVentanaOptions,
        buscarVentanasPrecios,
        handleOpenModalPrecios,
        handleCloseModalPrecios
    };
};

