Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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));
        }