コード例 #1
0
        public IActionResult Get(int id)
        {
            ModeloDeReceita q = _context.ModeloDeReceita.Include(i => i.Itens).ThenInclude(i => i.Item).SingleOrDefault(i => i.Id == id);

            if (q == null)
            {
                return(new NotFoundResult());
            }

            ModeloDeReceitaDTO dto = new ModeloDeReceitaDTO()
            {
                Id        = q.Id,
                Nome      = q.Nome,
                Descricao = q.Descricao,
                Itens     = q.Itens.Select(i => new ModeloDeReceitaItemDTO()
                {
                    Item = new ItemDTOR()
                    {
                        Id              = i.Item.Id,
                        Nome            = i.Item.Nome,
                        UnidadeDeMedida = i.Item.UnidadeDeMedida
                    },
                    Quantidade = i.Quantidade
                }).ToList()
            };

            return(new ObjectResult(dto));
        }
コード例 #2
0
        public IActionResult Post([FromBody] ModeloDeReceitaDTO dto)
        {
            if (ModelState.IsValid)
            {
                if (dto.Itens.Count == 0)
                {
                    ModelState.AddModelError("Itens", "O modelo precisa ter itens");
                    return(new BadRequestObjectResult(ModelState));
                }

                ModeloDeReceita modelo = new ModeloDeReceita()
                {
                    Nome      = dto.Nome,
                    Descricao = dto.Descricao,
                    Itens     = new List <ModeloDeReceitaItem>()
                };


                var itensNovos = from i in _context.Item
                                 join d in dto.Itens on i.Id equals d.Item.Id
                                 where i.Destino == "SOPA"
                                 select new
                {
                    item       = i,
                    quantidade = d.Quantidade
                };
                if (itensNovos.Count() != dto.Itens.Count)
                {
                    ModelState.AddModelError("Itens", "A lista de itens contém itens inválidos");
                    return(new BadRequestObjectResult(ModelState));
                }

                foreach (var i in itensNovos)
                {
                    modelo.Itens.Add(new ModeloDeReceitaItem
                    {
                        Item       = i.item,
                        Quantidade = i.quantidade
                    });
                }



                try
                {
                    _context.ModeloDeReceita.Add(modelo);

                    _context.SaveChanges();
                    dto.Id = modelo.Id;
                    return(new ObjectResult(dto));
                }
                catch {
                    return(new BadRequestObjectResult(ModelState));
                }
            }

            return(new BadRequestObjectResult(ModelState));
        }
コード例 #3
0
        public IActionResult Put(int id, [FromBody] ModeloDeReceitaDTO dto)
        {
            if (id != dto.Id)
            {
                return(new BadRequestResult());
            }
            if (ModelState.IsValid)
            {
                if (dto.Itens.Count == 0)
                {
                    ModelState.AddModelError("Itens", "O modelo precisa ter itens");
                    return(new BadRequestObjectResult(ModelState));
                }

                ModeloDeReceita modelo = _context.ModeloDeReceita.Include(q => q.Itens).ThenInclude(q => q.Item).SingleOrDefault(q => q.Id == id);

                modelo.Nome      = dto.Nome;
                modelo.Descricao = dto.Descricao;

                var itensNovos = from i in _context.Item
                                 join d in dto.Itens on i.Id equals d.Item.Id
                                 where i.Destino == "SOPA"
                                 select new
                {
                    item       = i,
                    quantidade = d.Quantidade
                };
                if (itensNovos.Count() != dto.Itens.Count)
                {
                    ModelState.AddModelError("Itens", "A lista de itens contém itens inválidos");
                    return(new BadRequestObjectResult(ModelState));
                }
                List <ModeloDeReceitaItem> itensCorretos = new List <ModeloDeReceitaItem>();

                foreach (var i in itensNovos)
                {
                    var existente = modelo.Itens.SingleOrDefault(q => q.IdItem == i.item.Id);
                    if (existente == null)
                    {
                        ModeloDeReceitaItem novoItem = new ModeloDeReceitaItem
                        {
                            Item       = i.item,
                            Quantidade = i.quantidade
                        };

                        modelo.Itens.Add(novoItem);
                        itensCorretos.Add(novoItem);
                    }
                    else
                    {
                        existente.Quantidade = i.quantidade;
                        itensCorretos.Add(existente);
                    }
                }

                //remove os incorretos
                foreach (var item in modelo.Itens.Except(itensCorretos).ToArray())
                {
                    modelo.Itens.Remove(item);
                }



                try
                {
                    _context.SaveChanges();
                }
                catch
                {
                    return(new BadRequestObjectResult(ModelState));
                }

                return(new ObjectResult(dto));
            }
            else
            {
                return(new BadRequestObjectResult(ModelState));
            }
        }