public Batalha IniciarBatalha(int id) { var usuario = Utils.Utils.ObterUsuarioLogado(db); var batalha = db.Batalhas .Include(b => b.ExercitoPreto) .Include(b => b.ExercitoBranco) .Include(b => b.Tabuleiro) .Include(b => b.Turno) .Include(b => b.Turno.Usuario) .Where(b => (b.ExercitoBranco.Usuario.Email == usuario.Email || b.ExercitoPreto.Usuario.Email == usuario.Email) && (b.ExercitoBranco != null && b.ExercitoPreto != null) && b.Id == id).FirstOrDefault(); if (batalha == null) { var resp = new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent(String.Format("Não foi possível carregar a Batalha.")), ReasonPhrase = "Não foi possível carregar a batalha." }; throw new HttpResponseException(resp); } if (batalha.Tabuleiro == null) { batalha.Tabuleiro = new Tabuleiro { Altura = 8, Largura = 8 }; } if (batalha.Estado == Batalha.EstadoBatalhaEnum.NaoIniciado) { batalha.Tabuleiro.IniciarJogo(batalha.ExercitoBranco, batalha.ExercitoPreto); Random r = new Random(); batalha.Turno = r.Next(100) < 50 ? batalha.ExercitoPreto : batalha.ExercitoBranco; batalha.Estado = Batalha.EstadoBatalhaEnum.Iniciado; db.SaveChanges(); var firebaseTabuleiro = new FirebaseTabuleiro(batalha.Tabuleiro, batalha.TurnoId); firebase.Add(firebaseTabuleiro, firebaseTabuleiro.Id); } return(batalha); }