示例#1
0
        public bool InserirPerfil(Perfil perfil, List <PerfilPagina> listaPaginas)
        {
            var repo   = new RepositorioBase();
            var result = true;

            try
            {
                repo.BeginTransaction();
                perfil.Id = repo.SalvarSemTransacao(perfil);

                // Apaga todos os registros
                foreach (var entidade in listaPaginas)
                {
                    var ent = repo.ObterTodos <PerfilPagina>()
                              .Where(m => m.Perfil.Id == perfil.Id && m.Pagina.Id == entidade.Pagina.Id)
                              .FirstOrDefault();

                    if (ent != null)
                    {
                        repo.DeletarSemTransacao(ent);
                    }
                }

                //Insere somente os registros necessários
                foreach (var item in listaPaginas)
                {
                    if (!VerificarAcessoPagina(item))
                    {
                        item.Perfil = perfil;
                        if (repo.SalvarSemTransacao(item) == 0)
                        {
                            throw new Exception();
                        }
                    }
                }

                repo.CommitTransaction();
            }
            catch (Exception ex)
            {
                var msgErro = ex.Message;
                repo.RollBackTransaction();
                result = false;
            }

            return(result);
        }