119 lines
3.1 KiB
TypeScript
119 lines
3.1 KiB
TypeScript
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!",
|
|
};
|
|
},
|
|
});
|
|
|