<?php
session_start();
include_once '../config/database.php';

header('Content-Type: application/json');

try {
    $fecha = isset($_GET['fecha']) ? $_GET['fecha'] : null;
    if (!$fecha) {
        throw new Exception('Fecha no válida');
    }
    // Validación simple de formato
    $dt = DateTime::createFromFormat('Y-m-d', $fecha);
    if (!$dt || $dt->format('Y-m-d') !== $fecha) {
        throw new Exception('Formato de fecha inválido');
    }

    $database = new Database();
    $conn = $database->getConnection();

    // Obtener la empresa del usuario logueado
    $codempresaUsuario = null;
    $stmt_empresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmt_empresa->execute([$_SESSION['user']['codempleado']]);
    $resultado_empresa = $stmt_empresa->fetch(PDO::FETCH_ASSOC);
    if ($resultado_empresa) {
        $codempresaUsuario = $resultado_empresa['codempresa'];
    }

    $query = "SELECT c.codcronogramaequipo, c.nropago, c.monto, c.pagadofecha, c.estado, c.ID,
                     c.fecha_iniciocobranza, c.fechapago,
                     e.nombres_ap_raz_soc, e.nro_documento, e.tipo_documento, e.numero_celular,
                     e.numero_contacto, e.plan_a_evaluar, e.agente, e.operador_actual
              FROM tcronogramaequipo c
              LEFT JOIN timportequipos e ON c.ID = e.id
              WHERE c.fecha_iniciocobranza IS NOT NULL 
              AND c.fechapago IS NOT NULL
              AND c.fecha_iniciocobranza <= ?
              AND c.fechapago >= ?";
    $params = [$fecha, $fecha];

    if ($codempresaUsuario) {
        $query .= " AND e.codempresa = ?";
        $params[] = $codempresaUsuario;
    }

    $query .= " ORDER BY e.nombres_ap_raz_soc ASC, c.nropago ASC";

    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (!$rows) {
        echo json_encode(['success' => true, 'fecha_fmt' => date('d/m/Y', strtotime($fecha)), 'html' => '<div class="text-center text-muted">Sin registros</div>']);
        exit;
    }

    $html = '';
    $html .= '<div class="table-responsive">';
    $html .= '<table class="table table-striped table-hover table-sm">';
    $html .= '<thead class="table-light">';
    $html .= '<tr><th>Cliente</th><th>Documento</th><th>Celular</th><th>Plan</th><th>N° Pago</th><th>Monto</th><th>Nro días</th><th>Fecha Pagada</th><th>Estado</th><th>Rango Cobranza</th><th>Acciones</th></tr>';
    $html .= '</thead><tbody>';
    foreach ($rows as $r) {
        $montoTxt = is_null($r['monto']) ? '-' : ('S/ ' . number_format((float)$r['monto'], 2));
        $pagadoTxt = empty($r['pagadofecha']) ? '-' : date('d/m/Y', strtotime($r['pagadofecha']));
        $estado = $r['estado'];
        if (!$estado) {
            $estado = (!is_null($r['monto']) || !empty($r['pagadofecha'])) ? 'PAGADO' : 'PENDIENTE';
        }
        $badge = strtoupper($estado) === 'PAGADO' ? 'bg-success' : 'bg-secondary';
        
        // Calcular número de días
        $diasTxt = '-';
        $diasBadge = '';
        if (!empty($r['fechapago'])) {
            $tz = new DateTimeZone('America/Lima');
            $fechaActual = new DateTime('now', $tz);
            $fechaActual->setTime(0, 0, 0);
            $fechaPago = new DateTime($r['fechapago'], $tz);
            $fechaPago->setTime(0, 0, 0);
            
            $diferencia = $fechaActual->diff($fechaPago);
            $dias = $diferencia->days;
            
            if ($fechaPago < $fechaActual) {
                $dias = -$dias;
            }
            
            $diasBadge = $dias < 0 ? 'bg-danger' : ($dias <= 7 ? 'bg-warning' : 'bg-info');
            $diasTxt = $dias == 0 ? 'Hoy' : ($dias == 1 ? '1 día' : ($dias == -1 ? '-1 día' : $dias . ' días'));
        }
        
        $html .= '<tr>';
        $html .= '<td><strong>' . htmlspecialchars($r['nombres_ap_raz_soc'] ?: '-') . '</strong></td>';
        $html .= '<td>' . htmlspecialchars(($r['tipo_documento'] ?: '') . ' ' . ($r['nro_documento'] ?: '-')) . '</td>';
        $html .= '<td>' . htmlspecialchars($r['numero_celular'] ?: '-') . '</td>';
        $html .= '<td>' . htmlspecialchars($r['plan_a_evaluar'] ?: '-') . '</td>';
        // Mostrar solo los últimos 4 dígitos del número de pago
        $nropago = $r['nropago'] ?: '';
        $nropagoDisplay = $nropago ? substr($nropago, -4) : '-';
        $html .= '<td><span class="badge bg-secondary">' . htmlspecialchars($nropagoDisplay) . '</span></td>';
        $html .= '<td>' . $montoTxt . '</td>';
        if ($diasTxt !== '-') {
            $html .= '<td><span class="badge ' . $diasBadge . '" title="Días hasta la fecha de pago">' . $diasTxt . '</span></td>';
        } else {
            $html .= '<td>-</td>';
        }
        $html .= '<td>' . $pagadoTxt . '</td>';
        $html .= '<td><span class="badge ' . $badge . '">' . htmlspecialchars($estado) . '</span></td>';
        // Rango Cobranza
        $fechaInicio = !empty($r['fecha_iniciocobranza']) ? date('d/m/Y', strtotime($r['fecha_iniciocobranza'])) : '-';
        $fechaFin = !empty($r['fechapago']) ? date('d/m/Y', strtotime($r['fechapago'])) : '-';
        $html .= '<td><small><strong>Inicio:</strong> ' . $fechaInicio . '<br><strong>Fin:</strong> ' . $fechaFin . '</small></td>';
        $html .= '<td>';
        if (!empty($r['numero_contacto'])) {
            $clienteData = [
                'id' => $r['ID'],
                'numero_contacto' => $r['numero_contacto'],
                'nombre' => $r['nombres_ap_raz_soc'],
                'documento' => $r['nro_documento']
            ];
            $jsonData = htmlspecialchars(json_encode($clienteData), ENT_QUOTES, 'UTF-8');
            $html .= '<button class="btn btn-sm btn-success" ';
            $html .= 'onclick="abrirModalMensajes(' . $jsonData . ')" ';
            $html .= 'title="Enviar mensaje">';
            $html .= '<i class="fas fa-comment-dots"></i> Mensajes';
            $html .= '</button>';
        } else {
            $html .= '<span class="text-muted small">Sin contacto</span>';
        }
        $html .= '</td>';
        $html .= '</tr>';
    }
    $html .= '</tbody></table></div>';

    echo json_encode([
        'success' => true,
        'fecha' => $fecha,
        'fecha_fmt' => date('d/m/Y', strtotime($fecha)),
        'html' => $html
    ]);
} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}
?>


