Пример #1
0
        public List <LutadorModel> FaseDeGrupos(List <LutadorModel> grupo)
        {
            var vencedores = new List <LutadorModel>();
            var grupoTemp  = grupo.ToList();

            foreach (LutadorModel lutador in grupo)
            {
                foreach (LutadorModel lutadorAdversario in grupoTemp)
                {
                    if (lutador.Id != lutadorAdversario.Id)
                    {
                        if (_lutaService.VerificarGanhador(lutador, lutadorAdversario))
                        {
                            lutador.Pontos++;
                        }
                        else
                        {
                            grupo.Where(x => x.Id == lutadorAdversario.Id).Select(x => x.Pontos++);
                        }
                    }
                }
                grupoTemp.Remove(lutador);
            }

            grupo.OrderByDescending(x => x.Pontos);

            while (vencedores.Count != 2)
            {
                vencedores.Add(grupo.First());
                grupo.Remove(grupo.First());
            }

            return(vencedores);
        }
Пример #2
0
        public List <LutadorModel> IniciarTorneio()
        {
            var lutadores = ListarLutadores();
            var grupos    = CriarGrupos(lutadores);

            var vencedoresGrupo1 = _fasesService.FaseDeGrupos(grupos.Item1);
            var vencedoresGrupo2 = _fasesService.FaseDeGrupos(grupos.Item2);
            var vencedoresGrupo3 = _fasesService.FaseDeGrupos(grupos.Item3);
            var vencedoresGrupo4 = _fasesService.FaseDeGrupos(grupos.Item4);

            var podio = new List <LutadorModel>();

            var semifinalistas = _fasesService.QuartasDeFinal(vencedoresGrupo1, vencedoresGrupo2, vencedoresGrupo3, vencedoresGrupo4);

            var finalistas = _fasesService.Semifinais(semifinalistas);

            var final = _lutaService.VerificarGanhador(finalistas.Item1.First(), finalistas.Item1.Last());

            var terceiroLugar = _lutaService.VerificarGanhador(finalistas.Item2.First(), finalistas.Item2.Last());

            if (final)
            {
                podio.Add(finalistas.Item1.First());
                podio.Add(finalistas.Item1.Last());
            }
            else
            {
                podio.Add(finalistas.Item1.Last());
                podio.Add(finalistas.Item1.First());
            }

            if (terceiroLugar)
            {
                podio.Add(finalistas.Item2.First());
            }
            else
            {
                podio.Add(finalistas.Item2.Last());
            }
            return(podio);
        }