Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        /// <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);
            }
        }