Exemple #1
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));
        }
Exemple #2
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);
        }