<?php
/**
 * csvUsersController.php — Sprint 4
 * + Contraseñas ocultas en exportación
 * + Eliminado error_reporting(0)
 * + Query guardada en variable (no duplicada)
 */
namespace app\controller\administradores;

use app\models\User;

ob_start();

require_once '../../../app/models/user.php';

$usuario = new User();
$resultados = $usuario->all();

if (!$resultados || count($resultados) == 0) {
    echo "sin resultados";
    exit;
}

$filename = "usuarios.csv";
$f = fopen('php://memory', 'w');

// Sprint 4: password excluido de encabezados
$encabezados = array('user_id', 'name', 'email', 'username', 'zona', 'activo', 'telefono', 'voto', 'registro', 'quorum');

$encabezados_convertidos = array_map(function ($elemento) {
    return mb_convert_encoding($elemento, 'Windows-1252', 'UTF-8');
}, $encabezados);

fputcsv($f, $encabezados_convertidos);

foreach ($resultados as $fila) {
    // Sprint 4: Remover password y columnas técnicas
    foreach (['password', 'poder', 'fecha_ingreso', 'fecha_salida', 'registrozoom', 'token_votacion', 'token_expira'] as $col) {
        if (isset($fila[$col])) {
            unset($fila[$col]);
        }
    }

    $fila_convertida = array_map(function ($elemento) {
        return mb_convert_encoding((string)$elemento, 'Windows-1252', 'UTF-8');
    }, $fila);

    fputcsv($f, $fila_convertida);
}

fseek($f, 0);

header('Content-Type: text/csv; charset=Windows-1252');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);

ob_end_flush();
