/**
 * Modal Clientes - Funcionalidad para búsqueda y selección de clientes
 */

// Namespace para evitar conflictos
const ModalClientes = {
    // Inicializar eventos
    init: function() {
        console.log('Inicializando ModalClientes');
        
        // Limpiar cualquier evento previo
        $('#buscarCliente').off();
        $('.btn-buscar-cliente').off();
        $('#modalCliente').off('shown.bs.modal');
        $(document).off('click', '.btn-seleccionar-cliente');
        $(document).off('click', '#resultadosClientes tr');
        
        // Evento de búsqueda
        $('#buscarCliente').on('input', function() {
            const busqueda = $(this).val().trim();
            ModalClientes.realizarBusqueda(busqueda);
        });
        
        // Evento al mostrar el modal
        $('#modalCliente').on('shown.bs.modal', function() {
            $('#buscarCliente').val('').focus();
            ModalClientes.realizarBusqueda('');
        });
        
        // Evento para botón de seleccionar
        $(document).on('click', '.btn-seleccionar-cliente', function(e) {
            e.preventDefault();
            e.stopPropagation();
            const id = $(this).data('id');
            const nombre = $(this).data('nombre');
            ModalClientes.seleccionarCliente(id, nombre);
        });
        
        // Evento para seleccionar haciendo clic en la fila en móviles
        $(document).on('click', '#resultadosClientes tr', function(e) {
            if ($(window).width() < 768 && !$(e.target).is('button') && !$(e.target).parents('button').length) {
                const id = $(this).data('id');
                const nombre = $(this).data('nombre');
                if (id && nombre) {
                    ModalClientes.seleccionarCliente(id, nombre);
                }
            }
        });
        
        // Verificar si ya hay un cliente seleccionado
        if ($('#cliente_id').val() && $('#cliente_nombre').val()) {
            console.log('Ya hay un cliente seleccionado:', {
                id: $('#cliente_id').val(),
                nombre: $('#cliente_nombre').val()
            });
            $('#btn-buscar-container').hide();
        } else {
            console.log('No hay cliente seleccionado previamente');
            $('#btn-buscar-container').show();
        }
    },
    
    // Realizar búsqueda
    realizarBusqueda: function(busqueda) {
        console.log('Realizando búsqueda:', busqueda);
        $('#resultadosClientes').html('<tr><td colspan="4" class="text-center"><i>Buscando...</i></td></tr>');
        
        $.ajax({
            url: 'buscar_clientes.php',
            method: 'POST',
            data: { busqueda: busqueda },
            cache: false,
            success: function(response) {
                $('#resultadosClientes').html(response);
                console.log('Búsqueda completada');
            },
            error: function(xhr, status, error) {
                console.error('Error en búsqueda:', error);
                $('#resultadosClientes').html('<tr><td colspan="4" class="text-center">Error al buscar clientes</td></tr>');
            }
        });
    },
    
    // Seleccionar cliente
    seleccionarCliente: function(id, nombre) {
        console.log('Cliente seleccionado:', id, nombre);
        
        // Limpiar cualquier dato previo
        sessionStorage.clear();
        localStorage.clear();
        
        // Actualizar campos
        $('#cliente_id').val(id);
        $('#cliente_nombre').val(nombre);
        $('#modalCliente').modal('hide');
        $('#btn-buscar-container').hide();
        
        // Guardar en sesión
        $.ajax({
            url: 'guardar_cliente_sesion.php',
            method: 'POST',
            data: { 
                id: id, 
                nombre: nombre,
                clear_previous: true  // Nuevo parámetro para indicar limpieza
            },
            dataType: 'json',
            success: function(response) {
                if (response.success) {
                    console.log('Cliente guardado en sesión');
                    // Solo guardar datos actuales
                    sessionStorage.setItem('cliente_actual', JSON.stringify({
                        id: id,
                        nombre: nombre,
                        timestamp: new Date().getTime()
                    }));
                }
            }
        });
    }
};

// Inicializar cuando el documento esté listo
$(document).ready(function() {
    ModalClientes.init();
});
