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); }
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(); }
public async Task <IActionResult> InserirCartaoNoCliente([FromBody] InsertCartaoCreditoViewModel insertCartaoCreditoViewModel) { var response = await _clienteServiceApplication.InserirCartaoNoClienteAsync(insertCartaoCreditoViewModel); return(Ok(_responseFactory.Create(response))); }
public async Task <IActionResult> InserirCartaoNoCliente([FromBody] InsertCartaoCreditoViewModel insertCartaoCreditoViewModel) { await _clienteServiceApplication.InserirCartaoNoClienteAsync(insertCartaoCreditoViewModel); return(CreateResult()); }