70 lines
2.2 KiB
PHP
70 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* GET /api/lab/my_agenda.php
|
|
* Devuelve la agenda del enfermero autenticado (o de cualquier enfermera para admins).
|
|
*
|
|
* Query params:
|
|
* enfermera_id (int) — Requerido para admins. Enfermeros usan automáticamente el suyo.
|
|
* fecha (Y-m-d) — Por defecto: hoy.
|
|
* rango_inicio (Y-m-d) — Para vista semanal/mensual.
|
|
* rango_fin (Y-m-d)
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireMethod('GET');
|
|
|
|
try {
|
|
// Determinar enfermera_id
|
|
if (userRole() === 'enfermero') {
|
|
$eid = enfermeraId();
|
|
if (!$eid) {
|
|
jsonError('Tu usuario no tiene una enfermera vinculada. Contacta al administrador.');
|
|
}
|
|
} else {
|
|
$eid = (int)($_GET['enfermera_id'] ?? 0);
|
|
if (!$eid) {
|
|
jsonError('enfermera_id requerido');
|
|
}
|
|
}
|
|
|
|
$enf = new Enfermera();
|
|
$fecha = $_GET['fecha'] ?? date('Y-m-d');
|
|
|
|
// Agenda del día con pleno detalle
|
|
$agenda = $enf->agenda($eid, $fecha);
|
|
|
|
// Enriquecer con servicios extra y pagos parciales
|
|
$db = Database::getInstance();
|
|
foreach ($agenda as &$item) {
|
|
$domId = (int)$item['domicilio_id'];
|
|
$item['servicios_extra'] = $db->fetchAll(
|
|
"SELECT * FROM lab_servicios_extra WHERE domicilio_id = ? ORDER BY created_at ASC",
|
|
[$domId]
|
|
);
|
|
// Parcialidades de pago (tabla nueva); vacío si no hay pagos registrados
|
|
$item['pagos_detalle'] = $db->fetchAll(
|
|
"SELECT modo, monto, notas FROM lab_domicilio_pagos WHERE domicilio_id = ? ORDER BY id ASC",
|
|
[$domId]
|
|
);
|
|
}
|
|
unset($item);
|
|
|
|
// 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([
|
|
'enfermera_id' => $eid,
|
|
'fecha' => $fecha,
|
|
'agenda' => $agenda,
|
|
'total' => count($agenda),
|
|
'totales' => $totales,
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
jsonError($e->getMessage(), 500);
|
|
}
|