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; }
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()); }
private bool ExistCaroneiro(string eid) { if (Caroneiros.Where(c => c.EID == eid).Any() == true) { return(true); } return(false); }
public void LeaveCarona(Colaborador caroneiro) { if (!ExistCaroneiro(caroneiro.EID)) { throw new CaroneiroNaoEstaPresenteException(); } Caroneiros.Remove(caroneiro); VagasDisponiveis = VagasDisponiveis + 1; }
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); }