Ejemplo n.º 1
0
        public async Task <Response> Handle(AdicionarMembroNaEquipe request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                return(new Response(false, "Nenhum membro da equipe foi informado", null));
            }

            Projeto projeto = await _repositorioProjeto.CarregarObjetoPeloID(request.ProjetoId);

            if (projeto == null)
            {
                return(new Response(false, "Projeto não encontrado", null));
            }

            List <EquipeDoProjeto> equipe = request.MembrosDaEquipe;

            foreach (var membro in equipe)
            {
                Usuario novoMembro = await _repositorioUsuario.CarregarObjetoPeloID(membro.UsuarioId);

                var usuarioMembroDoProjeto = projeto.ProjetoUsuarios.Any(p => p.Usuario == novoMembro);

                if (usuarioMembroDoProjeto == false)
                {
                    if (novoMembro != null)
                    {
                        projeto.AdicionarMembro(novoMembro, membro.Gerente);
                    }
                    else
                    {
                        AddNotification("Usuario", "Usuário com o ID: " + membro.UsuarioId + " não foi encontrado");
                    }
                }
                else
                {
                    AddNotification("Usuario", "Usuário com ID: " + membro.UsuarioId + " já pertence a este projeto");
                }
            }

            if (projeto.Invalid)
            {
                return(new Response(false, "Projeto inválido", projeto.Notifications));
            }

            _repositorioProjeto.Editar(projeto);
            var result = new Response(true, "Equipe do projeto atualizada com sucesso", Notifications);

            return(await Task.FromResult(result));
        }
Ejemplo n.º 2
0
        public async Task <Response> Handle(CriarProjeto request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                return(new Response(false, "Informe os dados do projeto", request));
            }

            Projeto projeto = new Projeto(request.Nome, request.Descricao);

            //PORQUE ADICIONAR DOCUMENTOS/RELEASES/MEMBROS DA EQUIPE AO CRIAR PROJETO?
            //Pode ser que ao criar novo projeto ja tenha esses dados
            #region ADICIONAR DOCUMENTOS
            //verificar se for igual a null. Se verificar pelo count da erro de objeto nao instanciado
            if (request.Documentos != null)
            {
                var docs = request.Documentos;

                foreach (var d in docs)
                {
                    projeto.AdicionarDocumento(new Documento(d.Titulo, d.URL, projeto));
                }
            }

            #endregion

            #region ADICIONAR RELEASES

            if (request.Releases != null)
            {
                var releases = request.Releases;

                foreach (var r in releases)
                {
                    var usuario = await _repositorioUsuario.CarregarObjetoPeloID(r.UsuarioId);

                    if (usuario == null)
                    {
                        return(new Response(false, "Usuário não encontrado", null));
                    }
                    else
                    {
                        projeto.AdicionarRelease(new Release(r.Nome, r.Descricao, r.Versao, projeto, usuario, r.DataLiberacao));
                    }
                }
            }

            #endregion

            #region ADICIONAR MEMBROS DA EQUIPE NO PROJETO

            if (request.MembrosDoProjeto != null)
            {
                List <EquipeDoProjeto> equipe = request.MembrosDoProjeto;

                foreach (var usuarioEquipe in equipe)
                {
                    Usuario usuario = await _repositorioUsuario.CarregarObjetoPeloID(usuarioEquipe.UsuarioId);

                    if (usuario != null)
                    {
                        projeto.AdicionarMembro(usuario, usuarioEquipe.Gerente);
                    }
                    else
                    {
                        AddNotification("Usuario", "Usuario com ID: " + usuarioEquipe.UsuarioId + " não foi encontrado!");
                    }
                }
            }

            #endregion

            #region  VALIDACOES

            if (projeto.Invalid)
            {
                return(new Response(false, "Projeto inválido", projeto.Notifications));
            }

            var existe = await _repositorioProjeto.Existe(projeto);

            if (existe == true)
            {
                return(new Response(false, "Já existe um projeto com o mesmo nome", existe));
            }

            _repositorioProjeto.Adicionar(projeto);

            var result = new Response(true, "Projeto criado com sucesso!", Notifications);
            return(await Task.FromResult(result));

            #endregion
        }
Ejemplo n.º 3
0
        //Adicionar/Excluir membros do projeto
        public async Task <Response> Handle(MembrosDoProjeto request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                return(new Response(false, "Informe o projeto e o usuário", request));
            }

            Projeto projeto = await _repositorioProjeto.CarregarObjetoPeloID(request.ProjetoId);

            if (projeto == null)
            {
                return(new Response(false, "Projeto não encontrado", null));
            }

            #region ADICIONAR MEMBROS

            if (request.AdicionarMembros != null)
            {
                List <EquipeDoProjeto> equipe = request.AdicionarMembros;

                foreach (var membro in equipe)
                {
                    Usuario novoMembro = await _repositorioUsuario.CarregarObjetoPeloID(membro.UsuarioId);

                    //retorna true caso o usuario acima esteja relacionado ao projeto
                    var usuarioMembroProjeto = projeto.ProjetoUsuarios.Any(p => p.Usuario == novoMembro);

                    if (usuarioMembroProjeto == false)
                    {
                        if (novoMembro != null)
                        {
                            projeto.AdicionarMembro(novoMembro, membro.Gerente);
                        }
                        else
                        {
                            AddNotification("Usuario", "Usuário com ID: " + membro.UsuarioId + " não foi encontrado!");
                        }
                    }
                    else
                    {
                        AddNotification("Usuario", "Usuário com ID: " + membro.UsuarioId + " ja pertence a este projeto");
                    }
                }
            }

            #endregion

            #region REMOVER MEMBROS

            if (request.ExcluirMembros != null)
            {
                List <EquipeDoProjeto> equipe = request.ExcluirMembros;

                foreach (var membro in equipe)
                {
                    Usuario membroParaExcluir = await _repositorioUsuario.CarregarObjetoPeloID(membro.UsuarioId);

                    var usuarioMembroProjeto = projeto.ProjetoUsuarios.Any(p => p.Usuario == membroParaExcluir);

                    if (usuarioMembroProjeto == true)
                    {
                        if (membroParaExcluir != null)
                        {
                            projeto.ExcluirMembroDoProjeto(membroParaExcluir);
                        }
                        else
                        {
                            AddNotification("Usuario", "Usuário com ID: " + membro.UsuarioId + " não foi encontrado!");
                        }
                    }
                    else
                    {
                        AddNotification("Usuario", "Usuário com ID: " + membro.UsuarioId + " não pertence a este projeto");
                    }
                }
            }

            #endregion

            if (projeto.Invalid)
            {
                return(new Response(false, "Projeto inválido", projeto.Notifications));
            }

            _repositorioProjeto.Editar(projeto);

            var result = new Response(true, "Equipe do projeto alterada com sucesso!", Notifications);
            return(await Task.FromResult(result));
        }