示例#1
0
        public async Task <IActionResult> AdicionarPedido(AdicionarPedidoViewModel pedidoViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.Select(x => x.Errors)));
            }

            var username = User.Identities.FirstOrDefault().Name;
            var user     = await _userService.GetByUserName(username);

            var cliente = user.Cliente;

            if (user.Cliente == null)
            {
                return(BadRequest("Usuário não é um Cliente"));
            }

            var pedido = new Pedido(peso: pedidoViewModel.Peso, DateTime.Now, EnumStatusPedido.AguardandoEntregador);

            pedido.InformarCliente(cliente);

            var motivoRejeicaoPedido = _pedidoService.IsPedidoValido(pedido);

            if (!String.IsNullOrEmpty(_pedidoService.IsPedidoValido(pedido)))
            {
                return(BadRequest($"Pedido rejeitado: {motivoRejeicaoPedido}"));
            }

            await _pedidoService.Insert(pedido);

            return(Ok(pedido));
        }
示例#2
0
        public async Task <IActionResult> AdicionarPedido(AdicionarPedidoViewModel pedidoViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.Select(x => x.Errors)));
            }

            var username = User.Identities.FirstOrDefault().Name;
            var user     = await _userService.GetByUserName(username);

            var cliente = user.Cliente;

            if (user.Cliente == null)
            {
                return(BadRequest("Usuário não é um Cliente"));
            }

            var pedido = new Pedido(peso: pedidoViewModel.Peso, DateTime.Now, EnumStatusPedido.AguardandoPagamento, pedidoViewModel.Valor);

            pedido.InformarCliente(cliente);

            var motivoRejeicaoPedido = _pedidoService.IsPedidoValido(pedido);

            if (!String.IsNullOrEmpty(_pedidoService.IsPedidoValido(pedido)))
            {
                return(BadRequest($"Pedido rejeitado: {motivoRejeicaoPedido}"));
            }

            bool pedidoInserido = await _pedidoService.Insert(pedido);

            if (!pedidoInserido)
            {
                return(BadRequest());
            }

            using (HttpClient client = new HttpClient())
            {
                var body = new AdicionarPagamentoCartaoViewModel()
                {
                    PedidoId            = pedido.Id,
                    Valor               = pedidoViewModel.Valor,
                    NumeroCartao        = pedidoViewModel.NumeroCartao,
                    BandeiraCartao      = pedidoViewModel.Bandeira,
                    MesVencimentoCartao = pedidoViewModel.MesVencimento,
                    AnoVencimentoCartao = pedidoViewModel.AnoVencimento
                };

                var response = await client.PostAsync("https://localhost/api/pagamento", new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"));

                if (!response.IsSuccessStatusCode)
                {
                    return(BadRequest());
                }
            }

            return(Ok(pedido));
        }
        public async Task Adicionar_NovoPedido_DeveRetornarComSucesso()
        {
            // Arrange
            var pedidoInfo = new AdicionarPedidoViewModel {
                Peso = 10
            };

            await _testsFixture.RealizarLoginApi();

            _testsFixture.Client.AtribuirToken(_testsFixture.UsuarioToken);

            // Act
            var postResponse = await _testsFixture.Client.PostAsync("api/pedido", new StringContent(JsonConvert.SerializeObject(pedidoInfo), Encoding.UTF8, "application/json"));

            // Assert
            postResponse.EnsureSuccessStatusCode();
        }
        public async Task <IActionResult> AdicionarPedido(AdicionarPedidoViewModel pedidoViewModel)
        {
            var user = await _usuarioQueries.ObterPorNome(pedidoViewModel.usuario);

            if (user == null)
            {
                return(BadRequest());
            }

            var cliente = await _clienteQueries.ObterPorId(user.ClienteId);

            var retorno = await _mediator.EnviarComando(new AdicionarPedidoCommand(cliente.Id, pedidoViewModel.Valor, pedidoViewModel.Peso, DateTime.Now, pedidoViewModel.Bandeira, pedidoViewModel.NumeroCartao, pedidoViewModel.MesVencimento, pedidoViewModel.AnoVencimento));

            if (!retorno)
            {
                return(BadRequest());
            }

            return(Ok());
        }