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 }