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

            caroneiro.ValidarArgumentoNulo();
            return(Caroneiros.Where(cc => cc.Caroneiro.Equals(caroneiro)).FirstOrDefault());
        }
Beispiel #3
0
        public CaronaCaroneiro(Carona carona, Colaborador caroneiro) : base()
        {
            carona.ValidarArgumentoNulo();
            caroneiro.ValidarArgumentoNulo();

            Carona       = carona;
            Caroneiro    = caroneiro;
            StatusCarona = StatusCarona.PENDENTE;
        }
Beispiel #4
0
        public void ValidarOfertante(Colaborador ofertante = null)
        {
            const string Msg = "Colaborador sem permissão para oferecer carona.";

            ofertante = (ofertante != null) ? ofertante : Ofertante;
            ofertante.ValidarArgumentoNulo(MSG_OFERTANTE_NAO_INFORMADO);

            if (ofertante.EstaBloqueado())
            {
                throw new ColaboradorBloqueadoException(Msg);
            }
        }
Beispiel #5
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);
        }
Beispiel #6
0
        public Carona(Colaborador ofertante, int vagas, Endereco origem, Endereco destino) : this()
        {
            ofertante.ValidarArgumentoNulo();
            vagas.ValidarVagas(LIMITE_MAXIMO_DE_VAGAS, LIMITE_MINIMO_DE_VAGAS);

            origem.ValidarArgumentoNulo();
            destino.ValidarArgumentoNulo();

            Ofertante  = ofertante;
            VagasTotal = vagas;

            origem.Tipo  = TipoEndereco.ORIGEM;
            destino.Tipo = TipoEndereco.DESTINO;

            Enderecos.Add(origem);
            Enderecos.Add(destino);
            //Origem.CaronaOrigem = this;
            //Destino.CaronaDestino = this;
        }