예제 #1
0
        public void QuandoAdicionaIteracaoDeUsuarioOcorrePersistencia()
        {
            ProcessoDeCotacao processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFrete();
            IList <FornecedorParticipante> fornecedoresParticipantes = new List <FornecedorParticipante>();

            fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));
            fornecedoresParticipantes.Add(processoDeCotacao.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()));

            _atualizadorDeIteracaoDoUsuario.Adicionar(fornecedoresParticipantes);

            _processoCotacaoIteracoesUsuarioMock.Verify(x => x.Save(It.IsAny <ProcessoCotacaoIteracaoUsuario>()), Times.Exactly(fornecedoresParticipantes.Count));
            CommonVerifications.VerificaCommitDeTransacao(_unitOfWorkMock);
        }
예제 #2
0
        public void AtualizarFornecedores(ProcessoDeCotacaoFornecedoresAtualizarVm atualizacaoDosFornecedoresVm)
        {
            try
            {
                _unitOfWork.BeginTransaction();
                var            processoDeCotacao          = _processosDeCotacao.BuscaPorId(atualizacaoDosFornecedoresVm.IdProcessoCotacao).Single();
                string[]       codigoDosFonecedoresAtuais = processoDeCotacao.FornecedoresParticipantes.Select(x => x.Fornecedor.Codigo).ToArray();
                IList <string> codigoDosFornecedoresQueDevemSerRemovidos =
                    codigoDosFonecedoresAtuais.Except(atualizacaoDosFornecedoresVm.CodigoFornecedoresSelecionados).ToList();

                string[] codigoDosFornecedoresQueDevemSerAdicionados =
                    atualizacaoDosFornecedoresVm.CodigoFornecedoresSelecionados.Except(codigoDosFonecedoresAtuais)
                    .ToArray();
                IList <Fornecedor> fornecedoresParaAdicionar =
                    _fornecedores.BuscaListaPorCodigo(codigoDosFornecedoresQueDevemSerAdicionados).List();

                var fornecedoresParticipantesAdicionados = new List <FornecedorParticipante>();

                foreach (var fornecedor in fornecedoresParaAdicionar)
                {
                    fornecedoresParticipantesAdicionados.Add(processoDeCotacao.AdicionarFornecedor(fornecedor));
                }

                foreach (var codigoDoFornecedorQueDeveSerRemovido in codigoDosFornecedoresQueDevemSerRemovidos)
                {
                    processoDeCotacao.RemoverFornecedor(codigoDoFornecedorQueDeveSerRemovido);
                }

                _processosDeCotacao.Save(processoDeCotacao);

                _unitOfWork.Commit();

                _atualizadorDeIteracaoDoUsuario.Adicionar(fornecedoresParticipantesAdicionados);
            }

            catch (Exception)
            {
                _unitOfWork.RollBack();
                throw;
            }
        }