示例#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));
        }
示例#3
0
        public CaronaCaroneiro ObterPorCaroneiro(Colaborador caroneiro)
        {
            ValidarOfertante();

            caroneiro.ValidarArgumentoNulo();
            return(Caroneiros.Where(cc => cc.Caroneiro.Equals(caroneiro)).FirstOrDefault());
        }
示例#4
0
 private bool ExistCaroneiro(string eid)
 {
     if (Caroneiros.Where(c => c.EID == eid).Any() == true)
     {
         return(true);
     }
     return(false);
 }
示例#5
0
 public void LeaveCarona(Colaborador caroneiro)
 {
     if (!ExistCaroneiro(caroneiro.EID))
     {
         throw new CaroneiroNaoEstaPresenteException();
     }
     Caroneiros.Remove(caroneiro);
     VagasDisponiveis = VagasDisponiveis + 1;
 }
示例#6
0
        private StatusCarona AlterarStatusCarona(Colaborador caroneiro, StatusCarona status)
        {
            ValidarOfertante();

            caroneiro.ValidarArgumentoNulo();

            if (!ExisteCaroneiro(caroneiro))
            {
                throw new CaroneiroNaoEncontradoException();
            }

            caroneiro.Validar();

            Caroneiros.Where(cc => cc.Caroneiro.Equals(caroneiro)).Select(cc => cc.StatusCarona = status).ToList();
            return(ObterPorCaroneiro(caroneiro).StatusCarona);
        }