feat(medicos): módulo CRUD de médicos con tabla, búsqueda y modal edición
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
665fee99a9
commit
1574f12275
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
echo json_encode(['ok'=>false,'error'=>'Método no permitido']); exit;
|
||||
}
|
||||
|
||||
$datos = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
$id = !empty($datos['id']) ? (int)$datos['id'] : 0;
|
||||
|
||||
if (!$id) { echo json_encode(['ok'=>false,'error'=>'ID inválido.']); exit; }
|
||||
|
||||
$pdo = Database::getInstance()->getConnection();
|
||||
$stmt = $pdo->prepare("DELETE FROM medicos WHERE id = ?");
|
||||
$stmt->execute([$id]);
|
||||
|
||||
if ($stmt->rowCount()) {
|
||||
echo json_encode(['ok'=>true,'mensaje'=>'Médico eliminado.']);
|
||||
} else {
|
||||
echo json_encode(['ok'=>false,'error'=>'Médico no encontrado.']);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$pdo = Database::getInstance()->getConnection();
|
||||
$buscar = trim($_GET['q'] ?? '');
|
||||
|
||||
if ($buscar !== '') {
|
||||
$like = '%' . $buscar . '%';
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT id, codigo, nombres, apellidos, cod_especialidad, docidmedico, activo
|
||||
FROM medicos
|
||||
WHERE nombres LIKE ? OR apellidos LIKE ? OR codigo LIKE ? OR docidmedico LIKE ?
|
||||
ORDER BY apellidos, nombres"
|
||||
);
|
||||
$stmt->execute([$like, $like, $like, $like]);
|
||||
} else {
|
||||
$stmt = $pdo->query(
|
||||
"SELECT id, codigo, nombres, apellidos, cod_especialidad, docidmedico, activo
|
||||
FROM medicos ORDER BY apellidos, nombres"
|
||||
);
|
||||
}
|
||||
|
||||
echo json_encode(['ok' => true, 'data' => $stmt->fetchAll(PDO::FETCH_ASSOC)]);
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
echo json_encode(['ok'=>false,'error'=>'Método no permitido']); exit;
|
||||
}
|
||||
|
||||
$datos = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
$id = !empty($datos['id']) ? (int) $datos['id'] : null;
|
||||
$codigo = strtoupper(trim($datos['codigo'] ?? ''));
|
||||
$nombres = trim($datos['nombres'] ?? '');
|
||||
$apellidos = trim($datos['apellidos'] ?? '');
|
||||
$especialidad = trim($datos['cod_especialidad'] ?? '');
|
||||
$docid = trim($datos['docidmedico'] ?? '');
|
||||
|
||||
if (!$codigo) { echo json_encode(['ok'=>false,'error'=>'El código es obligatorio.']); exit; }
|
||||
if (!$nombres) { echo json_encode(['ok'=>false,'error'=>'Los nombres son obligatorios.']); exit; }
|
||||
if (!$apellidos) { echo json_encode(['ok'=>false,'error'=>'Los apellidos son obligatorios.']); exit; }
|
||||
|
||||
$pdo = Database::getInstance()->getConnection();
|
||||
|
||||
if ($id) {
|
||||
// Editar
|
||||
$stmt = $pdo->prepare(
|
||||
"UPDATE medicos SET codigo=?, nombres=?, apellidos=?, cod_especialidad=?, docidmedico=?
|
||||
WHERE id=?"
|
||||
);
|
||||
$stmt->execute([$codigo, $nombres, $apellidos, $especialidad ?: null, $docid ?: null, $id]);
|
||||
echo json_encode(['ok'=>true,'mensaje'=>'Médico actualizado correctamente.']);
|
||||
} else {
|
||||
// Crear — verificar código único
|
||||
$existe = $pdo->prepare("SELECT id FROM medicos WHERE codigo = ?");
|
||||
$existe->execute([$codigo]);
|
||||
if ($existe->fetch()) {
|
||||
echo json_encode(['ok'=>false,'error'=>"El código '$codigo' ya existe."]); exit;
|
||||
}
|
||||
$stmt = $pdo->prepare(
|
||||
"INSERT INTO medicos (codigo, nombres, apellidos, cod_especialidad, docidmedico)
|
||||
VALUES (?, ?, ?, ?, ?)"
|
||||
);
|
||||
$stmt->execute([$codigo, $nombres, $apellidos, $especialidad ?: null, $docid ?: null]);
|
||||
echo json_encode(['ok'=>true,'id'=>(int)$pdo->lastInsertId(),'mensaje'=>'Médico creado correctamente.']);
|
||||
}
|
||||
Reference in New Issue
Block a user