예제 #1
0
        public ActionResult Cadastrar([Bind(Include = "CargoId, Menus")] PermissaoViewModel viewModel)
        {
            var cargo = _cargoRepositorio.ObterCargoPorId(viewModel.CargoId);

            if (cargo == null)
            {
                RegistroNaoEncontrado();
            }

            PermissaoAcesso permissaoAcesso = new PermissaoAcesso();

            foreach (var menu in viewModel.Menus)
            {
                var campos = viewModel.Menus
                             .Where(m => m.Id == menu.Id)
                             .SelectMany(c => c.Campos);

                permissaoAcesso.IncluirPermissaoAcesso(new PermissaoAcesso
                {
                    MenuId    = menu.Id,
                    CargoId   = viewModel.CargoId,
                    Acessar   = menu.Acessar,
                    Cadastrar = menu.Cadastrar,
                    Atualizar = menu.Atualizar,
                    Excluir   = menu.Excluir,
                    Logs      = menu.Logs,
                    Campos    = campos
                });
            }

            if (Validar(permissaoAcesso))
            {
                _controleAcessoRepositorio.AplicarPermissoes(viewModel.CargoId, permissaoAcesso.PermissoesAcesso);

                GravarLogAuditoria(TipoLogAuditoria.INSERT, permissaoAcesso);

                TempData["Sucesso"] = true;
            }

            PopularCargos(viewModel);
            PopularPermissoes(viewModel);

            return(View(viewModel));
        }
예제 #2
0
        public ActionResult Cadastrar([Bind(Include = "Descricao, Vendedor")] CargosViewModel viewModel)
        {
            var cargo = new Cargo(viewModel.Descricao, viewModel.Vendedor);

            if (Validar(cargo))
            {
                cargo.Id = _cargosRepositorio.Cadastrar(cargo);

                if (!_controleAcessoRepositorio.ExistePermissaoNoCargo(cargo.Id))
                {
                    var menus = _controleAcessoRepositorio.ObterMenus().ToList();

                    PermissaoAcesso permissaoAcesso = new PermissaoAcesso();

                    foreach (var menu in menus)
                    {
                        var campos = menus
                                     .Where(m => m.Id == menu.Id)
                                     .SelectMany(c => c.Campos);

                        permissaoAcesso.IncluirPermissaoAcesso(new PermissaoAcesso
                        {
                            MenuId    = menu.Id,
                            CargoId   = cargo.Id,
                            Acessar   = false,
                            Cadastrar = false,
                            Atualizar = false,
                            Excluir   = false,
                            Logs      = false,
                            Campos    = campos
                        });
                    }

                    _controleAcessoRepositorio.AplicarPermissoes(cargo.Id, permissaoAcesso.PermissoesAcesso);
                }

                TempData["Sucesso"] = true;

                GravarLogAuditoria(TipoLogAuditoria.INSERT, cargo);
            }

            return(View(viewModel));
        }