<?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);
}
