public async Task <ServiceResult> InserirCartaoNoClienteAsync(InsertCartaoCreditoViewModel insertCartaoCreditoViewModel)
        {
            var serviceResult = _serviceResultFactory.Create();

            var clienteEntity = await _clienteReadRepository.GetByIdAsync(insertCartaoCreditoViewModel.ClienteId);

            var entity = _mapper.Map <CartaoCreditoEntity>(insertCartaoCreditoViewModel);

            clienteEntity.AdicionarCartao(entity);

            await _clienteWriteRepository.UpdateAsync(clienteEntity,
                                                      (context, entity) =>
            {
                var dbSet = context.Set <CartaoCreditoEntity>();
                foreach (var cartao in entity.Cartoes)
                {
                    var localEntity = dbSet.Local?.Where(w => w.Id.Equals(cartao.Id)).FirstOrDefault();
                    var inLocal     = localEntity != null;
                    if (inLocal)
                    {
                        context.Entry(localEntity).State = EntityState.Added;
                    }
                    else
                    {
                        context.Entry(cartao).State = EntityState.Modified;
                    }
                }
            });

            await CommitAsync(serviceResult);

            return(serviceResult);
        }
示例#2
0
        public async Task InserirCartaoNoClienteAsync(InsertCartaoCreditoViewModel insertCartaoCreditoViewModel)
        {
            var clienteEntity = await _clienteReadRepository.GetByIdAsync(insertCartaoCreditoViewModel.ClienteId);

            var entity = _mapper.Map <CartaoCreditoEntity>(insertCartaoCreditoViewModel);

            clienteEntity.AdicionarCartao(entity);

            await _clienteWriteRepository.UpdateAsync(clienteEntity);

            await CommitAsync();
        }
        public async Task Deve_Inserir_Cartao_No_Cliente()
        {
            //Given
            var clienteWriteRepository    = _serviceProvider.GetRequiredService <IClienteWriteRepository>();
            var clienteServiceApplication = _serviceProvider.GetRequiredService <IClienteServiceApplication>();
            var uow = _serviceProvider.GetRequiredService <IUnitOfWork>();

            var clienteEntity = new ClienteEntity(new NomeValueObject("Weslley", "Bruno"), new EmailValueObject("*****@*****.**"));

            var insertCartaoCreditoViewModel = new InsertCartaoCreditoViewModel();

            insertCartaoCreditoViewModel.ClienteId         = clienteEntity.Id;
            insertCartaoCreditoViewModel.NomeCliente       = "Weslley B. Carneiro";
            insertCartaoCreditoViewModel.Numero            = "12345687415241548";
            insertCartaoCreditoViewModel.CodigoVerificacao = "854";
            insertCartaoCreditoViewModel.Validade          = new DateTime(2030, 11, 30);

            //When
            await clienteWriteRepository.InsertAsync(clienteEntity);

            await uow.CommitAsync();

            await clienteServiceApplication.InserirCartaoNoClienteAsync(insertCartaoCreditoViewModel);

            //Then
            var clienteReadRepository = _serviceProvider.GetRequiredService <IClienteReadRepository>();
            var clientes = await clienteReadRepository.BuscarClientesComCartaoCreditoAsync().AsyncEnumerableToEnumerable();

            clientes.Should().HaveCount(1);

            var cartoes = clientes.FirstOrDefault().Cartoes;

            cartoes.Should().HaveCount(1);

            var cartao = cartoes.FirstOrDefault();

            cartao.ClienteId.Should().Be(insertCartaoCreditoViewModel.ClienteId);
            cartao.NomeCliente.Should().Be(insertCartaoCreditoViewModel.NomeCliente);
            cartao.Numero.Should().Be(insertCartaoCreditoViewModel.Numero);
            cartao.CodigoVerificacao.Should().Be(insertCartaoCreditoViewModel.CodigoVerificacao);
            cartao.Validade.Should().Be(insertCartaoCreditoViewModel.Validade);
            cartao.Valido.Should().BeTrue();
            cartao.Valid.Should().BeTrue();
        }
示例#4
0
        public async Task <IActionResult> InserirCartaoNoCliente([FromBody] InsertCartaoCreditoViewModel insertCartaoCreditoViewModel)
        {
            var response = await _clienteServiceApplication.InserirCartaoNoClienteAsync(insertCartaoCreditoViewModel);

            return(Ok(_responseFactory.Create(response)));
        }
示例#5
0
        public async Task <IActionResult> InserirCartaoNoCliente([FromBody] InsertCartaoCreditoViewModel insertCartaoCreditoViewModel)
        {
            await _clienteServiceApplication.InserirCartaoNoClienteAsync(insertCartaoCreditoViewModel);

            return(CreateResult());
        }