"use server"; import type { Id } from "./_generated/dataModel"; export type TicketFormFieldSeed = { key: string; label: string; type: "text" | "number" | "date" | "select" | "boolean"; required?: boolean; description?: string; options?: Array<{ value: string; label: string }>; companyId?: Id<"companies"> | null; }; export const TICKET_FORM_CONFIG = [ { key: "admissao" as const, label: "Admissão de colaborador", description: "Coleta dados completos para novos colaboradores, incluindo informações pessoais e provisionamento de acesso.", defaultEnabled: true, }, { key: "desligamento" as const, label: "Desligamento de colaborador", description: "Checklist de desligamento com orientações para revogar acessos e coletar equipamentos.", defaultEnabled: true, }, ]; export const OPTIONAL_ADMISSION_FIELD_KEYS = [ "colaborador_observacoes", "colaborador_permissoes_pasta", "colaborador_equipamento", "colaborador_grupos_email", "colaborador_cpf", "colaborador_rg", "colaborador_patrimonio", ]; export const TICKET_FORM_DEFAULT_FIELDS: Record = { admissao: [ { key: "solicitante_nome", label: "Nome do solicitante", type: "text", required: true, description: "Quem está solicitando a admissão." }, { key: "solicitante_telefone", label: "Telefone do solicitante", type: "text", required: true }, { key: "solicitante_ramal", label: "Ramal", type: "text" }, { key: "solicitante_email", label: "E-mail do solicitante", type: "text", required: true, description: "Informe um e-mail válido para retornarmos atualizações.", }, { key: "colaborador_nome", label: "Nome do colaborador", type: "text", required: true }, { key: "colaborador_email_desejado", label: "E-mail do colaborador", type: "text", required: true, description: "Endereço de e-mail que deverá ser criado." }, { key: "colaborador_data_nascimento", label: "Data de nascimento", type: "date", required: true }, { key: "colaborador_rg", label: "RG", type: "text", required: false }, { key: "colaborador_cpf", label: "CPF", type: "text", required: false }, { key: "colaborador_data_inicio", label: "Data de início", type: "date", required: true }, { key: "colaborador_departamento", label: "Departamento", type: "text", required: true }, { key: "colaborador_nova_contratacao", label: "O colaborador é uma nova contratação?", type: "select", required: true, description: "Informe se é uma nova contratação ou substituição.", options: [ { value: "nova", label: "Sim, nova contratação" }, { value: "substituicao", label: "Não, irá substituir alguém" }, ], }, { key: "colaborador_substituicao", label: "Quem será substituído?", type: "text", description: "Preencha somente se for uma substituição.", }, { key: "colaborador_grupos_email", label: "Grupos de e-mail necessários", type: "text", required: false, description: "Liste os grupos ou escreva 'Não se aplica'.", }, { key: "colaborador_equipamento", label: "Equipamento disponível", type: "text", required: false, description: "Informe se já existe equipamento ou qual deverá ser disponibilizado.", }, { key: "colaborador_permissoes_pasta", label: "Permissões de pastas", type: "text", required: false, description: "Indique quais pastas ou qual colaborador servirá de referência.", }, { key: "colaborador_observacoes", label: "Observações adicionais", type: "text", required: false, }, { key: "colaborador_patrimonio", label: "Patrimônio do computador (se houver)", type: "text", required: false, }, ], desligamento: [ { key: "contato_nome", label: "Contato responsável", type: "text", required: true }, { key: "contato_email", label: "E-mail do contato", type: "text", required: true }, { key: "contato_telefone", label: "Telefone do contato", type: "text" }, { key: "colaborador_nome", label: "Nome do colaborador", type: "text", required: true }, { key: "colaborador_departamento", label: "Departamento do colaborador", type: "text", required: true }, { key: "colaborador_email", label: "E-mail do colaborador", type: "text", required: true, description: "Informe o e-mail que deve ser desativado.", }, { key: "colaborador_patrimonio", label: "Patrimônio do computador", type: "text", description: "Informe o patrimônio se houver equipamento vinculado.", }, ], };