/// <summary> /// Adiciona um nó ou a hierarquia abaixo dele a um usuário /// </summary> /// <param name="urvm">UsuarioNodeViewModel - View Model da página AdicionarNode</param> /// <returns></returns> public virtual async Task AdicionarNodeAsync(UsuarioNodeViewModel urvm) { Usuario usuario = await this._db.Usuarios.FindAsync(urvm.IdUsuario); var node = await this._db.ProjectNodes.FindAsync(urvm.IdNode); if (usuario == null) { throw new UsuarioApplicationException("Usuário não encontrado"); } if (node == null) { throw new UsuarioApplicationException("Node não encontrado"); } urvm.Usuario = usuario; urvm.Node = node; urvm.IdNode = node.Id; if (urvm.AdicionarRecursivo) { AdicionaNodesRecursivamente(usuario, node); } else { bool jaPossui = usuario.NosDoUsuario.Contains(node); if (!jaPossui) { usuario.NosDoUsuario.Add(node); } } await this._db.SaveChangesAsync(); }
public async Task <ActionResult> AdicionarNode(int?id) { if (id == null) { MensagemParaUsuarioViewModel.MensagemErro("Escolha um usuário para adicionar estruturas de projeto", TempData, ModelState); return(RedirectToAction("index")); } try { Usuario usuario = await db.Usuarios.FindAsync(id); if (usuario == null) { MensagemParaUsuarioViewModel.MensagemErro("O usuário não foi encontrado", TempData, ModelState); return(RedirectToAction("index")); } UsuarioNodeViewModel urvm = new UsuarioNodeViewModel { Usuario = usuario, IdUsuario = usuario.Id }; CarregaNodes(); return(View(urvm)); } catch (Exception err) { MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState); return(RedirectToAction("index")); } }
public async Task <ActionResult> AdicionarNode(UsuarioNodeViewModel urvm) { CarregaNodes(); if ((urvm == null) || (urvm.IdUsuario == 0)) { MensagemParaUsuarioViewModel.MensagemErro("Usuário não encontrado", TempData, ModelState); return(RedirectToAction("index")); } if ((urvm == null) || (urvm.IdNode == 0) || (urvm.IdUsuario == 0)) { MensagemParaUsuarioViewModel.MensagemErro("O Nó de Projeto e o usuário devem ser informados.", TempData, ModelState); return(View(urvm)); } if (ModelState.IsValid) { try { UsuarioApplication usu = new UsuarioApplication(this.db); await usu.AdicionarNodeAsync(urvm); MensagemParaUsuarioViewModel.MensagemSucesso("Projeto adicionado", TempData); return(View(urvm)); } catch (UsuarioApplicationException uaex) { MensagemParaUsuarioViewModel.MensagemErro(uaex.Message, TempData, ModelState); } 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(urvm)); }