/// <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();
        }
Exemple #2
0
        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"));
            }
        }
Exemple #3
0
        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));
        }