Exemple #1
0
        private async Task PublicarEventoAlteracaoDoCadastro(string clienteId, CadastroViewModel input)
        {
            var cadastroEvent
                = new CadastroEvent
                      (clienteId, input.Nome, input.Email, input.Telefone
                      , input.Endereco, input.Complemento, input.Bairro
                      , input.Municipio, input.UF, input.CEP);

            await _bus.Publish(cadastroEvent);

            _logger.LogInformation(eventId: EventId_Registry, message: "Evento de Cadastro foi enviado: {RegistryEvent}", args: cadastroEvent);
        }
Exemple #2
0
        public async Task <ActionResult <bool> > Checkout(string clienteId, [FromBody] CadastroViewModel input)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            CarrinhoCliente carrinho;

            try
            {
                carrinho = await _repository.GetCarrinhoAsync(clienteId);
            }
            catch (KeyNotFoundException)
            {
                return(NotFound());
            }

            var itens = carrinho.Itens.Select(i =>
                                              new CheckoutEventItem(i.Id, i.ProdutoId, i.ProdutoNome, i.PrecoUnitario, i.Quantidade)).ToList();

            var checkoutEvent
                = new CheckoutEvent
                      (clienteId, input.Nome, input.Email, input.Telefone
                      , input.Endereco, input.Complemento, input.Bairro
                      , input.Municipio, input.UF, input.CEP
                      , Guid.NewGuid()
                      , itens);

            // Assim que fazemos a finalização, envia um evento de integração para
            // API OrdemDeCompra converter o carrinho em pedido e continuar com
            // processo de criação de pedido
            await _bus.Publish(checkoutEvent);

            var cadastroEvent
                = new CadastroEvent
                      (clienteId, input.Nome, input.Email, input.Telefone
                      , input.Endereco, input.Complemento, input.Bairro
                      , input.Municipio, input.UF, input.CEP);

            await _bus.Publish(cadastroEvent);

            await _repository.DeleteCarrinhoAsync(clienteId);

            return(Accepted(true));
        }