Exemplo n.º 1
0
        public IHttpActionResult Post(LiveMatch liveMatch)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            Task.Factory.StartNew(() =>
            {
                QuinielasUpdater.Instance.UpdateQuiniela(liveMatch);
                LiveQuinielaCaster.Instance.CastApuestas(liveMatch.PartidoId, NombreAnotador: (liveMatch.GolesLocal > liveMatch.GolesVisitante) ? liveMatch.NombreLocal : liveMatch.NombreVisitante);
            });
            return CreatedAtRoute("DefaultApi", new { id = liveMatch.PartidoId }, liveMatch);
        }
Exemplo n.º 2
0
        public void UpdateQuiniela(LiveMatch liveMatch)
        {
            using (var db = new QuinielaDbContext())
            {
                var partido = db.Partidos.Find(liveMatch.PartidoId);
                partido.GolesLocal += liveMatch.GolesLocal;
                partido.GolesVisitante += liveMatch.GolesVisitante;

                if (partido.GolesLocal == partido.GolesVisitante)
                    partido.Resultado = Resultado.Empate;
                else if (partido.GolesLocal > partido.GolesVisitante)
                    partido.Resultado = Resultado.Local;
                else partido.Resultado = Resultado.Visitante;

                foreach (var apuesta in partido.Apuestas)
                {
                    switch (apuesta.Resultado)
                    {
                        case Resultado.Empate:
                            switch (partido.Resultado)
                            {
                                case Resultado.Empate:
                                    apuesta.Ganada = true;
                                    break;
                                default:
                                    apuesta.Ganada = false;
                                    break;
                            }
                            break;
                        case Resultado.Local:
                            switch (partido.Resultado)
                            {
                                case Resultado.Local:
                                    apuesta.Ganada = true;
                                    break;
                                default:
                                    apuesta.Ganada = false;
                                    break;
                            }
                            break;
                        case Resultado.Visitante:
                            switch (partido.Resultado)
                            {
                                case Resultado.Visitante:
                                    apuesta.Ganada = true;
                                    break;
                                default:
                                    apuesta.Ganada = false;
                                    break;
                            }
                            break;
                    }
                }

                var quiniela = db.Quinielas.Find(partido.QuinielaId);

                foreach (var quinielaUsuario in quiniela.QuinielasUsuarios)
                {
                    quinielaUsuario.Aciertos = 0;
                    foreach (var match in quiniela.Partidos)
                    {
                        if (match.Apuestas.First(a => a.UsuarioId == quinielaUsuario.UsuarioId).Ganada)
                            quinielaUsuario.Aciertos++;
                    }
                }

                var max = quiniela.QuinielasUsuarios.Max(qu => qu.Aciertos);

                foreach (var quinielaUsuario in quiniela.QuinielasUsuarios)
                {
                    if (quinielaUsuario.Aciertos == max)
                        quinielaUsuario.Ganada = true;
                    else
                        quinielaUsuario.Ganada = false;
                }

                db.SaveChanges();
            }
        }