<?php

namespace App\Controllers;

use App\Core\FbAuth;
use App\Core\Lojas;
use App\Core\View;

class UsuariosController
{
    // GET /configurar/usuarios
    public function index(): void
    {
        FbAuth::guard();
        if (!FbAuth::isAdmin()) {
            header('Location: /sem-permissao');
            exit;
        }

        $config   = $this->config();
        $usuarios = FbAuth::listarUsuariosERP();
        $modulos  = FbAuth::modulosPorSegmento(Lojas::resolverSegmento($config));

        View::render('configurar/usuarios', [
            'titulo'   => 'Gerenciar Usuarios — Premium Express Gestão',
            'config'   => $config,
            'conexao'  => ['success' => true, 'mensagem' => ''],
            'segmento' => \App\Core\Lojas::resolverSegmento($config),
            'filtros'  => ['dataIni' => date('Y-m-01'), 'dataFim' => date('Y-m-d'), 'anos' => [date('Y')], 'anoSel' => (int)date('Y')],
            'erros'    => [],
            'ano'      => date('Y'),
            'usuarios' => $usuarios,
            'modulos'  => $modulos,
            'lojas'    => Lojas::multi() ? Lojas::todas() : [],
            'ok'       => $_GET['ok'] ?? '',
        ]);
    }

    // POST /configurar/usuarios/salvar
    public function salvar(): void
    {
        FbAuth::guard();
        if (!FbAuth::isAdmin()) {
            header('Location: /sem-permissao');
            exit;
        }

        $usuario = strtoupper(trim($_POST['usuario'] ?? ''));
        $modulos = $_POST['modulos'] ?? [];

        if ($usuario !== '') {
            // Se marcou "todos" (*), salvar como ['*']
            if (in_array('*', $modulos, true)) {
                $modulos = ['*'];
            }
            FbAuth::salvarPermissoes($usuario, array_values($modulos));

            // Lojas que o usuário pode acessar (multi-loja). Vazio = todas.
            if (Lojas::multi()) {
                $lojas = $_POST['lojas'] ?? [];
                FbAuth::salvarLojasUsuario($usuario, is_array($lojas) ? $lojas : []);
            }
        }

        header('Location: /configurar/usuarios?ok=1');
        exit;
    }

    // POST /configurar/usuarios/novo
    public function novo(): void
    {
        FbAuth::guard();
        if (!FbAuth::isAdmin()) {
            header('Location: /sem-permissao');
            exit;
        }

        $usuario = strtoupper(trim($_POST['novo_usuario'] ?? ''));
        if ($usuario !== '') {
            FbAuth::salvarPermissoes($usuario, []);
        }

        header('Location: /configurar/usuarios?ok=1');
        exit;
    }

    private function config(): array
    {
        $path = dirname(__DIR__, 2) . '/config/database.php';
        return file_exists($path) ? (require $path) : [];
    }
}
