public async Task <IActionResult> ObterEnderecoEntregaUsuario([FromHeader] string authorization) { var usuario = await _tokenService.ExtractUsuarioToken(authorization); return(Ok(await _entregaRepository.EnderecoEntregaUsuario(usuario.Id))); }
public async Task <IActionResult> CriarVenda([FromBody] PagamentoViewModel pagamento, [FromHeader] string authorization) { var usuario = await _tokenService.ExtractUsuarioToken(authorization); if (usuario is null) { return(BadRequest("")); } try { _carrinhoCompras.ItensCarrinho = await _carrinhoCompras.TodosItemsCarrinho(); if (_carrinhoCompras.ItensCarrinho.Count.Equals(0)) { ModelState.AddModelError("", "Carro Vazio"); } if (ModelState.IsValid) { Parcelamento parcela = _servico.BuscarParcelamento(await _carrinhoCompras.TotalCompra(), pagamento.CartaoDeCredito.QuantidadeParcelas); Transaction transaction = _pagarMe.GerarPagCartaoCredito(pagamento.CartaoDeCredito, parcela, await _entregaRepository.EnderecoEntregaUsuario(usuario.Id), pagamento.FreteValor, _carrinhoCompras.ItensCarrinho, usuario); var pedido = await _servico.ProcessarPedido(_carrinhoCompras.ItensCarrinho, transaction); var venda = await _vendaRepository.CriarVenda((double)(await _carrinhoCompras.TotalCompra()), _carrinhoCompras.ItensCarrinho, pedido, usuario); await _movimentacaoRepository.MovimentarEstoqueVenda(venda, StatusMovimentacao.SAIDA, TipoMovimentacao.VENDA); _carrinhoCompras.LimparCarrinho(); } return(Ok(true)); } catch (PagarMeException ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex.Error)); } }