Skip to main content
O Employee representa o cadastro operacional de uma pessoa como funcionário de uma Company. Se o User identificado pelo email e telefone já existir, a Company cria o Employee já ativo e vinculado. Caso contrário, cria o Employee pendente e um convite; o convidado aceita o token e o sistema liga o User ao Employee. A Company é a dona do vínculo. O funcionário pode ter um perfil de Customer separado para comprar passagens ou receber créditos, mas esse perfil não é pré-requisito para criar o Employee.

Campos

Relacionamentos

  • Relaciona-se com Company por companyId.
  • Relaciona-se com Organization por organizationId.
  • Relaciona-se com User por userId, quando a identidade é resolvida diretamente ou o convite é aceito.
  • Relaciona-se com Invite pelos convites emitidos para o cadastro.

Regras de negócio

  • Employee só pode ser criado com organizationId preenchido e pertencente a uma Company.
  • A criação exige name, email e telefone para resolver a identidade do funcionário e, quando necessário, gerar o convite.
  • organizationId deve ser igual ao organizationId da Company informada em companyId.
  • Se email ou telefone resolverem o mesmo User existente, o Employee nasce ACTIVE, com userId e activatedAt, sem Invite.
  • Se não houver User existente, o Employee nasce PENDING, sem userId, e recebe um Invite EMPLOYEE.
  • Se email e telefone resolverem Users diferentes, a criação deve ser rejeitada.
  • O Invite EMPLOYEE não possui roleId e não cria Membership.
  • Ao aceitar o convite, o sistema cria ou resolve o User, grava userId e muda o Employee para ACTIVE.
  • O par companyId + userId deve ser único quando o usuário já estiver vinculado.
  • O vínculo pertence à Company. O mesmo usuário pode ser funcionário de múltiplas Companies, cada uma com seu próprio Employee.
  • Employee não deve referenciar Passenger, porque Passenger é snapshot de uma passagem.
  • Elegibilidade, saldo e uso de subsídio ou crédito corporativo devem ser derivados de CreditGrant e CreditLedgerEntry, não persistidos em Employee.
  • Quando o vínculo deixa de valer, o registro deve mudar para SUSPENDED ou REVOKED; o histórico não deve ser apagado.
  • Créditos concedidos por regra de funcionário devem validar a mesma companyId do Employee e resolver o Customer separadamente pelo User.

Enums

EmployeeStatus

Example