public async Task <ActionResult> Put(int id, [FromBody] AlterarReservaViewModel reserva) { ReservaRepository _reserva = new ReservaRepository(); var ReservaUsuario = await _reserva.BuscarPorID(id); if (ReservaUsuario == null) { return(NotFound(new { Mensagem = "Reserva não encontrada", Erro = true })); } OfertaRepository _oferta = new OfertaRepository(); var QtdOferta = await _oferta.BuscarPorID(ReservaUsuario.OfertaId.Value); if (QtdOferta != null) { QtdOferta.Quantidade = QtdOferta.Quantidade + ReservaUsuario.Quantidade; var RetornorOferta = await _oferta.Alterar(QtdOferta); } if (QtdOferta.Quantidade < reserva.Quantidade) { return(NotFound(new { Mensagem = "Atenção! Quantidade desejada maior que a ofertada", Erro = true })); } var ReservaAlterada = VerificaAlteracaoReserva(ReservaUsuario, reserva); QtdOferta.Quantidade = QtdOferta.Quantidade - ReservaAlterada.Quantidade; try { await _repositorio.Alterar(ReservaAlterada); await _oferta.Alterar(QtdOferta); return(Ok(new { Mensagem = "Reserva Alterada Com Sucesso", Erro = false })); } catch (DbUpdateConcurrencyException) { //Verificamos se o objeto realmente existe no banco var reserva_valido = await _repositorio.BuscarPorID(id); if (reserva_valido == null) { return(NotFound()); } else { throw; } } }
private Reserva VerificaAlteracaoReserva(Reserva reserva, AlterarReservaViewModel reservaView) { if (reserva.Quantidade != reservaView.Quantidade) { reserva.Quantidade = reservaView.Quantidade; } return(reserva); }