<?php
/**
 * Funciones de utilidad compartidas.
 */

function e($valor) {
    return htmlspecialchars((string)$valor, ENT_QUOTES, 'UTF-8');
}

function estado_arriendo($fecha_inicio, $fecha_salida) {
    $hoy = date('Y-m-d');
    if ($hoy < $fecha_inicio) return 'Pendiente';
    if ($hoy <= $fecha_salida) return 'En Arriendo';
    return 'Finalizado';
}

function badge_estado($estado) {
    $mapa = [
        'En Arriendo' => 'success',
        'Pendiente'   => 'warning',
        'Finalizado'  => 'secondary',
    ];
    $color = $mapa[$estado] ?? 'info';
    return "<span class='badge estado-badge text-bg-$color'>" . e($estado) . "</span>";
}

function dias_arriendo($fecha_inicio, $fecha_salida) {
    $d = (new DateTime($fecha_inicio))->diff(new DateTime($fecha_salida))->days;
    return max($d, 1);
}

function fecha_cl($fecha) {
    return $fecha ? date('d-m-Y', strtotime($fecha)) : '—';
}

function fecha_hora_cl($fecha) {
    return $fecha ? date('d-m-Y H:i', strtotime($fecha)) : '—';
}

function hora_cl($hora) {
    return $hora ? date('H:i', strtotime($hora)) : '—';
}

/** Valida RUT chileno (módulo 11). Acepta puntos y guión. Pasaportes u otros formatos devuelven null (no aplica). */
function validar_rut($rut) {
    $limpio = strtoupper(preg_replace('/[^0-9kK]/', '', $rut));
    if (strlen($limpio) < 8 || strlen($limpio) > 9) return null;
    $dv = substr($limpio, -1);
    $numero = substr($limpio, 0, -1);
    if (!ctype_digit($numero)) return null;

    $suma = 0; $factor = 2;
    for ($i = strlen($numero) - 1; $i >= 0; $i--) {
        $suma += (int)$numero[$i] * $factor;
        $factor = $factor === 7 ? 2 : $factor + 1;
    }
    $resto = 11 - ($suma % 11);
    $dvEsperado = $resto == 11 ? '0' : ($resto == 10 ? 'K' : (string)$resto);
    return $dv === $dvEsperado;
}

/** ¿Está el RUT en la lista negra? Normaliza puntos para comparar. */
function en_lista_negra(mysqli $conn, $rut) {
    $normal = strtoupper(preg_replace('/[^0-9kK]/', '', $rut));
    $stmt = $conn->prepare("SELECT nombre, motivo FROM lista_negra
                            WHERE REPLACE(REPLACE(REPLACE(UPPER(rut), '.', ''), '-', ''), ' ', '') = ?");
    $stmt->bind_param('s', $normal);
    $stmt->execute();
    $res = $stmt->get_result()->fetch_assoc();
    return $res ?: false;
}

/** Enlace de WhatsApp a partir de un celular chileno. */
function link_whatsapp($celular) {
    $numero = preg_replace('/[^0-9]/', '', $celular);
    if ($numero === '') return null;
    if (strlen($numero) === 9 && $numero[0] === '9') $numero = '56' . $numero;
    return 'https://wa.me/' . $numero;
}
