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")); } }
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)); }