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" } }; }
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; } }