Пример #1
0
        public async Task <ValidationResult> Handle(AdicionarGrupoCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                return(message.ValidationResult);
            }

            Usuario proprietarioGrupo = await _repository.ObterUsuarioPorId(message.UsuarioCriadorId);

            if (proprietarioGrupo is null)
            {
                return(await NotifyAndReturn("Usuário não encontrado."));
            }

            Grupo novoGrupo = new Grupo(message.NomeGrupo, message.NumeroMaximoMembros);

            proprietarioGrupo.AdicionarGrupo(novoGrupo);

            _repository.AdicionarGrupo(novoGrupo);

            _repository.AtualizarUsuario(proprietarioGrupo);

            return(await SaveAndPublish(new GrupoAdicionadoUsuarioEvent(novoGrupo.UsuarioCriadorId, novoGrupo.Id, novoGrupo.NomeGrupo, novoGrupo.NumeroMaximoMembros)));
        }