This commit is contained in:
Lizandro Guarnizo
2026-05-27 20:40:17 -05:00
parent b8de9ee666
commit 2f72d87c3b
9 changed files with 208 additions and 9 deletions
+32
View File
@@ -12,6 +12,38 @@ requireMethod('POST');
try {
$datos = inputJson();
// ── Validación de formato de campos del paciente ────────────────────────
$nombreVal = trim($datos['nombre_completo'] ?? '');
if ($nombreVal !== '') {
if (!preg_match('/^[\p{L}\s\'\-\.]+$/u', $nombreVal)) {
jsonError('El nombre solo debe contener letras, tildes y espacios (sin números ni símbolos).');
}
if (count(preg_split('/\s+/', $nombreVal, -1, PREG_SPLIT_NO_EMPTY)) < 2) {
jsonError('Ingresa el nombre completo: nombre y apellido (mínimo 2 palabras).');
}
}
$telVal = trim($datos['telefono'] ?? '');
if ($telVal !== '') {
$telDigits = preg_replace('/[^0-9]/', '', $telVal);
if (!preg_match('/^(57)?3\d{9}$/', $telDigits)) {
jsonError('El celular debe comenzar por 3 y tener 10 dígitos. Ej: 3001234567.');
}
}
$docVal = trim($datos['numero_documento'] ?? '');
$tipoDoc = trim($datos['tipo_documento'] ?? 'CC');
if ($docVal !== '' && in_array($tipoDoc, ['CC', 'TI', 'RC', 'CE'], true)) {
$docDigits = preg_replace('/[^0-9]/', '', $docVal);
if (strlen($docDigits) < 4 || strlen($docDigits) > 12) {
jsonError('La cédula/TI/RC/CE debe tener entre 4 y 12 dígitos numéricos.');
}
}
$emailVal = trim($datos['email'] ?? '');
if ($emailVal !== '' && !filter_var($emailVal, FILTER_VALIDATE_EMAIL)) {
jsonError('El correo electrónico no es válido. Ej: nombre@dominio.com.');
}
// ────────────────────────────────────────────────────────────────────────
$pac = new Paciente();
$admin = adminId();