示例#1
0
 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;
 }
示例#2
0
        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));
        }