public IHttpActionResult PutPartido(int id, Partido partido) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != partido.Id) { return BadRequest(); } try { var partidoOrig = (from p in db.Partidos //obtengo los datos originales del partido que voy a modificar where p.Id == id select p) .Include(jp => jp.JugadoresDelPartido) .FirstOrDefault(); if (partidoOrig != null) { #region update de Estadisticas de Jugadores del Partido var jugadoresOriginales = partidoOrig.JugadoresDelPartido; //parte para eliminacion de jugadores que no jugaron el partido List<PartidoJugador> jugadoresEliminados = new List<PartidoJugador>(); foreach (var jo in jugadoresOriginales) // eliminacion de jugadores que ya no estan en el array { var jugOrig = (from jm in partido.JugadoresDelPartido // verifico si el jugador esta en el obj modificado where jm.Id == jo.Id select jm).FirstOrDefault(); if (jugOrig == null) // si no encontro la el jugador en el array modificado lo elimino del array { jugadoresEliminados.Add(jo); } } //parte para actualizacion de datos estadisticos de cada jugador foreach (var jo in jugadoresOriginales) { var jugMod = (from jm in partido.JugadoresDelPartido // verifico si la camaAdicional esta en el obj modificado where jm.Id == jo.Id select jm).FirstOrDefault(); if (jugMod != null) // si no encontro la cama adicional modifico los datos { jo.Goles = jugMod.Goles; jo.TarjetasAmarillas = jugMod.TarjetasAmarillas; jo.TarjetasRojas = jugMod.TarjetasRojas; } } foreach (var item in jugadoresEliminados) { db.EstadisticasJugadors.Remove(item); } #endregion //#region update de datos del Partido partidoOrig.Sede = partido.Sede; partidoOrig.Dia = partido.Dia; partidoOrig.Hora = partido.Hora; partidoOrig.ArbitroId = partido.ArbitroId; partidoOrig.GolesLocal = partido.GolesLocal; partidoOrig.GolesVisitante = partido.GolesVisitante; partidoOrig.Finalizado = partido.Finalizado; //#endregion } db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!PartidoExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public IHttpActionResult PostPartido(Partido partido) //fpaz: alta del partido y de los jugadores del partido { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { var fecha = db.Fechas.Find(partido.FechaId); // obtengo info de la fecha en la que voy a cargar el partido List<PartidoJugador> jugadoresPartido = new List<PartidoJugador>(); // obetengo el listado de jugadores del equipo local cargados para el torneo en particular var jugadoresLocales = (from j in db.EquiposJugadorTorneos where j.EquipoTorneo.ZonaTorneo.TorneoId == fecha.torneoId && j.EquipoTorneo.EquipoId == partido.EquipoLocalId select j).ToList(); foreach (var item in jugadoresLocales) { var pj = new PartidoJugador() { JugadorId = item.JugadorId, PartidoId = partido.Id, EquipoId = item.EquipoTorneo.EquipoId, Goles = 0, TarjetasAmarillas = 0, TarjetasRojas = 0 }; jugadoresPartido.Add(pj); // cargo al jugador como parte del partido } // obetengo el listado de jugadores del equipo visitantes cargados para el torneo en particular var jugadoresVisitantes = (from j in db.EquiposJugadorTorneos where j.EquipoTorneo.ZonaTorneo.TorneoId == fecha.torneoId && j.EquipoTorneo.EquipoId == partido.EquipoVisitanteId select j).ToList(); foreach (var item in jugadoresVisitantes) { var pj = new PartidoJugador() { JugadorId = item.JugadorId, PartidoId = partido.Id, EquipoId = item.EquipoTorneo.EquipoId, Goles = 0, TarjetasAmarillas = 0, TarjetasRojas = 0 }; jugadoresPartido.Add(pj); // cargo al jugador como parte del partido } partido.JugadoresDelPartido = jugadoresPartido; db.Partidos.Add(partido); //fpaz: carga del partido db.SaveChanges(); return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } }