{"id":584,"date":"2025-03-18T11:52:18","date_gmt":"2025-03-18T11:52:18","guid":{"rendered":"https:\/\/zabalimp.es\/?p=584"},"modified":"2025-03-25T11:24:59","modified_gmt":"2025-03-25T11:24:59","slug":"resenas","status":"publish","type":"post","link":"https:\/\/zabalimp.es\/eu\/resenas\/","title":{"rendered":"Rese\u00f1as"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"584\" class=\"elementor elementor-584\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bc4abac e-flex e-con-boxed e-con e-parent\" data-id=\"bc4abac\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-be88223 elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"be88223\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"New Form\" action=\"\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"584\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"be88223\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"Uncategorized\" \/>\n\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-cliente elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-cliente\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tCliente\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before\">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewbox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[cliente]\" id=\"form-field-cliente\" class=\"elementor-field-textual elementor-size-sm\">\n\t\t\t\t\t\t\t\t\t<option value=\"\"><\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email_verif elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email_verif\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tEmail Verificator\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email_verif]\" id=\"form-field-email_verif\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" required=\"required\" aria-required=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-proveedor elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-proveedor\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tProveedor\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before\">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewbox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[proveedor]\" id=\"form-field-proveedor\" class=\"elementor-field-textual elementor-size-sm\">\n\t\t\t\t\t\t\t\t\t<option value=\"\"><\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tMessage\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-sm\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"4\" placeholder=\"Message\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-checkbox elementor-field-group elementor-column elementor-field-group-field_a484b92 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_a484b92\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tHe le\u00eddo y acepto la <a href=\"\/eu\/privacy-policy\/\" target=\"_blank\">Pribatutasun-politika<\/a>\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<div class=\"elementor-field-subgroup\"><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" \" id=\"form-field-field_a484b92-0\" name=\"form_fields[field_a484b92]\"> <label for=\"form-field-field_a484b92-0\"> <\/label><\/span><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-sm\" type=\"submit\" id=\"submit_review\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bidali<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"eu\"\/><\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-147c3d1 elementor-widget elementor-widget-html\" data-id=\"147c3d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n    console.log(\"\ud83d\ude80 [JS] Script de comentarios cargado.\");\r\n\r\n    let clienteSelect = document.getElementById(\"form-field-cliente\");\r\n    let emailInput = document.getElementById(\"form-field-email_verif\");\r\n    let proveedorSelect = document.getElementById(\"form-field-proveedor\");\r\n    let messageInput = document.getElementById(\"form-field-message\");\r\n    let submitButton = document.getElementById(\"submit_review\");\r\n\r\n    if (!clienteSelect || !emailInput || !proveedorSelect || !messageInput || !submitButton) {\r\n        console.error(\"\u274c [JS] No se encontraron los campos necesarios.\");\r\n        return;\r\n    }\r\n\r\n    \/\/ \u2705 1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u0432\u0435\u0437\u0434 \u0434\u043b\u044f \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 (\u0441\u043a\u0440\u044b\u0442\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)\r\n    let ratingContainer = document.createElement(\"div\");\r\n    ratingContainer.classList.add(\"rating-container\");\r\n    ratingContainer.style.display = \"none\"; \r\n    ratingContainer.innerHTML = `\r\n        <span class=\"star\" data-value=\"1\">\u2605<\/span>\r\n        <span class=\"star\" data-value=\"2\">\u2605<\/span>\r\n        <span class=\"star\" data-value=\"3\">\u2605<\/span>\r\n        <span class=\"star\" data-value=\"4\">\u2605<\/span>\r\n        <span class=\"star\" data-value=\"5\">\u2605<\/span>\r\n        <span class=\"rating-text\">0\/5<\/span>\r\n    `;\r\n    messageInput.parentElement.insertBefore(ratingContainer, messageInput);\r\n\r\n    let stars = ratingContainer.querySelectorAll(\".star\");\r\n    let ratingText = ratingContainer.querySelector(\".rating-text\");\r\n    let selectedRating = 0;\r\n\r\n    \/\/ \u2705 2. \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432\r\n    function cargarClientes() {\r\n        console.log(\"\ud83d\udd04 [JS] Cargando clientes...\");\r\n        fetch(\"https:\/\/zabalimp.es\/wp-admin\/admin-ajax.php?action=get_clientes_todos\")\r\n            .then(response => response.json())\r\n            .then(data => {\r\n                if (data.success) {\r\n                    clienteSelect.innerHTML = '<option value=\"\">Selecciona tu nombre<\/option>';\r\n                    data.data.forEach(cliente => {\r\n                        let option = document.createElement(\"option\");\r\n                        option.value = cliente.id;\r\n                        option.textContent = cliente.nombre;\r\n                        option.dataset.email = cliente.email;\r\n                        clienteSelect.appendChild(option);\r\n                    });\r\n                    console.log(\"\u2705 [JS] Clientes cargados.\");\r\n                }\r\n            })\r\n            .catch(error => console.error(\"\u274c [JS] Error al cargar clientes:\", error));\r\n    }\r\n\r\n    \/\/ \u2705 3. \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432\r\n    function cargarProveedores() {\r\n        console.log(\"\ud83d\udd04 [JS] Cargando proveedores...\");\r\n        fetch(\"https:\/\/zabalimp.es\/wp-admin\/admin-ajax.php?action=get_proveedores_todos\")\r\n            .then(response => response.json())\r\n            .then(data => {\r\n                if (data.success) {\r\n                    proveedorSelect.innerHTML = '<option value=\"\">Selecciona un proveedor<\/option>';\r\n                    data.data.forEach(proveedor => {\r\n                        let option = document.createElement(\"option\");\r\n                        option.value = proveedor.id;\r\n                        option.textContent = proveedor.nombre;\r\n                        proveedorSelect.appendChild(option);\r\n                    });\r\n                    console.log(\"\u2705 [JS] Proveedores cargados.\");\r\n                }\r\n            })\r\n            .catch(error => console.error(\"\u274c [JS] Error al cargar proveedores:\", error));\r\n    }\r\n\r\n    \/\/ \ud83d\udeab 4. \u0414\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c select \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435\r\n    proveedorSelect.disabled = true;\r\n\r\n    \/\/ \ud83d\udd04 5. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 email\r\n    emailInput.addEventListener(\"input\", function () {\r\n        let selectedCliente = clienteSelect.options[clienteSelect.selectedIndex];\r\n        let emailGuardado = selectedCliente.dataset.email || \"\";\r\n        let emailIngresado = emailInput.value.trim();\r\n\r\n        if (emailIngresado === emailGuardado) {\r\n            emailInput.style.border = \"2px solid green\";\r\n            proveedorSelect.disabled = false;\r\n        } else {\r\n            emailInput.style.border = \"2px solid red\";\r\n            proveedorSelect.disabled = true;\r\n        }\r\n    });\r\n\r\n    \/\/ \ud83d\udfe0 6. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0432\u0435\u0437\u0434\u044b \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430\r\n    messageInput.addEventListener(\"input\", function () {\r\n        ratingContainer.style.display = messageInput.value.trim() ? \"block\" : \"none\";\r\n    });\r\n\r\n    \/\/ \u2b50 7. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u0431\u043e\u0440\u0430 \u0437\u0432\u0435\u0437\u0434\r\n    stars.forEach(star => {\r\n        star.addEventListener(\"click\", function () {\r\n            selectedRating = parseInt(this.getAttribute(\"data-value\"));\r\n            updateStars(selectedRating);\r\n        });\r\n\r\n        star.addEventListener(\"mouseover\", function () {\r\n            updateStars(parseInt(this.getAttribute(\"data-value\")));\r\n        });\r\n\r\n        star.addEventListener(\"mouseleave\", function () {\r\n            updateStars(selectedRating);\r\n        });\r\n    });\r\n\r\n    function updateStars(value) {\r\n        stars.forEach(star => {\r\n            star.style.color = parseInt(star.getAttribute(\"data-value\")) <= value ? \"#FFD700\" : \"#ccc\";\r\n        });\r\n        ratingText.textContent = `${value}\/5`;\r\n    }\r\n\r\n    \/\/ \u2705 8. \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442\u0437\u044b\u0432\u0430\r\n    submitButton.addEventListener(\"click\", function (event) {\r\n    event.preventDefault();\r\n\r\n    let clienteId = clienteSelect.value;\r\n    let proveedorId = proveedorSelect.value;\r\n    let mensaje = messageInput.value.trim();\r\n    let fecha = new Date().toISOString().split(\"T\")[0];\r\n\r\n    if (!clienteId || !proveedorId || !mensaje || selectedRating === 0) {\r\n        alert(\"\u26a0\ufe0f Todos los campos son obligatorios, incluyendo la calificaci\u00f3n.\");\r\n        return;\r\n    }\r\n\r\n    let formData = {\r\n        id_cliente: clienteId,\r\n        id_proveedor: proveedorId,\r\n        mensaje: mensaje,\r\n        rating: selectedRating,\r\n        fecha: fecha\r\n    };\r\n\r\n    console.log(\"\ud83d\udce4 [JS] Enviando comentario...\", formData);\r\n    \r\n                let checkboxPolitica = document.getElementById(\"form-field-field_a484b92-0\");\r\n\r\n            \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c\r\n            let errorPolitica = document.getElementById(\"error-politica\");\r\n            if (errorPolitica) errorPolitica.remove();\r\n            \r\n            \/\/ \u0415\u0441\u043b\u0438 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u043d\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u2014 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0443\r\n            if (!checkboxPolitica || !checkboxPolitica.checked) {\r\n                let errorDiv = document.createElement(\"div\");\r\n                errorDiv.id = \"error-politica\";\r\n                errorDiv.textContent = \"\u26a0\ufe0f Debes aceptar la pol\u00edtica de privacidad.\";\r\n                errorDiv.style.color = \"red\";\r\n                errorDiv.style.fontSize = \"13px\";\r\n                errorDiv.style.marginTop = \"5px\";\r\n                checkboxPolitica.insertAdjacentElement(\"afterend\", errorDiv); \/\/ \u2b05\ufe0f \u0412\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u043e\u0434 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\r\n                return;\r\n            }\r\n            checkboxPolitica.addEventListener(\"change\", () => {\r\n                let error = document.getElementById(\"error-politica\");\r\n                if (checkboxPolitica.checked && error) {\r\n                    error.remove();\r\n                }\r\n            });\r\n\r\n    fetch(\"https:\/\/zabalimp.es\/wp-admin\/admin-ajax.php?action=add_review\", {\r\n        method: \"POST\",\r\n        headers: { \"Content-Type\": \"application\/json\" },\r\n        body: JSON.stringify(formData)\r\n    })\r\n    .then(response => response.json())\r\n    .then(data => {\r\n        console.log(\"\u2705 [JS] Respuesta del servidor (review):\", data);\r\n        if (data.success) {\r\n            alert(\"\ud83c\udf89 \u00a1Tu comentario ha sido registrado!\");\r\n            location.reload();\r\n        } else {\r\n            console.error(\"\u274c [JS] Error en la respuesta del servidor:\", data.error);\r\n            alert(\"\u274c Error al registrar el comentario.\");\r\n        }\r\n    })\r\n    .catch(error => {\r\n        console.error(\"\u274c [JS] Error al enviar comentario:\", error);\r\n        alert(\"\u274c Error al enviar el comentario.\");\r\n    });\r\n});\r\n\r\n\r\n    cargarClientes();\r\n    cargarProveedores();\r\n});\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[1],"tags":[],"class_list":["post-584","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/posts\/584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/comments?post=584"}],"version-history":[{"count":0,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/posts\/584\/revisions"}],"wp:attachment":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/media?parent=584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/categories?post=584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/tags?post=584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}