public async Task <ActionResult <Reserva> > Get(int id)
        {
            var reserva = await _repositorio.BuscarPorID(id);

            if (reserva == null)
            {
                return(NotFound(new { mensagem = "Id de reserva não encontrado", Erro = true }));
            }
            return(reserva);
        }
        public async Task <ActionResult <Reserva> > Get(int id)
        {
            var reserva = await _repositorio.BuscarPorID(id);

            if (reserva == null)
            {
                return(NotFound());
            }
            return(reserva);
        }
        public async Task <ActionResult <Reserva> > Get(int id)
        {
            //FindAsync = procurar algo especifico no banco
            //await espera acontecer
            var reserva = await _repositorio.BuscarPorID(id);

            if (reserva == null)
            {
                return(NotFound());
            }

            return(reserva);
        }
        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;
                }
            }
        }