public void JoinCarona(Colaborador caroneiro) { if (VagasDisponiveis == 0) { throw new NaoHaVagasDisponiveisException(); } if (IsBlocked()) { throw new CaronaBloqueadaException(); } if (caroneiro.IsBlocked()) { throw new ColaboradorBloqueadoException(); } if (ExistCaroneiro(caroneiro.EID)) { throw new CaroneiroJaPresenteException(); } if (caroneiro.EID == Ofertante.EID) { throw new OfertanteNaoPodeOcuparVagasDaCaronaException(); } Caroneiros.Add(caroneiro); VagasDisponiveis = VagasDisponiveis - 1; }
public void SolicitarCarona(Colaborador caroneiro) { ValidarOfertante(); ValidarVagasDisponiveis(); caroneiro.ValidarArgumentoNulo(); if (EstaBloqueado()) { throw new CaronaBloqueadaException(); } if (caroneiro.EstaBloqueado()) { throw new ColaboradorBloqueadoException("Colaborador sem permissão para solicitar carona."); } if (caroneiro.Equals(Ofertante)) { throw new OfertanteComoCaroneiroException("Não é permitido o próprio ofertante ocupar vaga na própria carona."); } if (ExisteCaroneiro(caroneiro)) { throw new CaroneiroJaInclusoNaCaronaException(); } caroneiro.Validar(); Caroneiros.Add(new CaronaCaroneiro(this, caroneiro)); }