jQuery(function () {
    jQuery(".fa-minus").click(function (e) {
        jQuery(this).parent().parent().find(".row").css("display", "none");
        jQuery(this).parent().parent().find(".fa-plus").css("display", "flex");
        jQuery(this).hide();
    });
    jQuery(".fa-plus").click(function (e) {
        jQuery(this).parent().parent().find(".row").css("display", "block");
        jQuery(this).parent().parent().find(".fa-minus").show();
        jQuery(this).hide();
    });
    jQuery(".cerrar-pedido-gastro a").click(function (e) {
        e.preventDefault();
        jQuery(".mask-pedido").css("display", "none");
    });
    jQuery(".btn-gastro a").click(function (e) {
        e.preventDefault();
        jQuery(".mask-pedido").css("display", "block");
    });
    jQuery(".product-gastro").click(function (e) {
        e.preventDefault();
        // Conseguimos los datos del producto
        var id    = jQuery(this).find(".enviar_producto").attr("data-id");
        var img   = jQuery(this).find(".enviar_producto").attr("data-img");
        var name  = jQuery(this).find(".enviar_producto").attr("data-name");
        var price = jQuery(this).find(".enviar_producto").attr("data-price");
        var html  = '<div class="col-xs-4 col-sm-4 col-md-3 product-item-gastro">';
        var html  = '<div class="col-xs-12 col-sm-12 col-md-12 fila-pedido">';
            html += '   <div class="product-gastro pedido-product-gastro">';
            html += '   <input type="hidden" class="product_id" value="' + id + '">';
            html += '       <div class="img-product-gastro">';
            html += '           <img src="' + img + '" />';
            html += "       </div>";
            html += '       <div class="text-product-gastro">';
            html += "           <h3>" + name + "</h3>";
            html += '           <p class="pvp-product-gastro">' + parseFloat(price).toFixed(2) + " €</p>";
            html += "       </div>";
            html += '       <div class="btn-product-gastro btn-eliminar-gastro">';
            html += '           <a href="#" title="Eliminar producto" class="eliminar-producto"><i class="fa fa-trash" aria-hidden="true"></i></a>';
            html += "       </div>";
            html += "   </div>";
            html += "</div>";

        jQuery(".pedido-cont-gastro .row").append(html);
        // Comprobamos si hay algún cupón asignado
        var cantidad = jQuery("#datos_cupon").attr("data-cantidad");
        if (parseFloat(cantidad) == "NaN") {
            var precio_producto = price;
        } else {
            var valor_total_original1 = parseFloat(jQuery(".valor-total-original h3").text()).toFixed(2);
            var valor_total_original2 = parseFloat(price).toFixed(2);
            var valor_total_original  = parseFloat(parseFloat(valor_total_original1) + parseFloat(valor_total_original2)).toFixed(2);
            jQuery(".valor-total-original h3").text(valor_total_original + " €");
            var porcentual = jQuery("#datos_cupon").attr("data-porcentual");
            if (porcentual == 1) {
                var precio_producto       = (price * (100 - cantidad)) / 100;
                var descuento_cupon       = price - precio_producto;
                var valor_total_descuento = parseFloat(jQuery(".valor-total-descuento h3").text()).toFixed(2) - parseFloat(descuento_cupon).toFixed(2);
                jQuery(".valor-total-descuento h3").text(valor_total_descuento.toFixed(2) + " €");
            } else {
                var precio_producto = price;
            }
        }
        if (typeof valor_total_descuento != "undefined") {
            jQuery("#datos_descuento").val(valor_total_descuento.toFixed(2) + " €");
        }
        var total = (parseFloat(jQuery(".valor-total-pedido h3").text()) || 0) + parseFloat(precio_producto);
        jQuery(".valor-total-pedido h3").text(parseFloat(total).toFixed(2) + " €");
        jQuery("#total_compra").val(parseFloat(total).toFixed(2));
        var total_productos       = parseInt(jQuery(".btn-pago-pedido span").text().replace("(", "").replace(")", ""));
        var total_productos_nuevo = total_productos + 1;
        jQuery(".btn-gastro span").text("( " + total_productos_nuevo + " )");
        // Lo añadimos al input oculto donde están los productos seleccionados
        var productos_ocultos = jQuery("#productos").val();
        if (productos_ocultos == "") {
            productos_ocultos += id;
        } else {
            productos_ocultos += ", " + id;
        }
        jQuery("#productos").val(productos_ocultos);
    });
    jQuery(document).on("click", ".btn-eliminar-gastro .fa", function (e) {
        var price = parseFloat(jQuery(this).parent().parent().parent().parent().find(".pvp-product-gastro").text()).toFixed(2);
        // Comprobamos si hay algún cupón asignado
        var cantidad = jQuery("#datos_cupon").attr("data-cantidad");
        if (parseFloat(cantidad) == "NaN") {
            var precio_producto = price;
        } else {
            var valor_total_original1 = parseFloat(jQuery(".valor-total-original h3").text()).toFixed(2);
            var valor_total_original2 = parseFloat(price).toFixed(2);
            var valor_total_original  = parseFloat(parseFloat(valor_total_original1) - parseFloat(valor_total_original2)).toFixed(2);
            jQuery(".valor-total-original h3").text(valor_total_original + " €");
            var porcentual = jQuery("#datos_cupon").attr("data-porcentual");
            if (porcentual == 1) {
                var precio_producto        = (price * (100 - cantidad)) / 100;
                var descuento_cupon        = price - precio_producto;
                var valor_total_descuento1 = parseFloat(jQuery(".valor-total-descuento h3").text()).toFixed(2);
                var valor_total_descuento2 = parseFloat(descuento_cupon).toFixed(2);
                var valor_total_descuento  = parseFloat(parseFloat(valor_total_descuento1) + parseFloat(valor_total_descuento2)).toFixed(2);
                jQuery(".valor-total-descuento h3").text(valor_total_descuento + " €");
            } else {
                var precio_producto = price;
            }
        }
        if (typeof valor_total_descuento != "undefined") {
            jQuery("#datos_descuento").val(valor_total_descuento + " €");
        } else {
            jQuery("#datos_descuento").val(0);
        }
        var id_producto = parseFloat(jQuery(this).parent().parent().parent().parent().find(".product_id").val());
        jQuery(this).parent().parent().parent().parent().remove();
        var total_productos       = parseInt(jQuery(".btn-pago-pedido span").text().replace("(", "").replace(")", ""));
        var total_productos_nuevo = total_productos - 1;
        jQuery(".btn-gastro span").text("( " + total_productos_nuevo + " )");
        var total = (parseFloat(jQuery(".valor-total-pedido h3").text()).toFixed(2) || 0) - precio_producto;
        jQuery(".valor-total-pedido h3").text(parseFloat(total).toFixed(2) + " €");
        jQuery("#total_compra").val(parseFloat(total).toFixed(2));
        // Lo quitamos al input oculto donde están los productos seleccionados
        jQuery("#productos").val("");
        var productos_ocultos = "";
        jQuery(".pedido-cont-gastro input").each(function () {
            productos_ocultos += jQuery(this).val() + ",";
        });
        productos_ocultos = productos_ocultos.substring(0, productos_ocultos.length - 1);
        jQuery("#productos").val(productos_ocultos);
    });
    jQuery(document).on("click", ".btn-pago-pedido a", function (e) {
        e.preventDefault();
        if (jQuery("#productos").val() == "") {
            return true;
        }

        var productos = jQuery("#productos").val();

        jQuery('#no-stock').remove();
        // Hacemos comprobación de stock
        jQuery.ajax({
            type  : "POST",
            url   : "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/ajax/comprar/comprobar_stock.php",
            async : false,
            data  : {
                productos: productos,
            },
            success: function (response) {
                
                respuesta = JSON.parse(response);

                if(respuesta.length == 0){
                    jQuery("#FormCompraProducto").submit();
                }else{
                    respuesta.forEach(function(res, index) {
                        jQuery('.product_id').each(function(){
                            if(jQuery(this).val() == res){
                                jQuery(this).parent().css('background-color', '#B8B2AD');
                            }
                        });
                    });

                    jQuery('.pedido-cont-gastro').after('<div id="no-stock">No hay stock suficiente en alguna de las referencias. Por favor elimine las marcadas en gris</div>');
                }
                
            }
        });

        
    });
    jQuery("#FormasPago .radio").click(function () {
        jQuery("#FormasPago .radio").removeClass("selected");
        jQuery(this).addClass("selected");
        jQuery("#continuar_compra").prop("disabled", false);
    });
    jQuery("#continuar_compra").click(function (e) {
        e.preventDefault();
        var nombre      = jQuery("#nombre").val();
        var apellidos   = jQuery("#apellidos").val();
        var telefono    = jQuery("#telefono").val();
        var email       = jQuery("#email").val();
        var condiciones = jQuery("#condiciones_compra").prop("checked");
        if (nombre == "" || apellidos == "" || telefono == "" || email == "" || !condiciones || email.indexOf("@", 0) == -1 || email.indexOf(".", 0) == -1) {
            jQuery(".text-error-pedido").css("display", "block");
            jQuery("#continuar_compra").prop("disabled", false);
        } else {
            jQuery("#continuar_compra").prop("disabled", true);
            jQuery("#continuar_compra").val(productos_textos["texto_0"]);
            setInterval(parpadeo, 500);
           
            try {
                window.createPayment();
            } catch (e) {
                if (e.message) {
                    window.showError(`Error: ${e.message}`);
                } else {
                    window.showError("Something went wrong");
                }
            }
           
        }
    });
    // El botón empieza deshabilitado
    // Si metemos valor se habilita si desparece se deshabilita
    jQuery("#cupon_gastro").change(function (e) {
        if (jQuery(this).val() == "") {
            jQuery("#aplicar_cupon_gastro").prop("disabled", true);
        } else {
            jQuery("#aplicar_cupon_gastro").prop("disabled", false);
        }
    });
    jQuery("#aplicar_cupon_gastro").click(function (e) {
        e.preventDefault();
        jQuery(".precio-cupon").remove();
        var servicio = jQuery("#servicio_id").val();
        var cupon    = jQuery("#cupon_gastro").val();
        jQuery.ajax({
            type  : "POST",
            url   : "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/ajax/comprar/aplicar_cupon_gastrobar.php",
            async : false,
            data  : {
                servicio : servicio,
                cupon    : cupon,
            },
            success: function (response) {
                respuesta = jQuery.parseJSON(response);
                if (respuesta == 0) {
                    jQuery(".text-error-cupon").css("display", "block");
                    jQuery("#cupon_aplicado").val(0);
                } else {
                    // Ha ido bien
                    jQuery(".text-error-cupon").css("display", "none");
                    jQuery("#cupon_aplicado").val(1);
                    // Deshabilitamos para que no hagan el lerdo
                    jQuery("#cupon_gastro").hide();
                    jQuery("#cupon_gastro").prop("disabled", true);
                    jQuery("#aplicar_cupon_gastro").prop("disabled", true);
                    // Guardamos los datos del cupón por si hay cambios en el carrito
                    var cantidad   = respuesta["cantidad"];
                    var porcentual = respuesta["porcentual"];
                    jQuery("#datos_cupon").attr("data-cantidad", cantidad);
                    jQuery("#datos_cupon").attr("data-porcentual", porcentual);
                    jQuery("#datos_cupon").val(cupon);
                    // vamos a aplicar los descuentos pertinentes
                    var total_compra   = jQuery("#total_compra").val();
                    var total_original = jQuery("#total_compra").val();
                    if (porcentual == 1) {
                        var descuento = "-" + ((total_compra * cantidad) / 100).toFixed(2) + " €";
                        total_compra  = total_compra - (total_compra * cantidad) / 100;
                    } else {
                        var descuento = -cantidad.toFixed(2) + " €";
                        total_compra  = total_compra - cantidad;
                    }
                    var total_compra_texto = total_compra.toFixed(2) + "€";
                    jQuery("#total_compra").val(total_compra);
                    jQuery(".valor-total-pedido h3").text(total_compra_texto);
                    var html_cupon  = '<div class="col-xs-12 col-sm-12 total-pedido-gastro total-pedido-gastro-original">';
                        html_cupon += '<div class="text-total-pedido">';
                        html_cupon += "<h3>Total</h3>";
                        html_cupon += "<p>" + productos_textos["texto_1"] + "</p>";
                        html_cupon += "</div>";
                        html_cupon += '<div class="valor-total-original">';
                        html_cupon += "<h3>" + total_original + " €</h3>";
                        html_cupon += "</div>";
                        html_cupon += "</div>";
                        html_cupon += '<div class="col-xs-12 col-sm-12 total-pedido-gastro total-pedido-gastro-dto">';
                        html_cupon += '<div class="text-total-pedido">';
                        html_cupon += "<h3>" + cupon + "</h3>";
                        html_cupon += "</div>";
                        html_cupon += '<div class="valor-total-descuento">';
                        html_cupon += "<h3>" + descuento + "</h3>";
                        html_cupon += "</div>";
                        html_cupon += "</div>";
                    jQuery(".total-pedido-gastro").before(html_cupon);
                    jQuery("#datos_descuento").val(descuento);
                }
            },
        });
    });
    window.createPayment = async function (token) {
        var nombre      = jQuery("#nombre").val();
        var apellidos   = jQuery("#apellidos").val();
        var unidades    = jQuery("#unidades").val();
        var email       = jQuery("#email").val();
        var condiciones = jQuery("#condiciones_compra").prop("checked");
        jQuery(".text-error-pedido").css("display", "none");
        jQuery(".text-error-productos").css("display", "none");
        var mesa           = jQuery("#mesa").val();
        var productos      = jQuery("#productos").val();
        var total_compra   = jQuery("#total_compra").val();
        var servicio       = jQuery("#servicio").val();
        var instalacion    = jQuery("#instalacion").val();
        var forma_pago     = jQuery("#FormasPago :radio:checked").val();
        var cupon_gastro   = jQuery("#cupon_gastro").val();
        var cupon_aplicado = jQuery("#cupon_aplicado").val();
        var newsletter     = jQuery("#newsletter").prop("checked");
        jQuery.ajax({
            type  : "POST",
            url   : "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/ajax/comprar/introducir_productos.php",
            async : true,
            data  : {
                nombre         : nombre,
                apellidos      : apellidos,
                unidades       : unidades,
                email          : email,
                mesa           : mesa,
                productos      : productos,
                total_compra   : total_compra,
                servicio       : servicio,
                instalacion    : instalacion,
                forma_pago     : forma_pago,
                cupon_gastro   : cupon_gastro,
                cupon_aplicado : cupon_aplicado,
                newsletter     : newsletter,
                token          : token,
            },
            success: function (response) {
                respuesta = jQuery.parseJSON(response);
                if (respuesta[2] == "tarjeta") {
                    jQuery("input[name='Ds_MerchantParameters']").val(respuesta[0]);
                    jQuery("input[name='Ds_Signature']").val(respuesta[1]);
                    jQuery("#Redsys").submit();
                } else if (respuesta[2] == "bodega") {
                    jQuery("#Bodega").attr("action", respuesta[1]);
                    jQuery("#Bodega").submit();
                } else if (respuesta[2] == "paypal") {
                    jQuery("#Redsys").after(respuesta[1]);
                    jQuery("#Paypal").submit();
                } else if (respuesta[2] == "apple-pay" || respuesta[2] == "google-pay") {
                    jQuery("#Bodega").attr("action", respuesta[1]);
                    jQuery("#Bodega").submit();
                } else if (respuesta[2] == "no-productos") {
                    jQuery(".text-error-productos").html("<p>" + respuesta[1] + "</p>");
                    jQuery(".text-error-productos").css("display", "block");
                }
            },
        });
        //}
    };
    window.paymentCanceled = async function (token) {
        if (paymentLoading) {
            clearInterval(paymentLoading);
        }
        jQuery("#continuar_compra").prop("disabled", false);
        jQuery("#continuar_compra").val(buttonPayTextDefault);
    };

    function parpadeo() {
        var opacity = jQuery("#continuar_compra").css("opacity");
        if (opacity == 1) {
            jQuery("#continuar_compra").css("opacity", 0.5);
        } else {
            jQuery("#continuar_compra").css("opacity", 1);
        }
    }
});
