fix(admin): bug del activo + simplificar a Nombre Completo + gear en landing
BUG FIX
* admin.html: el filtro <select id="f-activo"> y el modal <input id="f-activo">
tenían el MISMO id. document.getElementById devolvía el select (primer en
DOM order) y la lectura .checked siempre era undefined → JSON enviaba el
valor stale del select. Renombré el filtro a `f-activo-filter`.
REFACTOR: drop apellido, usar Nombre Completo
* Migración 007: copia apellido→name para placeholders, migra
escrituras_tramites.abogado y tramites_legales.abogado a usar nombre
completo, DROP COLUMN apellido + índice.
* Lookups: abogadoApellidos() → abogadoNames() filtra socios+abogados
activos con name no vacío.
* Auth.php: drop método apellido(), agregado userName().
* tramites/api.php: visibilidad usa users.name = t.abogado.
* admin/api.php: drop apellido en create/update payloads.
* admin.html: drop columna y campo Apellido del table y form.
* Bootstrap envía window.DONNA.abogados con nombres completos.
LANDING (index.php)
* Gear icon en dash-header visible solo si Auth::isSocio() (chequeo
server-side, sin flash de JS).
CLEANUP
* Eliminado logging de debug en admin/api.php que se agregó para
diagnosticar el bug del activo.
PERMISOS (sin cambios — confirmación)
* Trámites Legales: solo socio/abogado pueden crear (canCreate() ya lo
enforza desde 2db8f23).
* Escrituras: cualquier rol autenticado puede crear (escrituras/api.php
nunca tuvo restricción).
This commit is contained in:
@@ -91,7 +91,7 @@ function hydrate(PDO $pdo, array $row): array {
|
||||
}, $hrs->fetchAll());
|
||||
|
||||
$inv = $pdo->prepare(
|
||||
'SELECT u.id, u.email, u.name, u.apellido
|
||||
'SELECT u.id, u.email, u.name
|
||||
FROM tramites_involucrados ti
|
||||
JOIN users u ON u.id = ti.user_id
|
||||
WHERE ti.tramite_id = :t
|
||||
@@ -109,7 +109,7 @@ function hydrate(PDO $pdo, array $row): array {
|
||||
/**
|
||||
* ¿El usuario actual puede ver/editar este trámite?
|
||||
* Socio → siempre
|
||||
* Resto → si es creador, o abogado solicitante (apellido), o involucrado
|
||||
* Resto → si es creador, o abogado solicitante (name), o involucrado
|
||||
*/
|
||||
function canView(PDO $pdo, int $tid): bool {
|
||||
if (Auth::isSocio()) return true;
|
||||
@@ -117,7 +117,7 @@ function canView(PDO $pdo, int $tid): bool {
|
||||
$uid = Auth::userId();
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT 1 FROM tramites_legales t
|
||||
LEFT JOIN users ua ON ua.apellido = t.abogado AND ua.activo = 1
|
||||
LEFT JOIN users ua ON ua.name = t.abogado AND ua.activo = 1
|
||||
LEFT JOIN tramites_involucrados ti ON ti.tramite_id = t.id AND ti.user_id = :uid
|
||||
WHERE t.id = :tid
|
||||
AND (t.creado_por = :email OR ua.id = :uid2 OR ti.user_id IS NOT NULL)
|
||||
@@ -153,7 +153,7 @@ try {
|
||||
} else {
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT DISTINCT t.* FROM tramites_legales t
|
||||
LEFT JOIN users ua ON ua.apellido = t.abogado AND ua.activo = 1
|
||||
LEFT JOIN users ua ON ua.name = t.abogado AND ua.activo = 1
|
||||
LEFT JOIN tramites_involucrados ti ON ti.tramite_id = t.id AND ti.user_id = :uid
|
||||
WHERE t.creado_por = :email
|
||||
OR ua.id = :uid2
|
||||
|
||||
Reference in New Issue
Block a user