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);
        }
Beispiel #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();
        }