public async Task <ActionResult> Put(int id, [FromForm] AlterarOfertaViewModel oferta) { //Se o Id do objeto não existir //ele retorna o erro 400 if (oferta.Cidade == null && oferta.preco == 0 && oferta.Regiao == null && oferta.Quantidade == 0 && oferta.Descricao == null && oferta.Validade == null) { return(NoContent()); } var ofertaUsuario = await _repositorio.BuscarPorID(id); if (ofertaUsuario == null) { return(NotFound( new { Mensagem = "Oferta Não Encontrada", Erro = true } )); } var OfertaAlterada = VerificaAlteracaoOferta(ofertaUsuario, oferta); try { await _repositorio.Alterar(OfertaAlterada); return(Ok( new{ Mensagem = "Oferta alterada com sucesso", Erro = false } )); } catch (DbUpdateConcurrencyException) { //Verificamos se o objeto realmente existe no banco var Oferta_valido = await _repositorio.BuscarPorID(id); if (Oferta_valido == null) { return(NoContent()); } else { throw; } } }
private Oferta VerificaAlteracaoOferta(Oferta oferta, AlterarOfertaViewModel OfertaView) { if (OfertaView.Cidade != oferta.Cidade && OfertaView.Cidade != null && OfertaView != null) { oferta.Cidade = OfertaView.Cidade; } if (Convert.ToDecimal(OfertaView.preco) != oferta.Preco && OfertaView.preco != 0 && OfertaView != null) { oferta.Preco = Convert.ToDecimal(OfertaView.preco); } if (Convert.ToDateTime(OfertaView.Validade).Date != oferta.Validade && OfertaView.Validade != null && OfertaView != null) { oferta.Validade = Convert.ToDateTime(OfertaView.Validade).Date; } if (OfertaView.Quantidade != oferta.Quantidade && OfertaView.Quantidade != 0 && OfertaView != null) { oferta.Quantidade = OfertaView.Quantidade; } if (OfertaView.Regiao != oferta.Regiao && OfertaView.Regiao != null && OfertaView != null) { oferta.Regiao = OfertaView.Regiao; } if (OfertaView.Descricao != oferta.Descricao && OfertaView.Descricao != null && OfertaView != null) { oferta.Descricao = OfertaView.Descricao; } if (OfertaView.ProdutoId != oferta.ProdutoId && OfertaView.ProdutoId != 0 && OfertaView != null) { oferta.ProdutoId = OfertaView.ProdutoId; } return(oferta); }