Esempio n. 1
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));
        }