public IActionResult Post([FromBody] ReservaRequestDto reservaDto)
        {
            var reserva = MapearReservaDtoParaReserva(reservaDto);

            var erros = reservaService.Validar(reserva);

            if (erros.Count > 0)
            {
                return(BadRequest(erros));
            }

            reservaRepository.SalvarReserva(reserva);

            contexto.SaveChanges();

            return(Ok(MapearReservaParaResponse(reserva)));
        }
        public IActionResult Put(int id, [FromBody] ReservaRequestDto reservaDto)
        {
            var reserva = MapearReservaDtoParaReserva(reservaDto);

            var erros = reservaService.Validar(reserva);

            if (erros.Count > 0)
            {
                return(BadRequest(erros));
            }

            reservaRepository.AtualizarReserva(id, reserva);

            contexto.SaveChanges();

            return(Ok("Dados atualizados"));
        }
        private Reserva MapearReservaDtoParaReserva(ReservaRequestDto reserva)
        {
            var trecho      = trechoRepository.ObterTrecho(reserva.IdTrecho);
            var classeDeVoo = classeDeVooRepository.ObterClasseDeVoo(reserva.IdClasseDeVoo);

            var usuario = usuarioRepository.ObterUsuarioPorId(reserva.IdUsuario);

            var reservaAtual = new Reserva(classeDeVoo, trecho, usuario);

            foreach (int x in reserva.IdOpcionais)
            {
                var opcional = opcionalRepository.ObterOpcional(x);
                if (opcional != null)
                {
                    reservaAtual.AdicionarOpcional(opcional);
                }
            }

            return(reservaAtual);
        }
        public IActionResult PostValorTotal([FromBody] ReservaRequestDto reservaDto)
        {
            var reserva = MapearReservaDtoParaReserva(reservaDto);

            return(Ok(MapearReservaParaResponse(reserva)));
        }