public FilmeViewModels gerarConfrontos(FilmeViewModels confrontoA, FilmeViewModels confrontoB) { if (confrontoA.AverageRating > confrontoB.AverageRating) { return(confrontoA); } else if (confrontoA.AverageRating.Equals(confrontoB.AverageRating)) { List <FilmeViewModels> lstfilmeViewModels = new List <FilmeViewModels>(); lstfilmeViewModels.Add(confrontoA); lstfilmeViewModels.Add(confrontoB); return(lstfilmeViewModels.OrderBy(e => e.PrimaryTitle).FirstOrDefault()); } else { return(confrontoB); } }
public ActionResult GerarCampeonato(List <string> lstIdFilmes) { var webapiAddress = _web; var uri = new Uri(webapiAddress); var _GetFilmeAll = Mapper.Map <IEnumerable <Filme>, IEnumerable <FilmeViewModels> >(new FilmeAPi().GetAll(uri).OrderBy(x => x.primaryTitle)); var _lstfilmes = new List <FilmeViewModels>(); FilmeViewModels filmeViewModels = new FilmeViewModels(); foreach (var item in lstIdFilmes) { var _filme = _GetFilmeAll.Where(x => x.Id == item).FirstOrDefault(); _lstfilmes.Add(new FilmeViewModels { Id = _filme.Id, PrimaryTitle = _filme.PrimaryTitle, Year = _filme.Year, AverageRating = _filme.AverageRating }); } #region agrupamentos var _grupoA = _lstfilmes.Take(4).ToList(); var _grupoB = _lstfilmes.Skip(4).Take(4).ToList(); var _grupoC = _lstfilmes.Skip(8).Take(4).ToList(); var _grupoD = _lstfilmes.Skip(12).Take(4).ToList(); var _grupoE = _lstfilmes.Skip(16).Take(4).ToList(); var _grupoF = _lstfilmes.Skip(20).Take(4).ToList(); var _grupoG = _lstfilmes.Skip(24).Take(4).ToList(); var _grupoH = _lstfilmes.Skip(28).Take(4).ToList(); #endregion #region FaseGrupos _grupoA = FaseGrupo(_grupoA.ToList()); _grupoB = FaseGrupo(_grupoB.ToList()); _grupoC = FaseGrupo(_grupoC.ToList()); _grupoD = FaseGrupo(_grupoD.ToList()); _grupoE = FaseGrupo(_grupoE.ToList()); _grupoF = FaseGrupo(_grupoF.ToList()); _grupoG = FaseGrupo(_grupoG.ToList()); _grupoH = FaseGrupo(_grupoH.ToList()); #endregion #region Fase de Eliminatórias //Os filmes disputam uma partida única contra um outro filme, não podendo haver empates.O //chaveamento é definido da seguinte maneira: Primeiro do Grupo A enfrenta o segundo do grupo B e o //primeiro do Grupo B enfrenta o segundo do grupo A. O mesmo para os grupos C - D, E - F e G – H. var ConfrontoAB = gerarConfrontoEliminatorias(_grupoA, _grupoB); var ConfrontoCD = gerarConfrontoEliminatorias(_grupoC, _grupoD); var ConfrontoEF = gerarConfrontoEliminatorias(_grupoE, _grupoF); var ConfrontGH = gerarConfrontoEliminatorias(_grupoG, _grupoH); #endregion #region Quarta de Finais var confrontoQuartasFinaisA = gerarConfrontos(ConfrontoAB.First(), ConfrontoAB.Last()); var confrontoQuartasFinaisB = gerarConfrontos(ConfrontoCD.First(), ConfrontoCD.Last()); var confrontoQuartasFinaisC = gerarConfrontos(ConfrontoEF.First(), ConfrontoEF.Last()); var confrontoQuartasFinaisD = gerarConfrontos(ConfrontGH.First(), ConfrontGH.Last()); #endregion #region SemiFinais var confrontoSemiFinaisA = gerarConfrontos(confrontoQuartasFinaisA, confrontoQuartasFinaisB); var confrontoSemiFinaisB = gerarConfrontos(confrontoQuartasFinaisC, confrontoQuartasFinaisD); #endregion #region Finais var Finais = gerarConfrontos(confrontoSemiFinaisA, confrontoSemiFinaisB); #endregion return(Json(filmeViewModels, JsonRequestBehavior.AllowGet)); }