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."));
        }
示例#2
0
        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));
        }