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