<?php
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];
$msg = '';

// Apenas admin pode acessar configurações completas
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $perfil === 'admin') {
    $acao_form = $_POST['acao_form'] ?? '';

    if ($acao_form === 'criar_usuario') {
        $nome     = limpar($_POST['nome'] ?? '');
        $email    = limpar($_POST['email'] ?? '');
        $senha    = $_POST['senha'] ?? '';
        $perfil_u = limpar($_POST['perfil_novo'] ?? 'tecnico');

        if ($nome && $email && strlen($senha) >= 6) {
            // Verificar se e-mail já existe
            $check = $db->prepare("SELECT id FROM usuarios WHERE email=?");
            $check->execute([$email]);
            if ($check->fetch()) {
                $msg = 'error:Este e-mail já está cadastrado.';
            } else {
                $hash = password_hash($senha, PASSWORD_BCRYPT, ['cost' => BCRYPT_COST]);
                $db->prepare("INSERT INTO usuarios (nome,email,senha,perfil) VALUES (?,?,?,?)")
                   ->execute([$nome,$email,$hash,$perfil_u]);
                $msg = 'success:Usuário criado com sucesso!';
            }
        } else {
            $msg = 'error:Preencha todos os campos. Senha mínima: 6 caracteres.';
        }

    } elseif ($acao_form === 'alterar_senha') {
        $id_u      = intval($_POST['usuario_id'] ?? 0);
        $nova_senha = $_POST['nova_senha'] ?? '';
        if ($id_u > 0 && strlen($nova_senha) >= 6) {
            $hash = password_hash($nova_senha, PASSWORD_BCRYPT, ['cost' => BCRYPT_COST]);
            $db->prepare("UPDATE usuarios SET senha=? WHERE id=?")->execute([$hash,$id_u]);
            $msg = 'success:Senha alterada com sucesso!';
        } else {
            $msg = 'error:Senha mínima de 6 caracteres.';
        }

    } elseif ($acao_form === 'alterar_perfil') {
        $id_u      = intval($_POST['usuario_id'] ?? 0);
        $novo_perf = limpar($_POST['novo_perfil'] ?? '');
        if ($id_u > 0 && $novo_perf) {
            $db->prepare("UPDATE usuarios SET perfil=? WHERE id=?")->execute([$novo_perf,$id_u]);
            $msg = 'success:Perfil atualizado!';
        }

    } elseif ($acao_form === 'excluir_usuario') {
        $id_u = intval($_POST['usuario_id'] ?? 0);
        if ($id_u > 0 && $id_u !== $usuario['id']) {
            $db->prepare("DELETE FROM usuarios WHERE id=?")->execute([$id_u]);
            $msg = 'success:Usuário removido!';
        } else {
            $msg = 'error:Você não pode excluir sua própria conta.';
        }
    }
}

// Minha conta: alterar senha
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['acao_form'] ?? '') === 'minha_senha') {
    $senha_atual = $_POST['senha_atual'] ?? '';
    $nova_senha  = $_POST['nova_senha_minha'] ?? '';
    $confirmar   = $_POST['confirmar_senha'] ?? '';

    $u = $db->prepare("SELECT senha FROM usuarios WHERE id=?");
    $u->execute([$usuario['id']]);
    $u_data = $u->fetch();

    if (!password_verify($senha_atual, $u_data['senha'])) {
        $msg = 'error:Senha atual incorreta.';
    } elseif ($nova_senha !== $confirmar) {
        $msg = 'error:A nova senha e a confirmação não coincidem.';
    } elseif (strlen($nova_senha) < 6) {
        $msg = 'error:Senha mínima de 6 caracteres.';
    } else {
        $hash = password_hash($nova_senha, PASSWORD_BCRYPT, ['cost' => BCRYPT_COST]);
        $db->prepare("UPDATE usuarios SET senha=? WHERE id=?")->execute([$hash,$usuario['id']]);
        $msg = 'success:Sua senha foi alterada com sucesso!';
    }
}

$usuarios = $db->query("SELECT id,nome,email,perfil,criado_em FROM usuarios ORDER BY nome")->fetchAll();
$perfis_labels = ['admin'=>'Administrador','diretor_geral'=>'Diretor Geral','gestor_unidade'=>'Gestor de Unidade','tecnico'=>'Técnico'];
$pagina_titulo = 'Configurações';
require_once '../1_frontend/layout.php';
?>

<div class="space-y-5">
  <div>
    <h1 class="text-2xl font-bold text-actsafe-text flex items-center gap-2">
      <i data-lucide="settings" class="w-6 h-6 text-actsafe-blue"></i> Configurações
    </h1>
    <p class="text-sm text-gray-500 mt-0.5">Gerenciamento de usuários e configurações do sistema</p>
  </div>

  <?php if ($msg): [$tipo_msg,$texto_msg] = explode(':', $msg, 2); ?>
  <div class="flex items-center gap-2 px-4 py-3 rounded-lg text-sm font-medium
    <?= $tipo_msg==='success' ? 'bg-green-50 border border-green-200 text-green-700' : 'bg-red-50 border border-red-200 text-red-700' ?>">
    <i data-lucide="<?= $tipo_msg==='success' ? 'check-circle' : 'alert-circle' ?>" class="w-4 h-4"></i>
    <?= sanitizar($texto_msg) ?>
  </div>
  <?php endif; ?>

  <!-- Minha Conta -->
  <div class="card border-l-4 border-actsafe-blue">
    <h2 class="font-semibold text-actsafe-text mb-4 flex items-center gap-2">
      <i data-lucide="user" class="w-4 h-4 text-actsafe-blue"></i> Minha Conta
    </h2>
    <div class="flex items-center gap-4 mb-4">
      <div class="w-14 h-14 rounded-full bg-actsafe-orange flex items-center justify-center text-white text-xl font-bold">
        <?= strtoupper(substr($usuario['nome'], 0, 1)) ?>
      </div>
      <div>
        <p class="font-semibold text-actsafe-text"><?= sanitizar($usuario['nome']) ?></p>
        <p class="text-sm text-gray-500"><?= sanitizar($usuario['email']) ?></p>
        <span class="inline-block text-xs px-2 py-0.5 rounded-full bg-actsafe-blue text-white mt-1">
          <?= $perfis_labels[$usuario['perfil']] ?? $usuario['perfil'] ?>
        </span>
      </div>
    </div>
    <form method="POST" action="configuracoes.php" class="grid grid-cols-1 sm:grid-cols-3 gap-3">
      <input type="hidden" name="acao_form" value="minha_senha">
      <div>
        <label class="form-label">Senha Atual</label>
        <input type="password" name="senha_atual" class="form-input" required>
      </div>
      <div>
        <label class="form-label">Nova Senha</label>
        <input type="password" name="nova_senha_minha" class="form-input" minlength="6" required>
      </div>
      <div>
        <label class="form-label">Confirmar Nova Senha</label>
        <input type="password" name="confirmar_senha" class="form-input" minlength="6" required>
      </div>
      <div class="sm:col-span-3">
        <button type="submit" class="btn-primary"><i data-lucide="key" class="w-4 h-4"></i> Alterar Minha Senha</button>
      </div>
    </form>
  </div>

  <?php if ($perfil === 'admin'): ?>
  <!-- Gerenciar Usuários (apenas admin) -->
  <div class="card">
    <div class="flex items-center justify-between mb-4">
      <h2 class="font-semibold text-actsafe-text flex items-center gap-2">
        <i data-lucide="users" class="w-4 h-4 text-actsafe-blue"></i> Gerenciar Usuários
      </h2>
      <button onclick="document.getElementById('form-novo-usuario').classList.toggle('hidden')" class="btn-primary text-sm">
        <i data-lucide="user-plus" class="w-4 h-4"></i> Novo Usuário
      </button>
    </div>

    <!-- Formulário Novo Usuário -->
    <div id="form-novo-usuario" class="hidden mb-4 p-4 bg-blue-50 rounded-xl border border-blue-200">
      <p class="text-sm font-semibold text-actsafe-blue mb-3">Criar Novo Usuário</p>
      <form method="POST" action="configuracoes.php">
        <input type="hidden" name="acao_form" value="criar_usuario">
        <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3">
          <div>
            <label class="form-label text-xs">Nome Completo *</label>
            <input type="text" name="nome" class="form-input text-sm" required>
          </div>
          <div>
            <label class="form-label text-xs">E-mail *</label>
            <input type="email" name="email" class="form-input text-sm" required>
          </div>
          <div>
            <label class="form-label text-xs">Senha (mín. 6 caracteres) *</label>
            <input type="password" name="senha" class="form-input text-sm" minlength="6" required>
          </div>
          <div>
            <label class="form-label text-xs">Perfil *</label>
            <select name="perfil_novo" class="form-input text-sm">
              <?php foreach ($perfis_labels as $v => $l): ?>
              <option value="<?= $v ?>"><?= $l ?></option>
              <?php endforeach; ?>
            </select>
          </div>
        </div>
        <div class="flex gap-2 mt-3">
          <button type="submit" class="btn-primary text-sm"><i data-lucide="save" class="w-3.5 h-3.5"></i> Criar Usuário</button>
          <button type="button" onclick="document.getElementById('form-novo-usuario').classList.add('hidden')" class="btn-outline text-sm">Cancelar</button>
        </div>
      </form>
    </div>

    <!-- Tabela de Usuários -->
    <div class="overflow-x-auto">
      <table class="w-full text-sm">
        <thead class="bg-gray-50 border-b border-gray-200">
          <tr>
            <th class="text-left px-4 py-3 font-semibold text-gray-600">Nome</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600 hidden sm:table-cell">E-mail</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600">Perfil</th>
            <th class="text-center px-4 py-3 font-semibold text-gray-600">Ações</th>
          </tr>
        </thead>
        <tbody class="divide-y divide-gray-100">
          <?php foreach ($usuarios as $u): ?>
          <tr class="table-row">
            <td class="px-4 py-3 font-medium text-actsafe-text"><?= sanitizar($u['nome']) ?></td>
            <td class="px-4 py-3 text-gray-500 hidden sm:table-cell"><?= sanitizar($u['email']) ?></td>
            <td class="px-4 py-3">
              <form method="POST" action="configuracoes.php" class="flex items-center gap-2">
                <input type="hidden" name="acao_form" value="alterar_perfil">
                <input type="hidden" name="usuario_id" value="<?= $u['id'] ?>">
                <select name="novo_perfil" class="form-input py-1 text-xs w-auto" onchange="this.form.submit()">
                  <?php foreach ($perfis_labels as $v => $l): ?>
                  <option value="<?= $v ?>" <?= $u['perfil'] === $v ? 'selected' : '' ?>><?= $l ?></option>
                  <?php endforeach; ?>
                </select>
              </form>
            </td>
            <td class="px-4 py-3 text-center">
              <div class="flex items-center justify-center gap-2">
                <!-- Alterar Senha -->
                <button onclick="document.getElementById('senha-<?= $u['id'] ?>').classList.toggle('hidden')"
                        class="text-actsafe-blue hover:text-actsafe-dark" title="Alterar Senha">
                  <i data-lucide="key" class="w-4 h-4"></i>
                </button>
                <?php if ($u['id'] !== $usuario['id']): ?>
                <form method="POST" action="configuracoes.php" onsubmit="return confirmarExclusao(this)" class="inline">
                  <input type="hidden" name="acao_form" value="excluir_usuario">
                  <input type="hidden" name="usuario_id" value="<?= $u['id'] ?>">
                  <button type="submit" class="text-red-400 hover:text-red-600" title="Excluir">
                    <i data-lucide="trash-2" class="w-4 h-4"></i>
                  </button>
                </form>
                <?php endif; ?>
              </div>
              <!-- Form de senha inline -->
              <div id="senha-<?= $u['id'] ?>" class="hidden mt-2">
                <form method="POST" action="configuracoes.php" class="flex gap-1">
                  <input type="hidden" name="acao_form" value="alterar_senha">
                  <input type="hidden" name="usuario_id" value="<?= $u['id'] ?>">
                  <input type="password" name="nova_senha" class="form-input text-xs py-1" placeholder="Nova senha" minlength="6" required>
                  <button type="submit" class="btn-primary text-xs py-1 px-2"><i data-lucide="save" class="w-3 h-3"></i></button>
                </form>
              </div>
            </td>
          </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    </div>
  </div>

  <!-- Informações do Sistema -->
  <div class="card">
    <h2 class="font-semibold text-actsafe-text mb-4 flex items-center gap-2">
      <i data-lucide="info" class="w-4 h-4 text-actsafe-blue"></i> Informações do Sistema
    </h2>
    <div class="grid grid-cols-2 sm:grid-cols-4 gap-4 text-sm">
      <div class="bg-gray-50 rounded-lg p-3">
        <p class="text-xs text-gray-400 font-medium">Sistema</p>
        <p class="font-semibold text-actsafe-text mt-0.5"><?= APP_NAME ?></p>
      </div>
      <div class="bg-gray-50 rounded-lg p-3">
        <p class="text-xs text-gray-400 font-medium">Versão</p>
        <p class="font-semibold text-actsafe-text mt-0.5"><?= APP_VERSION ?></p>
      </div>
      <div class="bg-gray-50 rounded-lg p-3">
        <p class="text-xs text-gray-400 font-medium">Desenvolvido por</p>
        <p class="font-semibold text-actsafe-text mt-0.5"><?= APP_AUTHOR ?></p>
      </div>
      <div class="bg-gray-50 rounded-lg p-3">
        <p class="text-xs text-gray-400 font-medium">PHP</p>
        <p class="font-semibold text-actsafe-text mt-0.5"><?= phpversion() ?></p>
      </div>
    </div>
  </div>
  <?php endif; ?>
</div>

<?php require_once '../1_frontend/layout_footer.php'; ?>
