import { v } from "convex/values"; import { mutation } from "./_generated/server"; import { hashPassword } from "./auth/utils"; /** * Cria um usuário de teste com funcionário associado * para testar o sistema de férias */ export const criarUsuarioParaTesteFerias = mutation({ args: {}, returns: v.object({ sucesso: v.boolean(), login: v.string(), senha: v.string(), mensagem: v.string(), }), handler: async (ctx, args) => { const loginTeste = "teste.ferias"; const senhaTeste = "Teste@2025"; const emailTeste = "teste.ferias@sgse.pe.gov.br"; const nomeTeste = "João Silva (Teste)"; // Verificar se já existe const usuarioExistente = await ctx.db .query("usuarios") .withIndex("by_matricula", (q) => q.eq("matricula", loginTeste)) .first(); if (usuarioExistente) { return { sucesso: true, login: loginTeste, senha: senhaTeste, mensagem: "Usuário de teste já existe! Use as credenciais abaixo.", }; } // Buscar role padrão (usuário comum) const roleUsuario = await ctx.db .query("roles") .filter((q) => q.eq(q.field("nome"), "usuario")) .first(); if (!roleUsuario) { return { sucesso: false, login: "", senha: "", mensagem: "Erro: Role 'usuario' não encontrada", }; } // Buscar um símbolo qualquer const simbolo = await ctx.db.query("simbolos").first(); if (!simbolo) { return { sucesso: false, login: "", senha: "", mensagem: "Erro: Nenhum símbolo encontrado. Crie um símbolo primeiro.", }; } // Criar funcionário const funcionarioId = await ctx.db.insert("funcionarios", { nome: nomeTeste, cpf: "111.222.333-44", rg: "1234567", nascimento: "1990-05-15", endereco: "Rua de Teste, 123", bairro: "Centro", cidade: "Recife", uf: "PE", cep: "50000-000", telefone: "(81) 98765-4321", email: emailTeste, matricula: loginTeste, admissaoData: "2023-01-15", // Admitido em jan/2023 (quase 2 anos) simboloId: simbolo._id, simboloTipo: simbolo.tipo, statusFerias: "ativo", regimeTrabalho: "clt", // CLT para testar descricaoCargo: "Analista Administrativo", nomePai: "José Silva", nomeMae: "Maria Silva", naturalidade: "Recife", naturalidadeUF: "PE", sexo: "masculino", estadoCivil: "solteiro", nacionalidade: "Brasileira", grauInstrucao: "superior", }); // Criar usuário const senhaHash = await hashPassword(senhaTeste); const usuarioId = await ctx.db.insert("usuarios", { matricula: loginTeste, senhaHash, nome: nomeTeste, email: emailTeste, funcionarioId, roleId: roleUsuario._id, ativo: true, primeiroAcesso: false, // Já consideramos que fez primeiro acesso criadoEm: Date.now(), atualizadoEm: Date.now(), }); return { sucesso: true, login: loginTeste, senha: senhaTeste, mensagem: "Usuário de teste criado com sucesso!", }; }, });