<?php

namespace App\Utils;

/**
 * Valida un RUN chileno.
 * @param string $run El RUN a validar.
 * @return bool True si el RUN es válido, false en caso contrario.
 */
function validarRUN($run)
{
    $run = preg_replace('/[^0-9kK]/', '', strtoupper($run));
    if (!preg_match('/^\d{7,9}[0-9K]$/', $run)) return false;
    $cuerpo = substr($run, 0, -1);
    $dv = substr($run, -1);
    $suma = 0;
    $multiplo = 2;
    for ($i = strlen($cuerpo) - 1; $i >= 0; $i--) {
        $suma += intval($cuerpo[$i]) * $multiplo;
        $multiplo = $multiplo < 7 ? $multiplo + 1 : 2;
    }
    $dvEsperado = 11 - ($suma % 11);
    $dvEsperado = $dvEsperado == 11 ? '0' : ($dvEsperado == 10 ? 'K' : (string)$dvEsperado);
    return $dv === $dvEsperado;
}
