public async Task <IActionResult> AdicionarMembro([FromBody] MembrosDoProjeto request) { try { var response = await _mediator.Send(request, CancellationToken.None); return(await ResponseAsync(response)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
//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)); }