public IActionResult GerarCampeonato(string json) { try { List <Filme> filmes = JsonConvert.DeserializeObject <List <Filme> >(json); List <Disputa> disputas = MontarDisputas(filmes); Disputa final = CalcularFinal(disputas); ResultadoCampeonato resultado = CalcularResultado(final); var result = new { Campeao = resultado.Campeao, Vicecampeao = resultado.Vicecampeao }; return(Ok(result)); } catch (Exception e) { var result = new { Campeao = new Filme(), Vicecampeao = new Filme() }; return(Ok(result)); } }
private ResultadoCampeonato CalcularResultado(Disputa disputa) { ResultadoCampeonato resultado = new ResultadoCampeonato(); if (disputa.FilmeA.Nota > disputa.FilmeB.Nota) { resultado.Campeao = disputa.FilmeA; resultado.Vicecampeao = disputa.FilmeB; } else if (disputa.FilmeA.Nota < disputa.FilmeB.Nota) { resultado.Campeao = disputa.FilmeB; resultado.Vicecampeao = disputa.FilmeA; } else { if (string.Compare(disputa.FilmeA.Titulo, disputa.FilmeB.Titulo) < 0) { resultado.Campeao = disputa.FilmeA; resultado.Vicecampeao = disputa.FilmeB; } else { resultado.Campeao = disputa.FilmeB; resultado.Vicecampeao = disputa.FilmeA; } } return(resultado); }
public ResultadoCampeonato Iniciar() { Filme[] paraSaberOSegundoLugar = new Filme[2]; if (this.filmes.Length == 0) { return(null); } do { this.filmes = fase.comecar(); if (this.filmes.Length == 2) { paraSaberOSegundoLugar = this.filmes; } } while (fase.proximaFase(this.filmes)); ResultadoCampeonato resultado = new ResultadoCampeonato(); Filme vencedor = fase.getGanhador(); Filme segundoFilme = null; if (vencedor == null) { return(null); } if (paraSaberOSegundoLugar[0].Equals(vencedor)) { segundoFilme = paraSaberOSegundoLugar[1]; } else { segundoFilme = paraSaberOSegundoLugar[0]; } if (vencedor == null) { return(null); } resultado.primeiroLugar = vencedor.Titulo; resultado.segundoLugar = segundoFilme.Titulo; return(resultado); }