Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }