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