public JsonResult AtualizarFornecedores(ProcessoDeCotacaoFornecedoresAtualizarVm atualizacaoDosFornecedoresVm)
 {
     try
     {
         _processoDeCotacaoFornecedoresService.AtualizarFornecedores(atualizacaoDosFornecedoresVm);
         return(Json(new { Sucesso = true, Mensagem = "Atualização dos Fornecedores do Processo de Cotação realizada com sucesso." }));
     }
     catch (Exception ex)
     {
         return(Json(new { Sucesso = false, Mensagem = "Ocorreu um erro ao atualizar os fornecedores do Processo de Cotação. Detalhes: " + ex.Message }));
     }
 }
        public ProcessoDeCotacaoFornecedoresServiceTests()
        {
            _unitOfWorkMock         = CommonMocks.DefaultUnitOfWorkMock();
            _processosDeCotacaoMock = new Mock <IProcessosDeCotacao>(MockBehavior.Strict);
            _processosDeCotacaoMock.Setup(x => x.Save(It.IsAny <ProcessoDeCotacao>()))
            .Callback(
                (ProcessoDeCotacao processoDeCotacao) =>
            {
                Assert.IsNotNull(processoDeCotacao);
                foreach (var fornecedorParticipante in processoDeCotacao.FornecedoresParticipantes)
                {
                    Assert.IsNotNull(fornecedorParticipante);
                }
            });

            ProcessoDeCotacaoDeMaterial processoDeCotacaoDeMaterial = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado();

            processoDeCotacaoDeMaterial.AdicionarFornecedor(new Fornecedor("FORNEC0001", "FORNECEDOR 0001", "*****@*****.**", "", "", "", false));
            processoDeCotacaoDeMaterial.AdicionarFornecedor(new Fornecedor("FORNEC0002", "FORNECEDOR 0002", "*****@*****.**", "", "", "", false));
            _processosDeCotacaoMock.Setup(x => x.BuscaPorId(It.IsAny <int>()))
            .Returns(_processosDeCotacaoMock.Object);
            _processosDeCotacaoMock.Setup(x => x.Single())
            .Returns(processoDeCotacaoDeMaterial);

            _fornecedoresMock = new Mock <IFornecedores>(MockBehavior.Strict);
            _fornecedoresMock.Setup(x => x.BuscaListaPorCodigo(It.IsAny <string[]>()))
            .Returns(_fornecedoresMock.Object);
            _fornecedoresMock.Setup(x => x.List())
            .Returns(new List <Fornecedor>()
            {
                new Fornecedor("FORNEC0003", "FORNECEDOR 0003", "*****@*****.**", "", "", "", false)
            });

            _atualizadorDeIteracaoDoUsuarioMock = new Mock <IAtualizadorDeIteracaoDoUsuario>(MockBehavior.Strict);
            _atualizadorDeIteracaoDoUsuarioMock.Setup(x => x.Adicionar(It.IsAny <IList <FornecedorParticipante> >()))
            .Callback((IList <FornecedorParticipante> fp) => CommonVerifications.VerificaCommitDeTransacao(_unitOfWorkMock));

            _processoDeCotacaoFornecedoresService = new ProcessoDeCotacaoFornecedoresService(_unitOfWorkMock.Object, _processosDeCotacaoMock.Object,
                                                                                             _fornecedoresMock.Object, _atualizadorDeIteracaoDoUsuarioMock.Object);
            _atualizacaoDosFornecedoresVm = new ProcessoDeCotacaoFornecedoresAtualizarVm()
            {
                IdProcessoCotacao = 1,
                CodigoFornecedoresSelecionados = new[] { "FORNEC0001", "FORNEC0003" }
            };
        }
示例#3
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;
            }
        }