feat: enhance vacation management system with new employee association functionality, improved email notification handling, and comprehensive documentation; update dependencies and UI components for better user experience
This commit is contained in:
127
packages/backend/convex/criarFuncionarioTeste.ts
Normal file
127
packages/backend/convex/criarFuncionarioTeste.ts
Normal file
@@ -0,0 +1,127 @@
|
||||
import { v } from "convex/values";
|
||||
import { mutation } from "./_generated/server";
|
||||
|
||||
/**
|
||||
* Mutation de teste para criar um funcionário e associar ao usuário TI Master
|
||||
* Isso permite testar o sistema de férias completo
|
||||
*/
|
||||
export const criarFuncionarioParaTIMaster = mutation({
|
||||
args: {
|
||||
usuarioEmail: v.string(), // Email do usuário TI Master
|
||||
},
|
||||
returns: v.union(
|
||||
v.object({ sucesso: v.literal(true), funcionarioId: v.id("funcionarios") }),
|
||||
v.object({ sucesso: v.literal(false), erro: v.string() })
|
||||
),
|
||||
handler: async (ctx, args) => {
|
||||
// Buscar usuário
|
||||
const usuario = await ctx.db
|
||||
.query("usuarios")
|
||||
.withIndex("by_email", (q) => q.eq("email", args.usuarioEmail))
|
||||
.first();
|
||||
|
||||
if (!usuario) {
|
||||
return { sucesso: false as const, erro: "Usuário não encontrado" };
|
||||
}
|
||||
|
||||
// Verificar se já tem funcionário associado
|
||||
if (usuario.funcionarioId) {
|
||||
return { sucesso: false as const, erro: "Usuário já tem funcionário associado" };
|
||||
}
|
||||
|
||||
// Buscar um símbolo qualquer (pegamos o primeiro)
|
||||
const simbolo = await ctx.db.query("simbolos").first();
|
||||
|
||||
if (!simbolo) {
|
||||
return { sucesso: false as const, erro: "Nenhum símbolo encontrado no sistema" };
|
||||
}
|
||||
|
||||
// Criar funcionário de teste
|
||||
const funcionarioId = await ctx.db.insert("funcionarios", {
|
||||
nome: usuario.nome,
|
||||
cpf: "000.000.000-00", // CPF de teste
|
||||
rg: "0000000",
|
||||
endereco: "Endereço de Teste",
|
||||
bairro: "Centro",
|
||||
cidade: "Recife",
|
||||
uf: "PE",
|
||||
telefone: "(81) 99999-9999",
|
||||
email: usuario.email,
|
||||
matricula: usuario.matricula,
|
||||
admissaoData: "2023-01-01", // Data de admissão: 1 ano atrás
|
||||
simboloId: simbolo._id,
|
||||
simboloTipo: simbolo.tipo,
|
||||
statusFerias: "ativo",
|
||||
|
||||
// IMPORTANTE: Definir regime de trabalho
|
||||
// Altere aqui para testar diferentes regimes:
|
||||
// - "clt" = CLT (máx 3 períodos, mín 5 dias)
|
||||
// - "estatutario_pe" = Servidor Público PE (máx 2 períodos, mín 10 dias)
|
||||
regimeTrabalho: "clt",
|
||||
|
||||
// Dados opcionais
|
||||
descricaoCargo: "Gestor de TI - Cargo de Teste",
|
||||
nomePai: "Pai de Teste",
|
||||
nomeMae: "Mãe de Teste",
|
||||
naturalidade: "Recife",
|
||||
naturalidadeUF: "PE",
|
||||
sexo: "masculino",
|
||||
estadoCivil: "solteiro",
|
||||
nacionalidade: "Brasileira",
|
||||
grauInstrucao: "superior_completo",
|
||||
tipoSanguineo: "O+",
|
||||
});
|
||||
|
||||
// Associar funcionário ao usuário
|
||||
await ctx.db.patch(usuario._id, {
|
||||
funcionarioId,
|
||||
});
|
||||
|
||||
return { sucesso: true as const, funcionarioId };
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Mutation para alterar o regime de trabalho de um funcionário
|
||||
* Útil para testar diferentes regras (CLT vs Servidor PE)
|
||||
*/
|
||||
export const alterarRegimeTrabalho = mutation({
|
||||
args: {
|
||||
funcionarioId: v.id("funcionarios"),
|
||||
novoRegime: v.union(
|
||||
v.literal("clt"),
|
||||
v.literal("estatutario_pe"),
|
||||
v.literal("estatutario_federal"),
|
||||
v.literal("estatutario_municipal")
|
||||
),
|
||||
},
|
||||
returns: v.object({ sucesso: v.boolean() }),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.db.patch(args.funcionarioId, {
|
||||
regimeTrabalho: args.novoRegime,
|
||||
});
|
||||
|
||||
return { sucesso: true };
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Mutation para alterar data de admissão
|
||||
* Útil para testar diferentes períodos aquisitivos
|
||||
*/
|
||||
export const alterarDataAdmissao = mutation({
|
||||
args: {
|
||||
funcionarioId: v.id("funcionarios"),
|
||||
novaData: v.string(), // Formato: "YYYY-MM-DD"
|
||||
},
|
||||
returns: v.object({ sucesso: v.boolean() }),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.db.patch(args.funcionarioId, {
|
||||
admissaoData: args.novaData,
|
||||
});
|
||||
|
||||
return { sucesso: true };
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user