private void VersionarOrdem(Dictionary <int, byte> novaOrdem) { if (novaOrdem.Count > 0) { var etapas = new List <Etapa>(); var versoes = new List <EtapaVersao>(); Processo processo = new ManterEtapa().ObterPorID(novaOrdem.FirstOrDefault().Key).Processo; int?ultimaVersao = new ManterEtapaVersao().ObterVersaoAtualProcesso(processo); ultimaVersao++; using (var manter = new ManterEtapa()) { int ordem = 0; foreach (var etapa in novaOrdem) { var novaEtapa = manter.ObterPorID(etapa.Key); novaEtapa.Ordem = (byte)ordem++; etapas.Add(novaEtapa); versoes.Add(new EtapaVersao { Etapa = novaEtapa, Ordem = novaEtapa.Ordem, Versao = ultimaVersao.Value }); } manter.Salvar(etapas); } using (var manter = new ManterEtapaVersao()) { manter.Salvar(versoes); } } }
/// <summary> /// Precisa de refatoração. /// </summary> /// <param name="idEtapa"></param> /// <param name="permissoesNucleo"></param> private void AtualizarPermissoesNucleo(int idEtapa, IEnumerable <EtapaPermissaoNucleo> permissoesNucleo) { var remover = new List <EtapaPermissaoNucleo>(); var incluir = new List <EtapaPermissaoNucleo>(); var etapa = new ManterEtapa().ObterPorID(idEtapa); // Valida a remoção de permissões if (etapa.PermissoesNucleo != null) { if (permissoesNucleo.Any()) { foreach (var permissao in etapa.PermissoesNucleo) { if ( permissoesNucleo.Any( x => x.HierarquiaNucleoUsuario.ID == permissao.HierarquiaNucleoUsuario.ID && x.Etapa.ID == permissao.Etapa.ID)) { continue; } remover.Add(permissao); } } else { remover.AddRange(etapa.PermissoesNucleo); } } // Valida inclusão de permissões if (etapa.PermissoesNucleo?.Count > 0) { foreach (var permissao in permissoesNucleo) { if ( etapa.PermissoesNucleo.Any( p => p.HierarquiaNucleoUsuario.ID == permissao.HierarquiaNucleoUsuario.ID && p.Etapa.ID == permissao.Etapa.ID)) { continue; } incluir.Add(permissao); } } else { if (permissoesNucleo.Any()) { incluir.AddRange(permissoesNucleo); } } using (var manter = new ManterEtapaPermissaoNucleo()) { try { manter.ExcluirTodos(remover); } catch (Exception) { throw new AcademicoException( "Não foi possível excluir as permissões do núcleo, existem registros dependentes no banco"); } manter.Salvar(incluir); } }