cambios
This commit is contained in:
@@ -48,7 +48,12 @@ try {
|
||||
}
|
||||
unset($item);
|
||||
|
||||
// Resumen rápido
|
||||
// Marcar si el domicilio fue creado por el propio usuario (para control de edición en portal enfermero)
|
||||
$adminUserId = adminId();
|
||||
foreach ($agenda as &$item) {
|
||||
$item['es_propio'] = (!empty($item['creado_por']) && (int)$item['creado_por'] === $adminUserId);
|
||||
}
|
||||
unset($item);
|
||||
$totales = array_count_values(array_column($agenda, 'domicilio_estado'));
|
||||
|
||||
jsonOk([
|
||||
|
||||
@@ -19,7 +19,15 @@ try {
|
||||
|
||||
// ── Reprogramar ──
|
||||
if (!empty($datos['id']) && !empty($datos['reprogramar'])) {
|
||||
$id = (int)$datos['id'];
|
||||
$id = (int)$datos['id'];
|
||||
// Enfermero solo puede reprogramar domicilios que él mismo creó
|
||||
if (userRole() === 'enfermero') {
|
||||
$dbCheck = Database::getInstance();
|
||||
$chk = $dbCheck->fetchOne("SELECT creado_por FROM lab_domicilios WHERE id = ?", [$id]);
|
||||
if (!$chk || (int)($chk['creado_por'] ?? 0) !== adminId()) {
|
||||
jsonError('Solo puedes reprogramar domicilios que tú mismo agendaste.');
|
||||
}
|
||||
}
|
||||
$nuevaFecha = trim($datos['nueva_fecha'] ?? '');
|
||||
$nuevaHora = trim($datos['nueva_hora'] ?? '');
|
||||
$motivo = trim($datos['motivo'] ?? '');
|
||||
@@ -47,6 +55,14 @@ try {
|
||||
if (!empty($datos['id'])) {
|
||||
// Actualización general
|
||||
$id = (int)$datos['id'];
|
||||
// Enfermero solo puede editar domicilios que él mismo creó
|
||||
if (userRole() === 'enfermero') {
|
||||
$dbCheck = Database::getInstance();
|
||||
$chk = $dbCheck->fetchOne("SELECT creado_por FROM lab_domicilios WHERE id = ?", [$id]);
|
||||
if (!$chk || (int)($chk['creado_por'] ?? 0) !== adminId()) {
|
||||
jsonError('Solo puedes editar domicilios que tú mismo agendaste.');
|
||||
}
|
||||
}
|
||||
unset($datos['id'], $datos['solo_estado']);
|
||||
// Normalizar orden_id: vacío o 0 → null
|
||||
if (isset($datos['orden_id']) && ($datos['orden_id'] === '' || (int)$datos['orden_id'] === 0)) {
|
||||
@@ -61,6 +77,11 @@ try {
|
||||
jsonError("El campo $req es obligatorio");
|
||||
}
|
||||
}
|
||||
// Validar formato mínimo de dirección
|
||||
$dirVal = trim($datos['direccion'] ?? '');
|
||||
if (strlen($dirVal) < 5) {
|
||||
jsonError('La dirección es muy corta. Ingresa una dirección completa. Ej: Cra 15 # 32-10.');
|
||||
}
|
||||
// Normalizar orden_id: vacío o 0 → null (evita FK constraint)
|
||||
if (isset($datos['orden_id']) && ($datos['orden_id'] === '' || (int)$datos['orden_id'] === 0)) {
|
||||
$datos['orden_id'] = null;
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user