// GET: Jogador public ActionResult Index() { var lista = _jogadorRepositorio.GetTodos(); return(View(lista)); }
public ActionResult ProximoTurno(int Id) { // pega ultimo turno(atual) ,se partida estiver null turno será zero se não tuno vai receber o valor do turno dauqela partida var ultimaPartida = _partidaRepositorio.Get(a => a.CampeonatoId == Id).OrderByDescending(p => p.Turno).FirstOrDefault(); int turno = 0; if (ultimaPartida != null) { turno = ultimaPartida.Turno; } List <Jogador> jogadores = null; if (turno == 0) { jogadores = _jogadorRepositorio.GetTodos(); } else { var possuiPartidaSemResultado = _partidaRepositorio.Get(a => a.JogadorIdVencedor == null && a.Turno == turno).Any(); if (possuiPartidaSemResultado) { TempData["mensagemErro"] = "Favor Verifique se alguma partida não possui resultado"; return(RedirectToAction("Index", new { Id = Id })); } else { jogadores = _partidaRepositorio.Get(a => a.Turno == turno && a.CampeonatoId == Id).Select(a => a.JogadorVencedor).ToList(); } } var possilidades = new List <int>() { 2, 4, 8, 16, 32 }; var resultado = possilidades.FirstOrDefault(p => p == jogadores.Count); if (resultado == 0) { var msg = string.Join(",", possilidades); TempData["mensagemErro"] = "O sistema não possui quantidade de jogadores suficiente, para se iniciar um campeonato é necessário " + msg; return(RedirectToAction("Index", new { Id = Id })); } turno++; //combina jogadores criandndo partida for (var i = 0; i < jogadores.Count; i++) { var jogador1 = jogadores[i]; var jogador2 = jogadores[++i]; var partida = new Partida() { JogadorId1 = jogador1.JogadorId, JogadorId2 = jogador2.JogadorId, Turno = turno, CampeonatoId = Id }; _partidaRepositorio.Adicionar(partida); } return(RedirectToAction("Index", new { Id = Id })); }