{"id":20853,"date":"2026-08-25T14:13:33","date_gmt":"2026-08-25T17:13:33","guid":{"rendered":"https:\/\/jobstore.cl\/?page_id=20853"},"modified":"2026-08-25T21:02:06","modified_gmt":"2026-08-26T00:02:06","slug":"20853-2","status":"publish","type":"page","link":"https:\/\/jobstore.cl\/index.php\/20853-2\/","title":{"rendered":"Reservas"},"content":{"rendered":"\n<div class=\"jobstore-booking-wrapper\">\n  <div class=\"jobstore-modal-card\">\n    <div class=\"js-header\">Crear reserva<\/div>\n\n    <form id=\"jsBookingForm\" class=\"js-body\" action=\"https:\/\/jobstore.cl\/reservas_api.php\" method=\"POST\">\n      <!-- Informaci\u00f3n del dispositivo -->\n      <div class=\"js-section\">\n        <div class=\"js-section-title\">Informaci\u00f3n del dispositivo<\/div>\n        <div class=\"js-grid\">\n          <div class=\"js-field\">\n            <label>Producto<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <select name=\"producto\" id=\"js_producto\" required onchange=\"actualizarHorariosDisponibles()\">\n                <option value=\"\" disabled selected>Seleccionar<\/option>\n                <option value=\"Airpods\">Airpods<\/option>\n                <option value=\"Apple TV\">Apple TV<\/option>\n                <option value=\"Apple Watch\">Apple Watch<\/option>\n                <option value=\"Beats\">Beats<\/option>\n                <option value=\"Homepod\">Homepod<\/option>\n                <option value=\"Mac\">Mac<\/option>\n                <option value=\"Vision Pro\">Vision Pro<\/option>\n                <option value=\"iPad\">iPad<\/option>\n                <option value=\"iPhone\">iPhone<\/option>\n                <option value=\"iPod\">iPod<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>N\u00famero de serie<\/label>\n            <div class=\"js-input-wrap\">\n              <input type=\"text\" name=\"serial\" id=\"js_serial\" autocomplete=\"off\" placeholder=\"Ej: C02LQL9VFD56\">\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Informaci\u00f3n de la reserva -->\n      <div class=\"js-section\">\n        <div class=\"js-section-title\">Informaci\u00f3n de la reserva<\/div>\n        <div class=\"js-grid\">\n          <div class=\"js-field js-col-2\">\n            <label>Tipo de reserva<\/label>\n            <div class=\"js-input-wrap\">\n              <select name=\"tipoReserva\" id=\"js_tipo_reserva\">\n                <option value=\"Entrega personal\" selected>Entrega personal<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>Fecha de la reserva<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <select name=\"fecha\" id=\"js_fecha\" required onchange=\"actualizarHorariosDisponibles()\">\n                <option value=\"26-08-26\" data-sabado=\"false\" selected>26-08-26<\/option>\n                <option value=\"27-08-26\" data-sabado=\"false\">27-08-26<\/option>\n                <option value=\"28-08-26\" data-sabado=\"false\">28-08-26<\/option>\n                <option value=\"29-08-26\" data-sabado=\"true\">29-08-26 (S\u00e1bado: 10:30 a 13:20)<\/option>\n                <option value=\"31-08-26\" data-sabado=\"false\">31-08-26<\/option>\n                <option value=\"01-09-26\" data-sabado=\"false\">01-09-26<\/option>\n                <option value=\"02-09-26\" data-sabado=\"false\">02-09-26<\/option>\n                <option value=\"03-09-26\" data-sabado=\"false\">03-09-26<\/option>\n                <option value=\"04-09-26\" data-sabado=\"false\">04-09-26<\/option>\n                <option value=\"05-09-26\" data-sabado=\"true\">05-09-26 (S\u00e1bado: 10:30 a 13:20)<\/option>\n                <option value=\"07-09-26\" data-sabado=\"false\">07-09-26<\/option>\n                <option value=\"08-09-26\" data-sabado=\"false\">08-09-26<\/option>\n                <option value=\"09-09-26\" data-sabado=\"false\">09-09-26<\/option>\n                <option value=\"10-09-26\" data-sabado=\"false\">10-09-26<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>Hora de la reserva<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <select name=\"hora\" id=\"js_hora\" required>\n                <option value=\"\" disabled selected>Seleccionar hora<\/option>\n                <option value=\"09:30 a. m.\">09:30 a. m.<\/option>\n                <option value=\"09:50 a. m.\">09:50 a. m.<\/option>\n                <option value=\"10:10 a. m.\">10:10 a. m.<\/option>\n                <option value=\"10:30 a. m.\">10:30 a. m.<\/option>\n                <option value=\"10:50 a. m.\">10:50 a. m.<\/option>\n                <option value=\"11:10 a. m.\">11:10 a. m.<\/option>\n                <option value=\"11:30 a. m.\">11:30 a. m.<\/option>\n                <option value=\"11:50 a. m.\">11:50 a. m.<\/option>\n                <option value=\"12:10 p. m.\">12:10 p. m.<\/option>\n                <option value=\"12:30 p. m.\">12:30 p. m.<\/option>\n                <option value=\"12:50 p. m.\">12:50 p. m.<\/option>\n                <option value=\"01:20 p. m.\">01:20 p. m.<\/option>\n                <option value=\"04:30 p. m.\">04:30 p. m.<\/option>\n                <option value=\"04:50 p. m.\">04:50 p. m.<\/option>\n                <option value=\"05:10 p. m.\">05:10 p. m.<\/option>\n                <option value=\"05:20 p. m.\">05:20 p. m.<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Informaci\u00f3n del cliente -->\n      <div class=\"js-section\">\n        <div class=\"js-section-title\">Informaci\u00f3n del cliente<\/div>\n        <div class=\"js-grid\">\n          <div class=\"js-field\">\n            <label>Nombre<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <input type=\"text\" name=\"nombre\" id=\"js_nombre\" required placeholder=\"Tu nombre\">\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>Apellido<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <input type=\"text\" name=\"apellido\" id=\"js_apellido\" required placeholder=\"Tu apellido\">\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>Correo electr\u00f3nico<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <input type=\"email\" name=\"email\" id=\"js_email\" required placeholder=\"correo@ejemplo.com\">\n            <\/div>\n          <\/div>\n          <div class=\"js-field\">\n            <label>Idioma del correo electr\u00f3nico<\/label>\n            <div class=\"js-input-wrap\">\n              <select name=\"idioma\" id=\"js_idioma\">\n                <option value=\"Espa\u00f1ol\" selected>Espa\u00f1ol<\/option>\n                <option value=\"English\">English<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <div class=\"js-field js-col-2\">\n            <label>Tel\u00e9fono<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <input type=\"tel\" name=\"telefono\" id=\"js_telefono\" placeholder=\"+56 9\" required>\n            <\/div>\n          <\/div>\n          <div class=\"js-field js-col-2\">\n            <label>Problema notificado<\/label>\n            <div class=\"js-input-wrap js-required\">\n              <textarea name=\"problema\" id=\"js_problema\" maxlength=\"250\" required placeholder=\"Describe el problema\"><\/textarea>\n            <\/div>\n            <div class=\"js-counter\" id=\"js_counter_prob\">Caracteres restantes: 250<\/div>\n          <\/div>\n          <div class=\"js-field js-col-2\">\n            <label>Notas<\/label>\n            <div class=\"js-input-wrap\">\n              <textarea name=\"notas\" id=\"js_notas\" maxlength=\"4000\" placeholder=\"A\u00f1adir nota adicional\"><\/textarea>\n            <\/div>\n            <div class=\"js-counter\" id=\"js_counter_notas\">Caracteres restantes: 4000<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"js-footer\">\n        <button type=\"button\" class=\"js-btn js-btn-cancel\" onclick=\"document.getElementById('jsBookingForm').reset();\">Cerrar<\/button>\n        <button type=\"submit\" class=\"js-btn js-btn-submit\" id=\"btnCrearForm\">Crear<\/button>\n      <\/div>\n\n      <div class=\"js-logo-footer\">\n        <img decoding=\"async\" src=\"https:\/\/jobstore.cl\/wp-content\/uploads\/2021\/11\/apple-authorized-1.jpg\" alt=\"Apple Authorized Service Provider\" \/>\n      <\/div>\n    <\/form>\n  <\/div>\n<\/div>\n\n<style>\n  .jobstore-booking-wrapper { width: 100% !important; display: flex !important; justify-content: center !important; padding: 20px 10px 40px !important; box-sizing: border-box !important; }\n  .jobstore-modal-card { width: 100% !important; max-width: 680px !important; background: #fff !important; color: #1d1d1f !important; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important; }\n  .js-header { background: #f5f5f7 !important; padding: 14px 20px !important; text-align: center !important; font-weight: 600 !important; font-size: 16px !important; border-radius: 8px !important; margin-bottom: 12px !important; }\n  .js-body { display: flex !important; flex-direction: column !important; gap: 18px !important; }\n  .js-section-title { font-size: 14px !important; font-weight: 700 !important; margin-bottom: 8px !important; }\n  .js-grid { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 14px 18px !important; }\n  .js-col-2 { grid-column: span 2 !important; }\n  .js-field { display: flex !important; flex-direction: column !important; gap: 6px !important; }\n  .js-field label { font-size: 13px !important; color: #48484a !important; font-weight: 500 !important; }\n  .js-input-wrap { position: relative !important; display: flex !important; }\n  .js-input-wrap.js-required { border-left: 3px solid #ff3b30 !important; border-radius: 6px 0 0 6px !important; }\n  .jobstore-modal-card input, .jobstore-modal-card select, .jobstore-modal-card textarea { width: 100% !important; background: #fff !important; color: #1d1d1f !important; border: 1px solid #d2d2d7 !important; border-radius: 6px !important; padding: 9px 12px !important; font-size: 14px !important; outline: none !important; box-sizing: border-box !important; }\n  .js-input-wrap.js-required input, .js-input-wrap.js-required select, .js-input-wrap.js-required textarea { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }\n  .jobstore-modal-card select { appearance: none !important; -webkit-appearance: none !important; background-image: url(\"data:image\/svg+xml;charset=UTF-8,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='%236e6e73'%3E%3Cpath d='M7 10l5 5 5-5z'\/%3E%3C\/svg%3E\") !important; background-repeat: no-repeat !important; background-position: right 10px center !important; background-size: 18px !important; cursor: pointer !important; }\n  .jobstore-modal-card textarea { min-height: 65px !important; resize: vertical !important; }\n  .js-counter { font-size: 11px !important; color: #86868b !important; margin-top: 3px !important; }\n  .js-footer { display: flex !important; justify-content: flex-end !important; gap: 12px !important; padding-top: 14px !important; border-top: 1px solid #e5e5ea !important; }\n  .js-btn { padding: 8px 24px !important; font-size: 14px !important; font-weight: 500 !important; border-radius: 6px !important; cursor: pointer !important; border: none !important; }\n  .js-btn-cancel { background: #e8e8ed !important; color: #1d1d1f !important; }\n  .js-btn-submit { background: #0071e3 !important; color: #fff !important; }\n  .js-logo-footer { display: flex !important; justify-content: center !important; padding-top: 20px !important; }\n  .js-logo-footer img { max-width: 210px !important; height: auto !important; }\n<\/style>\n\n<script>\n  (function() {\n    var reservasEnBD = [];\n\n    var horasSemana = [\n      \"09:30 a. m.\", \"09:50 a. m.\", \"10:10 a. m.\", \"10:30 a. m.\", \"10:50 a. m.\",\n      \"11:10 a. m.\", \"11:30 a. m.\", \"11:50 a. m.\", \"12:10 p. m.\", \"12:30 p. m.\",\n      \"12:50 p. m.\", \"01:20 p. m.\", \"04:30 p. m.\", \"04:50 p. m.\", \"05:10 p. m.\",\n      \"05:20 p. m.\"\n    ];\n\n    var horasSabado = [\n      \"10:30 a. m.\", \"10:50 a. m.\", \"11:10 a. m.\", \"11:30 a. m.\", \"11:50 a. m.\",\n      \"12:10 p. m.\", \"12:30 p. m.\", \"12:50 p. m.\", \"01:20 p. m.\"\n    ];\n\n    window.actualizarHorariosDisponibles = function() {\n      var selProd = document.getElementById('js_producto');\n      var selFec = document.getElementById('js_fecha');\n      var selH = document.getElementById('js_hora');\n      if (!selH || !selFec) return;\n\n      var producto = selProd ? selProd.value : \"\";\n      var fecha = selFec.value;\n      var esSabado = (selFec.options[selFec.selectedIndex] && selFec.options[selFec.selectedIndex].getAttribute('data-sabado') === 'true');\n      var listaBase = esSabado ? horasSabado : horasSemana;\n      var seleccionPrevia = selH.value;\n\n      selH.innerHTML = '<option value=\"\" disabled selected>Seleccionar hora<\/option>';\n\n      for (var i = 0; i < listaBase.length; i++) {\n        var h = listaBase[i];\n        var estaOcupada = false;\n\n        if (producto &#038;&#038; fecha &#038;&#038; Array.isArray(reservasEnBD)) {\n          for (var k = 0; k < reservasEnBD.length; k++) {\n            var r = reservasEnBD[k];\n            if (r.fecha === fecha &#038;&#038; r.hora === h &#038;&#038; r.producto === producto &#038;&#038; r.estado !== 'Cancelada') {\n              estaOcupada = true;\n              break;\n            }\n          }\n        }\n\n        var opt = document.createElement('option');\n        opt.value = h;\n        opt.textContent = estaOcupada ? (h + ' (Ocupado)') : h;\n        opt.disabled = estaOcupada;\n\n        if (h === seleccionPrevia &#038;&#038; !estaOcupada) {\n          opt.selected = true;\n        }\n\n        selH.appendChild(opt);\n      }\n    };\n\n    function cargarBD() {\n      fetch('https:\/\/jobstore.cl\/reservas_api.php?t=' + Date.now(), { cache: 'no-store' })\n        .then(function(res) { return res.json(); })\n        .then(function(data) {\n          reservasEnBD = Array.isArray(data) ? data : [];\n          window.actualizarHorariosDisponibles();\n        })\n        .catch(function() {\n          window.actualizarHorariosDisponibles();\n        });\n    }\n\n    window.addEventListener('pageshow', function() {\n      cargarBD();\n    });\n\n    var prob = document.getElementById('js_problema');\n    if (prob) {\n      prob.oninput = function() {\n        document.getElementById('js_counter_prob').textContent = 'Caracteres restantes: ' + (250 - this.value.length);\n      };\n    }\n    var notas = document.getElementById('js_notas');\n    if (notas) {\n      notas.oninput = function() {\n        document.getElementById('js_counter_notas').textContent = 'Caracteres restantes: ' + (4000 - this.value.length);\n      };\n    }\n\n    cargarBD();\n  })();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Crear reserva Informaci\u00f3n del dispositivo Producto SeleccionarAirpodsApple TVApple WatchBeatsHomepodMacVision ProiPadiPhoneiPod N\u00famero de serie Informaci\u00f3n de la reserva Tipo de reserva Entrega personal Fecha de la reserva<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-20853","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/pages\/20853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/comments?post=20853"}],"version-history":[{"count":30,"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/pages\/20853\/revisions"}],"predecessor-version":[{"id":20902,"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/pages\/20853\/revisions\/20902"}],"wp:attachment":[{"href":"https:\/\/jobstore.cl\/index.php\/wp-json\/wp\/v2\/media?parent=20853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}