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)); }
public CaronaCaroneiro ObterPorCaroneiro(Colaborador caroneiro) { ValidarOfertante(); caroneiro.ValidarArgumentoNulo(); return(Caroneiros.Where(cc => cc.Caroneiro.Equals(caroneiro)).FirstOrDefault()); }
public CaronaCaroneiro(Carona carona, Colaborador caroneiro) : base() { carona.ValidarArgumentoNulo(); caroneiro.ValidarArgumentoNulo(); Carona = carona; Caroneiro = caroneiro; StatusCarona = StatusCarona.PENDENTE; }
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); } }
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); }
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; }