Exemple #1
0
        public async Task <IActionResult> Post([FromBody] RealizarPedidoRequest request)
        {
            _log.AddPassos("_mediator.Send(RealizarPedidoRequest, CancellationToken.None);");
            var result = await _mediator.Send(request, default);

            return(Ok(_log.Passos));
        }
        public async Task <Pedido> RealizarPedido(RealizarPedidoRequest pedidoRequest, string userName)
        {
            // Encontra cliente pelo Usuário Logado (Token)
            var cliente = await _clienteRepository.GetByUserName(userName);

            if (cliente == null)
            {
                throw new Exception("Cliente não localizado");
            }
            // Cálcula a distância para o pedido
            var distancia = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(LATITUDE, LONGITUDE, cliente.Latitude, cliente.Longitude));
            var pagamento = new PagamentoCartao(
                pedidoRequest.Bandeira,
                pedidoRequest.Numero,
                pedidoRequest.Vencimento,
                pedidoRequest.CodigoSeguranca,
                pedidoRequest.Valor,
                StatusCartao.aguardandoAprovacao
                );
            // Salva o pedido na base
            var pedido = new Pedido
            {
                Cliente             = cliente,
                DataHora            = DateTime.Now,
                Peso                = pedidoRequest.Peso,
                DistanciaParaOrigem = distancia,
                StatusPedido        = StatusPedido.aguardandoAprovacao,
                PagamentoCartao     = pagamento
            };
            //await _pedidoRepository.AddPedido(pedido);
            await _pedidoRepository.AddPedido(pedido);

            // Envia o pedido para Pagamento
            var pagamentoREquest = new CmmPagRequest()
            {
                Bandeira        = pagamento.Bandeira,
                CodigoSeguranca = pagamento.CodigoSeguranca,
                CreatedAt       = DateTime.Now,
                Name            = cliente.Nome,
                NumeroCartao    = pagamento.Numero,
                PayId           = pagamento.Id,
                Status          = StatusCartao.aguardandoAprovacao,
                Valor           = pagamento.Valor,
                Vencimento      = pagamento.Vencimento
            };
            var result = await _payAPIHandler.PostRealizarPagamento(pagamentoREquest);

            if (!result.IsSuccessStatusCode)
            {
                throw new Exception("Falha ao realizar o pagamento");
            }
            return(pedido);
        }
Exemple #3
0
        public async Task <ActionResult> RealizarPedido([FromBody] RealizarPedidoRequest pedido)
        {
            try
            {
                var userName = _accessor.HttpContext.User.Identity.Name;
                var result   = await _pedidoService.RealizarPedido(pedido, userName);

                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #4
0
        public void RealizarPedidoHandler_Test()
        {
            var realizarPedidoHandler = new RealizarPedidoHandler(_mediatorMock.Object, _logMock.Object);

            var realizarPedidoRequest = new RealizarPedidoRequest()
            {
                Nome       = "Teste pedido",
                Quantidade = 1,
                Valor      = 100M
            };

            var result = realizarPedidoHandler.Handle(realizarPedidoRequest, default);

            _notifications.Should().ContainItemsAssignableTo <PedidoRealizadoEvent>();
        }
Exemple #5
0
        public async Task <IActionResult> AdicionarMesa([FromBody] RealizarPedidoRequest request, string FkMesa)
        {
            try
            {
                string usuarioClaims = _httpContextAccessor.HttpContext.User.FindFirst("Usuario").Value;
                AutenticarUsuarioResponse usuarioResponse = JsonConvert.DeserializeObject <AutenticarUsuarioResponse>(usuarioClaims);
                request.FkUsuario = usuarioResponse.Id;
                request.FkMesa    = Guid.Parse(FkMesa);
                var response = await _mediator.Send(request, CancellationToken.None);

                return(await ResponseAsync(response));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #6
0
        public async Task <Pedido> RealizarPedido(RealizarPedidoRequest pedidoRequest, string userName)
        {
            var cliente = await _clienteRepository.GetByUserName(userName);

            if (cliente == null)
            {
                throw new Exception("Cliente não localizado");
            }
            var distancia = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(LATITUDE, LONGITUDE, cliente.Latitude, cliente.Longitude));
            var pedido    = new Pedido
            {
                Id                  = Guid.NewGuid(),
                Cliente             = cliente,
                DataHora            = DateTime.Now,
                Peso                = pedidoRequest.Peso,
                DistanciaParaOrigem = distancia,
                StatusPedido        = StatusPedido.aguardandoEntrega
            };
            await _pedidoRepository.AddPedido(pedido);

            return(pedido);
        }