Beispiel #1
0
        public async Task <ActionResult> AdicionarAcao(int?id)
        {
            if (id == null)
            {
                MensagemParaUsuarioViewModel.MensagemErro("Escolha um perfil para adicionar ações", TempData, ModelState);
                return(RedirectToAction("index"));
            }

            try
            {
                Perfil perfil = await db.Perfis.FindAsync(id);

                if (perfil == null)
                {
                    MensagemParaUsuarioViewModel.MensagemErro("O perfil não foi encontrado", TempData, ModelState);
                    return(RedirectToAction("index"));
                }

                PerfilAcaoViewModel pavm = new PerfilAcaoViewModel
                {
                    Perfil   = perfil,
                    IdPerfil = perfil.Id
                };
                CarregaAcoes(perfil);
                return(View(pavm));
            }
            catch (Exception err)
            {
                MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState);
                return(RedirectToAction("index"));
            }
        }
Beispiel #2
0
        public async Task <ActionResult> AdicionarAcao(PerfilAcaoViewModel pavm)
        {
            if (pavm == null)
            {
                MensagemParaUsuarioViewModel.MensagemErro("A ação e o perfil não podem ser nulos", TempData, ModelState);
                return(RedirectToAction("index"));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var acao   = db.Acoes.Find(pavm.IdAcao);
                    var perfil = db.Perfis.Find(pavm.IdPerfil);

                    if (acao == null)
                    {
                        MensagemParaUsuarioViewModel.MensagemErro("Ação não encontrada", TempData, ModelState);
                        return(RedirectToAction("index"));
                    }

                    if (perfil == null)
                    {
                        MensagemParaUsuarioViewModel.MensagemErro("Perfil não encontrado", TempData, ModelState);
                        return(RedirectToAction("index"));
                    }

                    pavm.Acao     = acao;
                    pavm.Perfil   = perfil;
                    pavm.IdPerfil = perfil.Id;
                    pavm.IdAcao   = acao.Id;

                    bool jaPossui = perfil.Acoes.Contains(acao);
                    if (!jaPossui)
                    {
                        perfil.Acoes.Add(acao);
                    }

                    await db.SaveChangesAsync();

                    if (jaPossui)
                    {
                        MensagemParaUsuarioViewModel.MensagemInfo("Esse perfil já tinha essa ação", TempData);
                    }
                    else
                    {
                        MensagemParaUsuarioViewModel.MensagemSucesso("Ação Adicionada ao perfil", TempData);
                    }

                    CarregaAcoes(perfil);

                    return(View(pavm));
                }
                catch (DbUpdateConcurrencyException duce)
                {
                    MensagemParaUsuarioViewModel.MensagemErro("Talvez esse registro tenha sido excluído por outra pessoa. " + duce.Message, TempData, ModelState);
                }
                catch (Exception err)
                {
                    MensagemParaUsuarioViewModel.MensagemErro("Esse registro não pôde ser salvo. " + err.Message, TempData, ModelState);
                }
            }

            return(View(pavm));
        }