public IHttpActionResult PostZonaTorneo(ZonaTorneo zonaTorneo) // funcion para agregar una nueva zona al torneo { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { db.ZonaTorneos.Add(zonaTorneo); db.SaveChanges(); return Ok(zonaTorneo); } catch (Exception ex) { return BadRequest(ex.Message); } }
public IHttpActionResult PutZonaTorneo(int id, ZonaTorneo zonaTorneo) //fpaz: actualizacion de los datos de una zona de un torneo { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != zonaTorneo.Id) { return BadRequest(); } try { var zonaOrig = (from z in db.ZonaTorneos //obtengo los datos originales de la zona que voy a modificar where z.Id == id select z) .Include(e => e.EquiposTorneo) .FirstOrDefault(); if (zonaOrig != null) { #region update de Equipos de la Zona que juegan el torneo var equiposOriginales = zonaOrig.EquiposTorneo; // parte para carga de nuevos equipos al torneo List<EquipoTorneo> equiposAgregados = new List<EquipoTorneo>(); foreach (var equipoAdd in zonaTorneo.EquiposTorneo) { var equipo = (from equipoOrig in equiposOriginales // verifico si el equipo esta en el obj modificado where equipoOrig.EquipoId == equipoAdd.EquipoId select equipoOrig).FirstOrDefault(); if (equipo == null) // si no encontro el equipo agrego al array para su carga { var eq = db.Equipoes.Find(equipoAdd.EquipoId); if (eq != null) { var et = new EquipoTorneo() { EquipoId = eq.Id, ZonaTorneoId = zonaOrig.Id }; equiposAgregados.Add(et); } } } //parte para eliminacion de equipos List<EquipoTorneo> equiposEliminados = new List<EquipoTorneo>(); foreach (var equipoOrig in equiposOriginales) // eliminacion de equipos que ya no estan en el array { var eo = (from e in zonaTorneo.EquiposTorneo // verifico si el equipo original esta en el obj modificado where equipoOrig.EquipoId == e.EquipoId select e).FirstOrDefault(); if (eo == null) // si no encontro el equipo la elimino del array { equiposEliminados.Add(equipoOrig); } } foreach (var item in equiposAgregados) { db.EquipoTorneos.Add(item); //torneoOrig.EquipoTorneos.Add(item); } foreach (var item in equiposEliminados) { db.EquipoTorneos.Remove(item); //torneoOrig.EquipoTorneos.Remove(item); } #endregion zonaOrig.Descripcion= zonaTorneo.Descripcion; zonaOrig.TorneoId = zonaTorneo.TorneoId; } db.SaveChanges(); return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } }