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); }
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(); } }