diff --git a/modules/turnero/api/configurar_tomas.php b/modules/turnero/api/configurar_tomas.php index 3e041e4..67b5b1a 100644 --- a/modules/turnero/api/configurar_tomas.php +++ b/modules/turnero/api/configurar_tomas.php @@ -15,6 +15,7 @@ $body = inputJson(); $token = trim($body['token'] ?? ''); $cfg = $body['tomas_config'] ?? null; $examType = trim($body['exam_type'] ?? ''); +$otroHora = trim($body['otro_hora'] ?? ''); if (!$token) jsonError('token requerido.'); if (!is_array($cfg) || empty($cfg)) jsonError('tomas_config requerido.'); @@ -42,6 +43,7 @@ if ($tc['datos_respuestas']) { $dr['_tomas_config'] = $cfg; if ($examType !== '') $dr['_c8j2g16'] = $examType; +if ($otroHora !== '') $dr['_otro_hora'] = $otroHora; $pdo->prepare("UPDATE turnero_consentimientos SET datos_respuestas = ? WHERE id = ?") ->execute([json_encode($dr, JSON_UNESCAPED_UNICODE), $tc['id']]); diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 48b171f..9ce3d9b 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -1343,11 +1343,12 @@ var _mpTomasConfig = var _mpCfgToken = ; var _mpModoTurnero = ; -function _mpGuardarConfig(config, examType, onOk, onErr) { +function _mpGuardarConfig(config, examType, onOk, onErr, extra) { var base = window.location.href.split('/ver_formulario_enviado.php')[0]; + var payload = Object.assign({ token: _mpCfgToken, tomas_config: config, exam_type: examType }, extra || {}); fetch(base + '/modules/turnero/api/configurar_tomas.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ token: _mpCfgToken, tomas_config: config, exam_type: examType }) + body: JSON.stringify(payload) }) .then(function(r) { return r.json(); }) .then(function(d) { @@ -1380,7 +1381,8 @@ function _mpShowCfgPanel(examName, groups, isModify) { var isSigned = !!savedFirmas[s.firma]; var inSaved = isModify && _mpTomasConfig && _mpTomasConfig[gk] && _mpTomasConfig[gk].indexOf(s.firma) !== -1; - var isActive = isSigned || inSaved; + var isMin0 = _mpChipLabel(s.label || '') === '0'; + var isActive = isSigned || inSaved || (!isModify && isMin0); var isOtro = /otro/i.test(s.label || ''); var chipLbl = _mpChipLabel(s.label || ('Toma ' + (i+1))); // checkbox oculto — sigue siendo la fuente de verdad para el guardado @@ -1584,12 +1586,27 @@ document.getElementById('mp-cfg-iniciar').addEventListener('click', function() { return; } } + // Validar que "Otro" tenga hora ingresada + var otroHora = ''; + var otroBtn = document.querySelector('#mp-cfg-grupos .mp-chip[data-otro="1"]'); + if (otroBtn) { + var otroChk = document.getElementById(otroBtn.getAttribute('data-target')); + if (otroChk && otroChk.checked) { + var otroInp = otroBtn.nextElementSibling; + if (otroInp && otroInp.classList.contains('mp-chip-otro-inp')) otroHora = otroInp.value.trim(); + if (!otroHora) { + document.getElementById('mp-cfg-msg').innerHTML = + 'Ingrese la hora para la toma "Otro".'; + return; + } + } + } var btn = this; btn.disabled = true; btn.innerHTML = 'Guardando...'; _mpGuardarConfig(byGroup, examName, function() { location.reload(); }, function(e) { document.getElementById('mp-cfg-msg').innerHTML = '' + e + ''; btn.disabled = false; btn.innerHTML = 'Iniciar protocolo'; - }); + }, otroHora ? { otro_hora: otroHora } : {}); }); // Botón cerrar panel de config