Exemplo n.º 1
0
        public IList <PalpiteReturnViewModel> ListarPorJogo(int mandante, int visitante)
        {
            var timeMandante  = (Equipe.Selecao)mandante;
            var timeVisitante = (Equipe.Selecao)visitante;
            var palpites      = _servicos.ListarPorJogo(timeMandante, timeVisitante);

            return(_mapper.Map <IList <PalpiteReturnViewModel> >(palpites));
        }
        public List <RankingViewModel> Calcular()
        {
            var resultados = _resultadoServicosApp.Listar();

            if (resultados == null)
            {
                return(null);
            }

            var placar = new Dictionary <string, int>();

            foreach (var resultado in resultados)
            {
                if (resultado.Result.GoalsHomeTeam == null || resultado.Result.GoalsAwayTeam == null)
                {
                    continue;
                }

                // 0 = MANDANTE // 1 = VISITANTE // 2 = EMPATE
                var resultadoJogo = resultado.Result.GoalsHomeTeam > resultado.Result.GoalsAwayTeam ? 0 : resultado.Result.GoalsHomeTeam < resultado.Result.GoalsAwayTeam ? 1 : 2;

                var mandanteCodigo  = Helpers.GetIdByHref(resultado.Links.HomeTeam.Href);
                var visitanteCodigo = Helpers.GetIdByHref(resultado.Links.AwayTeam.Href);

                var palpitesJogo = _palpiteServicos.ListarPorJogo((Equipe.Selecao)Convert.ToInt32(mandanteCodigo), (Equipe.Selecao)Convert.ToInt32(visitanteCodigo));
                foreach (var palpite in palpitesJogo)
                {
                    var pontosPalpite = 0;

                    if (palpite.MandantePlacar == resultado.Result.GoalsHomeTeam && palpite.VisitantePlacar == resultado.Result.GoalsAwayTeam)
                    {
                        pontosPalpite = 10;
                    }
                    else if (palpite.MandanteVitoria == true && resultadoJogo == 0 || palpite.VisitanteVitoria == true && resultadoJogo == 1 ||
                             palpite.MandanteVitoria == false && palpite.VisitanteVitoria == false && resultadoJogo == 2)
                    {
                        pontosPalpite = 3;
                    }

                    if (!placar.ContainsKey(palpite.Email))
                    {
                        placar.Add(palpite.Email, pontosPalpite);
                    }
                    else
                    {
                        placar[palpite.Email] += pontosPalpite;
                    }
                }
            }

            var rankingGeral = new List <RankingViewModel>();

            foreach (var p in placar)
            {
                var palpitesUsuario   = _palpiteServicos.ListarPorUsuario(p.Key);
                var palpitesUsuarioVm = _mapper.Map <IList <PalpiteReturnViewModel> >(palpitesUsuario);

                var usuario   = _usuarioServicos.GetByEmail(p.Key);
                var usuarioVm = _mapper.Map <UsuarioReturnViewModel>(usuario);

                var ranking = new RankingViewModel
                {
                    Usuario  = usuarioVm,
                    Palpites = palpitesUsuarioVm,
                    Pontos   = p.Value
                };

                rankingGeral.Add(ranking);
            }

            return(rankingGeral.OrderByDescending(x => x.Pontos).ThenBy(x => x.Usuario.Apelido).ToList());
        }