public async Task <IActionResult> Put(int id, [FromBody] DoacaoSopaDTO dto) { if (id != dto.Id) { return(new BadRequestResult()); } if (ModelState.IsValid) { //corrige fuso horario do js dto.DataDaDoacao = dto.DataDaDoacao.AddHours(-dto.DataDaDoacao.Hour); DoacaoSopa dd = _context.DoacaoSopa.Single(q => q.Id == id); Doador doador = _context.Doador.SingleOrDefault(q => q.CodDoador == dto.Doador.Id); if (doador == null) { ModelState.AddModelError("Doador", "Doador inválido"); return(new BadRequestObjectResult(ModelState)); } Item item = _context.Item.SingleOrDefault(q => q.Id == dto.Item.Id && q.Destino == "SOPA"); if (item == null) { ModelState.AddModelError("Item", "Item inválido"); return(new BadRequestObjectResult(ModelState)); } double diferencaQuantidade = dd.Quantidade - dto.Quantidade; dd.Doador = doador; dd.Data = dto.DataDaDoacao; dd.Descricao = dto.Descricao; dd.Item = item; dd.Quantidade = dto.Quantidade; try { _context.SaveChanges(); Usuario usuario = await _userManager.GetUserAsync(HttpContext.User); //atualiza o estoque if (diferencaQuantidade > 0) { _estoqueManager.DarSaida(usuario, item, diferencaQuantidade); } else if (diferencaQuantidade < 0) { _estoqueManager.DarEntrada(usuario, item, -diferencaQuantidade); } } catch { return(new BadRequestObjectResult(ModelState)); } return(new ObjectResult(dto)); } else { return(new BadRequestObjectResult(ModelState)); } }
public async Task <IActionResult> Put(int id, [FromBody] DespesaDTO dto) { if (id != dto.Id) { return(new StatusCodeResult(StatusCodes.Status400BadRequest)); } if (ModelState.IsValid) { //corrige fuso horario do js dto.DataDaCompra = dto.DataDaCompra.AddHours(-dto.DataDaCompra.Hour); Usuario user = await _userManager.GetUserAsync(HttpContext.User); Despesa despesa = _context.Despesa.SingleOrDefault(q => q.Id == id); if (despesa == null) { return(new BadRequestResult()); } Item item = _context.Item.SingleOrDefault(q => q.Id == dto.Item.Id); if (item == null) { ModelState.AddModelError("Item", "Item inválido"); return(new BadRequestObjectResult(ModelState)); } double diferencaQuantidade = despesa.Quantidade - dto.Quantidade; despesa.Item = item; despesa.Quantidade = dto.Quantidade; despesa.ValorUnitario = dto.ValorUnitario; despesa.Usuario = user; if (despesa.GetType() == typeof(DespesaAssociacao)) { DespesaAssociacao desp = (DespesaAssociacao)despesa; //nenhum outro campo para atualizar try { _context.SaveChanges(); return(new ObjectResult(dto)); } catch { return(new BadRequestObjectResult(ModelState)); } } else if (despesa.GetType() == typeof(DespesaFavorecido)) { DespesaFavorecido desp = (DespesaFavorecido)despesa; try { Favorecido f = _context.Favorecido.Single(q => q.CodFavorecido == dto.Favorecido.Id); _context.SaveChanges(); return(new ObjectResult(dto)); } catch { ModelState.AddModelError("Favorecido", "Favorecido incorreto"); return(new BadRequestObjectResult(ModelState)); } } else if (despesa.GetType() == typeof(DespesaSopa)) { DespesaSopa desp = (DespesaSopa)despesa; //nenhum outro campo para atualizar try { _context.SaveChanges(); //atualiza o estoque if (diferencaQuantidade > 0) { _estoqueManager.DarSaida(user, item, diferencaQuantidade); } else if (diferencaQuantidade < 0) { _estoqueManager.DarEntrada(user, item, -diferencaQuantidade); } return(new ObjectResult(dto)); } catch { return(new BadRequestObjectResult(ModelState)); } } return(new ObjectResult(dto)); } else { return(new BadRequestObjectResult(ModelState)); } }
public async Task <IActionResult> Post([FromBody] ResultadoSopaDTO dto) { if (ModelState.IsValid) { //corrige fuso horario do js dto.Data = dto.Data.AddHours(-dto.Data.Hour); if (dto.Itens.Count == 0) { ModelState.AddModelError("Itens", "O modelo precisa ter itens"); return(new BadRequestObjectResult(ModelState)); } ModeloDeReceita mr = _context.ModeloDeReceita.SingleOrDefault(q => q.Id == dto.ModeloDeReceita.Id); if (mr == null) { ModelState.AddModelError("ModeloDeReceita", "Modelo de receita inexitente"); return(new BadRequestObjectResult(ModelState)); } ResultadoSopa resultadoSopa = new ResultadoSopa() { ModeloDeReceita = mr, Descricao = dto.Descricao, Data = dto.Data, LitrosProduzidos = dto.LitrosProduzidos, Itens = new List <ResultadoSopaItem>() }; 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)); } Dictionary <Item, double> dicEstoque = new Dictionary <Item, double>();//para atualizar o estoque foreach (var i in itensNovos) { resultadoSopa.Itens.Add(new ResultadoSopaItem { Item = i.item, Quantidade = i.quantidade }); dicEstoque.Add(i.item, i.quantidade); } try { _context.ResultadoSopa.Add(resultadoSopa); _context.SaveChanges(); Usuario usuario = await _userManager.GetUserAsync(HttpContext.User); //atualiza o estoque _estoqueManager.DarSaida(usuario, dicEstoque); dto.Id = resultadoSopa.Id; return(new ObjectResult(dto)); } catch { return(new BadRequestObjectResult(ModelState)); } } return(new BadRequestObjectResult(ModelState)); }