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 }; }, });