{"id":1779,"date":"2026-10-07T17:15:51","date_gmt":"2026-10-07T15:15:51","guid":{"rendered":"https:\/\/mariangelsfotografia.com\/?page_id=1779"},"modified":"2026-10-07T18:09:58","modified_gmt":"2026-10-07T16:09:58","slug":"reservas_app","status":"publish","type":"page","link":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/","title":{"rendered":"Reservas_app"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1779\" class=\"elementor elementor-1779\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-915c5c2 e-flex e-con-boxed e-con e-parent\" data-id=\"915c5c2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ccf1929 elementor-widget elementor-widget-html\" data-id=\"ccf1929\" 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<!-- ESTRUTURA DA APLICA\u00c7\u00c3O -->\n<div id=\"app-turnos\" style=\"max-width: 600px; margin: 20px auto; font-family: system-ui, -apple-system, sans-serif; padding: 24px; background: #ffffff; border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.08);\">\n  \n  <h2 style=\"text-align: center; margin-top: 0; color: #1a202c; font-size: 1.4rem; font-weight: 700;\">\n    RESERVA DE TURNOS \u2013 SESI\u00d3N DE FOTOGRAF\u00cdA NAVIDAD\n  <\/h2>\n\n  <!-- Bloque de texto informativo -->\n  <div style=\"margin-bottom: 20px; color: #4a5568; line-height: 1.6; font-size: 0.95rem;\">\n    <p style=\"margin-top: 0; font-weight: 600; color: #2d3748;\">\ud83d\udcc5 Fecha: 8 de noviembre de 2026<\/p>\n    <p>Se informa de la apertura de reservas de turnos para la sesi\u00f3n de fotograf\u00eda NAVIDAD correspondiente al d\u00eda 8 de noviembre de 2026.<\/p>\n    <p>Por favor, indique el nombre de la persona y el horario preferido para poder asignar el turno correspondiente.<\/p>\n  <\/div>\n\n  <!-- Cuadro de advertencia -->\n  <div style=\"background-color: #fffbe3; border-left: 4px solid #f59e0b; padding: 12px 16px; border-radius: 6px; margin-bottom: 24px; color: #92400e; font-size: 0.88rem; line-height: 1.5;\">\n    <strong>\u26a0\ufe0f IMPORTANTE:<\/strong> Una vez confirmado el horario, no se podr\u00e1 cambiar ni modificar el turno. Por favor, aseg\u00farese de elegir correctamente el horario antes de confirmar la reserva. <em>NO RECIBE CONFIRMACION DE LA RESERVA.<\/em>\n  <\/div>\n\n  <p style=\"text-align: center; color: #666; font-size: 0.95rem; margin-bottom: 16px;\">\n    Preencha os seus dados e selecione uma hora dispon\u00edvel.\n  <\/p>\n\n  <!-- Formul\u00e1rio de dados -->\n  <div style=\"background: #f8f9fa; padding: 16px; border-radius: 8px; margin-bottom: 24px; border: 1px solid #e9ecef;\">\n    <label style=\"display: block; margin-bottom: 6px; font-weight: 600; font-size: 0.9rem;\">Nome completo:<\/label>\n    <input type=\"text\" id=\"cliente-nombre\" placeholder=\"Ex: Maria Silva\" style=\"width: 100%; padding: 10px; margin-bottom: 12px; border: 1px solid #ced4da; border-radius: 6px; box-sizing: border-box;\">\n    \n    <label style=\"display: block; margin-bottom: 6px; font-weight: 600; font-size: 0.9rem;\">Telefone \/ E-mail:<\/label>\n    <input type=\"text\" id=\"cliente-contacto\" placeholder=\"Ex: 912345678\" style=\"width: 100%; padding: 10px; border: 1px solid #ced4da; border-radius: 6px; box-sizing: border-box;\">\n  <\/div>\n\n  <h3 style=\"font-size: 1rem; margin-bottom: 12px;\">Hor\u00e1rios dispon\u00edveis:<\/h3>\n  \n  <!-- Contentor onde os bot\u00f5es v\u00e3o aparecer -->\n  <div id=\"grid-turnos\" style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 10px; min-height: 120px;\">\n    <p style=\"text-align: center; grid-column: 1\/-1; color: #666;\">A carregar hor\u00e1rios...<\/p>\n  <\/div>\n\n<\/div>\n\n<script>\n(function() {\n  const API_URL = 'https:\/\/mariangelsfotografia.com\/wp-json\/turnos\/v1';\n  const HORA_INICIO = 9 * 60; \/\/ 09:00 em minutos\n  const HORA_FIN = 14 * 60;   \/\/ 14:00 em minutos\n  const INTERVALO = 5;        \/\/ De 5 em 5 minutos\n\n  function generarHorarios() {\n    const horas = [];\n    for (let min = HORA_INICIO; min < HORA_FIN; min += INTERVALO) {\n      const h = Math.floor(min \/ 60).toString().padStart(2, '0');\n      const m = (min % 60).toString().padStart(2, '0');\n      horas.push(`${h}:${m}`);\n    }\n    return horas;\n  }\n\n  async function cargarTurnos() {\n    const grid = document.getElementById('grid-turnos');\n    if (!grid) return;\n\n    let ocupados = [];\n\n    try {\n      const res = await fetch(`${API_URL}\/ocupados?_=${Date.now()}`);\n      if (res.ok) {\n        const data = await res.json();\n        if (Array.isArray(data.turnos)) {\n          ocupados = data.turnos;\n        } else if (Array.isArray(data)) {\n          ocupados = data;\n        }\n      }\n    } catch (e) {\n      console.error('Erro ao consultar hor\u00e1rios ocupados:', e);\n    }\n\n    const todosLosHorarios = generarHorarios();\n    grid.innerHTML = '';\n\n    todosLosHorarios.forEach(hora => {\n      const estaOcupado = ocupados.includes(hora);\n      const boton = document.createElement('button');\n      \n      boton.type = 'button';\n      boton.textContent = hora;\n      boton.style.padding = '10px 4px';\n      boton.style.border = 'none';\n      boton.style.borderRadius = '6px';\n      boton.style.fontWeight = '600';\n      boton.style.fontSize = '0.9rem';\n      boton.style.transition = 'all 0.2s';\n\n      if (estaOcupado) {\n        boton.style.background = '#e9ecef';\n        boton.style.color = '#adb5bd';\n        boton.style.cursor = 'not-allowed';\n        boton.title = 'Hor\u00e1rio Ocupado';\n        boton.disabled = true;\n      } else {\n        boton.style.background = '#28a745';\n        boton.style.color = '#ffffff';\n        boton.style.cursor = 'pointer';\n        boton.onclick = () => realizarReserva(hora);\n      }\n\n      grid.appendChild(boton);\n    });\n  }\n\n  async function realizarReserva(hora) {\n    const inputNombre = document.getElementById('cliente-nombre');\n    const inputContacto = document.getElementById('cliente-contacto');\n    const nombre = inputNombre.value.trim();\n    const contacto = inputContacto.value.trim();\n\n    if (!nombre || !contacto) {\n      alert('Por favor, introduza o seu nome e um contacto antes de selecionar um hor\u00e1rio.');\n      return;\n    }\n\n    if (!confirm(`Deseja confirmar a reserva para as ${hora}?`)) return;\n\n    try {\n      const res = await fetch(`${API_URL}\/reservar`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({ hora, nombre, contacto })\n      });\n\n      const data = await res.json();\n\n      if (res.ok && data.success !== false) {\n        alert(`Reserva confirmada com sucesso para\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>\n\t\t","protected":false},"excerpt":{"rendered":"<p>RESERVA DE TURNOS \u2013 SESI\u00d3N DE FOTOGRAF\u00cdA NAVIDAD \ud83d\udcc5 Fecha: 8 de noviembre de 2026 Se informa de la apertura de reservas de turnos para la sesi\u00f3n de fotograf\u00eda NAVIDAD correspondiente al d\u00eda 8 de noviembre de 2026. Por favor, indique el nombre de la persona y el horario preferido para poder asignar el turno [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-1779","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Reservas_app - Maria Angels Fotografia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reservas_app - Maria Angels Fotografia\" \/>\n<meta property=\"og:description\" content=\"RESERVA DE TURNOS \u2013 SESI\u00d3N DE FOTOGRAF\u00cdA NAVIDAD \ud83d\udcc5 Fecha: 8 de noviembre de 2026 Se informa de la apertura de reservas de turnos para la sesi\u00f3n de fotograf\u00eda NAVIDAD correspondiente al d\u00eda 8 de noviembre de 2026. Por favor, indique el nombre de la persona y el horario preferido para poder asignar el turno [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/\" \/>\n<meta property=\"og:site_name\" content=\"Maria Angels Fotografia\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-07T16:09:58+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/index.php\\\/reservas_app\\\/\",\"url\":\"https:\\\/\\\/mariangelsfotografia.com\\\/index.php\\\/reservas_app\\\/\",\"name\":\"Reservas_app - Maria Angels Fotografia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#website\"},\"datePublished\":\"2026-10-07T15:15:51+00:00\",\"dateModified\":\"2026-10-07T16:09:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/index.php\\\/reservas_app\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mariangelsfotografia.com\\\/index.php\\\/reservas_app\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/index.php\\\/reservas_app\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/mariangelsfotografia.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reservas_app\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#website\",\"url\":\"https:\\\/\\\/mariangelsfotografia.com\\\/\",\"name\":\"Maria Angels Fotografia\",\"description\":\"Maria Angels -Fotografia Infantil\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mariangelsfotografia.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#organization\",\"name\":\"Maria Angels Fotografia\",\"url\":\"https:\\\/\\\/mariangelsfotografia.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/mariangelsfotografia.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/cropped-cropped-logo-maria-angela-fotografia.png\",\"contentUrl\":\"https:\\\/\\\/mariangelsfotografia.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/cropped-cropped-logo-maria-angela-fotografia.png\",\"width\":1570,\"height\":838,\"caption\":\"Maria Angels Fotografia\"},\"image\":{\"@id\":\"https:\\\/\\\/mariangelsfotografia.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reservas_app - Maria Angels Fotografia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/","og_locale":"es_ES","og_type":"article","og_title":"Reservas_app - Maria Angels Fotografia","og_description":"RESERVA DE TURNOS \u2013 SESI\u00d3N DE FOTOGRAF\u00cdA NAVIDAD \ud83d\udcc5 Fecha: 8 de noviembre de 2026 Se informa de la apertura de reservas de turnos para la sesi\u00f3n de fotograf\u00eda NAVIDAD correspondiente al d\u00eda 8 de noviembre de 2026. Por favor, indique el nombre de la persona y el horario preferido para poder asignar el turno [&hellip;]","og_url":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/","og_site_name":"Maria Angels Fotografia","article_modified_time":"2026-10-07T16:09:58+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/","url":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/","name":"Reservas_app - Maria Angels Fotografia","isPartOf":{"@id":"https:\/\/mariangelsfotografia.com\/#website"},"datePublished":"2026-10-07T15:15:51+00:00","dateModified":"2026-10-07T16:09:58+00:00","breadcrumb":{"@id":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mariangelsfotografia.com\/index.php\/reservas_app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/mariangelsfotografia.com\/"},{"@type":"ListItem","position":2,"name":"Reservas_app"}]},{"@type":"WebSite","@id":"https:\/\/mariangelsfotografia.com\/#website","url":"https:\/\/mariangelsfotografia.com\/","name":"Maria Angels Fotografia","description":"Maria Angels -Fotografia Infantil","publisher":{"@id":"https:\/\/mariangelsfotografia.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mariangelsfotografia.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/mariangelsfotografia.com\/#organization","name":"Maria Angels Fotografia","url":"https:\/\/mariangelsfotografia.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/mariangelsfotografia.com\/#\/schema\/logo\/image\/","url":"https:\/\/mariangelsfotografia.com\/wp-content\/uploads\/2024\/03\/cropped-cropped-logo-maria-angela-fotografia.png","contentUrl":"https:\/\/mariangelsfotografia.com\/wp-content\/uploads\/2024\/03\/cropped-cropped-logo-maria-angela-fotografia.png","width":1570,"height":838,"caption":"Maria Angels Fotografia"},"image":{"@id":"https:\/\/mariangelsfotografia.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/pages\/1779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/comments?post=1779"}],"version-history":[{"count":22,"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/pages\/1779\/revisions"}],"predecessor-version":[{"id":1806,"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/pages\/1779\/revisions\/1806"}],"wp:attachment":[{"href":"https:\/\/mariangelsfotografia.com\/index.php\/wp-json\/wp\/v2\/media?parent=1779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}