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 IActionResult Get(int id) { Despesa despesa = _context.Despesa .Include(q => q.Item) .Include(q => q.Usuario) .SingleOrDefault(q => q.Id == id); if (despesa == null) { return(new NotFoundResult()); } DespesaDTO dto = new DespesaDTO(); if (despesa.GetType() == typeof(DespesaAssociacao)) { dto.Id = despesa.Id; dto.Descricao = despesa.Descricao; dto.DataDaCompra = despesa.DataDaCompra; dto.ValorUnitario = despesa.ValorUnitario; dto.Quantidade = despesa.Quantidade; dto.Tipo = despesa.Tipo; dto.Item = new ItemDTOR() { Id = despesa.Item.Id, Nome = despesa.Item.Nome, UnidadeDeMedida = despesa.Item.UnidadeDeMedida }; dto.Usuario = new UsuarioDTOR() { Id = despesa.Usuario.Id, Nome = despesa.Usuario.Nome, Email = despesa.Usuario.Email }; } else if (despesa.GetType() == typeof(DespesaSopa)) { dto.Id = despesa.Id; dto.Descricao = despesa.Descricao; dto.DataDaCompra = despesa.DataDaCompra; dto.ValorUnitario = despesa.ValorUnitario; dto.Quantidade = despesa.Quantidade; dto.Tipo = despesa.Tipo; dto.Item = new ItemDTOR() { Id = despesa.Item.Id, Nome = despesa.Item.Nome, UnidadeDeMedida = despesa.Item.UnidadeDeMedida }; dto.Usuario = new UsuarioDTOR() { Id = despesa.Usuario.Id, Nome = despesa.Usuario.Nome, Email = despesa.Usuario.Email }; } else if (despesa.GetType() == typeof(DespesaFavorecido)) { dto.Id = despesa.Id; dto.Descricao = despesa.Descricao; dto.DataDaCompra = despesa.DataDaCompra; dto.ValorUnitario = despesa.ValorUnitario; dto.Quantidade = despesa.Quantidade; dto.Tipo = despesa.Tipo; dto.Item = new ItemDTOR() { Id = despesa.Item.Id, Nome = despesa.Item.Nome, UnidadeDeMedida = despesa.Item.UnidadeDeMedida }; dto.Usuario = new UsuarioDTOR() { Id = despesa.Usuario.Id, Nome = despesa.Usuario.Nome, Email = despesa.Usuario.Email }; _context.Favorecido.Where(q => q.CodFavorecido == ((DespesaFavorecido)despesa).CodFavorecido).Load(); dto.Favorecido = new FavorecidoDTOR() { Id = ((DespesaFavorecido)despesa).Favorecido.CodFavorecido, Apelido = ((DespesaFavorecido)despesa).Favorecido.Apelido, Cpf = ((DespesaFavorecido)despesa).Favorecido.Cpf, Nome = ((DespesaFavorecido)despesa).Favorecido.Nome }; } this.Response.Headers.Add("totalItems", "1"); return(new ObjectResult(dto)); }