public async Task <IHttpActionResult> ProcesarEstadoAve(List <Gpr_Estado_Ave_EdicionDTO> gpr_Estado_Aves) { //if (!ModelState.IsValid) //{ // return BadRequest(ModelState); //} int CantidadAves = 0; foreach (Gpr_Estado_Ave_EdicionDTO estado in gpr_Estado_Aves) { CantidadAves = CantidadAves + (estado.CantidadAves ?? 0); } Gpr_Temporada temporada = await db.Gpr_Temporada.FindAsync(gpr_Estado_Aves[0].IdGprTemporada);//db.Gpr_Temporada.Where(X => X.IdGprTemporada == gpr_Estado_Aves[0].IdGprTemporada).FirstOrDefault(); if (temporada.CantidadAves != CantidadAves) { return(Content(HttpStatusCode.BadRequest, "El total de aves debe ser igual a la cantidad de aves de la temporada.")); } List <Gpr_Estado_Ave> estadoAves = db.Gpr_Estado_Ave.Where(X => X.IdGprTemporada == temporada.IdGprTemporada && X.Estado == true).ToList(); foreach (Gpr_Estado_Ave estado in estadoAves) { Gpr_Estado_Ave gpr_Estado_Ave = db.Gpr_Estado_Ave.Find(estado.IdGprEstadoAve); gpr_Estado_Ave.FechaModificacion = DateTime.Now; gpr_Estado_Ave.UsuarioModificador = gpr_Estado_Aves[0].UsuarioCreador; gpr_Estado_Ave.Estado = false; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { throw; } } foreach (Gpr_Estado_Ave_EdicionDTO estado in gpr_Estado_Aves) { Mapper.Initialize(cfg => cfg.CreateMap <Gpr_Estado_Ave_EdicionDTO, Gpr_Estado_Ave>()); Gpr_Estado_Ave gpr_Estado_Ave = Mapper.Map <Gpr_Estado_Ave>(estado); gpr_Estado_Ave.FechaCreacion = DateTime.Now; gpr_Estado_Ave.Estado = true; db.Gpr_Estado_Ave.Add(gpr_Estado_Ave); await db.SaveChangesAsync(); } return(Content(HttpStatusCode.Accepted, "Completado.")); }
public async Task <IHttpActionResult> GuardarTemporada(Gpr_Temporada_InsercionDTO gpr_TemporadaI) { List <Gpr_Temporada> temporadasActivas = db.Gpr_Temporada.Where(X => X.IdGprGalpon == gpr_TemporadaI.IdGprGalpon && X.FechaFin == null).ToList(); Gpr_Galpon galpon = db.Gpr_Galpon.Where(X => X.IdGprGalpon == gpr_TemporadaI.IdGprGalpon).FirstOrDefault(); if (temporadasActivas.Count > 0) { return(Content(HttpStatusCode.BadRequest, "Sólo puede haber una temporada activa por galpón, ingrese una fecha de fin para la temporada actual.")); } if (galpon.CantidadAves < gpr_TemporadaI.CantidadAves) { return(Content(HttpStatusCode.BadRequest, "La cantidad de aves durante la temporada, no debe superar la capacidad del galpón.")); } Mapper.Initialize(cfg => cfg.CreateMap <Gpr_Temporada_InsercionDTO, Gpr_Temporada>()); Gpr_Temporada gpr_Temporada = Mapper.Map <Gpr_Temporada>(gpr_TemporadaI); gpr_Temporada.FechaCreacion = DateTime.Now; gpr_Temporada.Estado = true; gpr_Temporada.UsuarioCreador = gpr_TemporadaI.UsuarioCreador; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.Gpr_Temporada.Add(gpr_Temporada); await db.SaveChangesAsync(); Gpr_Estado_Ave estadoAve = new Gpr_Estado_Ave(); estadoAve.CantidadAves = gpr_TemporadaI.CantidadAves; estadoAve.Estado = true; estadoAve.FechaCreacion = DateTime.Now; estadoAve.IdGprTemporada = gpr_Temporada.IdGprTemporada; estadoAve.IdGprTipoEstadoAve = 1; db.Gpr_Estado_Ave.Add(estadoAve); await db.SaveChangesAsync(); return(CreatedAtRoute("DefaultApi", new { id = gpr_Temporada.IdGprTemporada }, gpr_Temporada)); //return Ok(GetGpr_Temporada(gpr_Temporada.IdGprTemporada)); }