Example #1
0
        public async Task UpdateQuestionTopic(PangulDbContext db, UserContext user, UpdateQuestionTopic model)
        {
            model.UserContext   = user;
            model.Derived.Topic = await _topicService.RequireTopic(db, user, model.TopicName);

            await _updateQuestionTopic.Execute(db, model);
        }
        public async Task Execute(PangulDbContext db, UpdateQuestionTopic command)
        {
            command.Validate();

            // Get existing question
            var question = await _getQuestion.Execute(db, new GetQuestion()
            {
                UserContext     = command.UserContext,
                LightWeightOnly = false,
                QuestionId      = command.QuestionId,
                RowVersion      = command.RowVersion,
            });

            if (question == null)
            {
                throw new PangulCommandFailedException(CommandFailureType.MissingData, $"No such question ({command.QuestionId}, {command.RowVersion})");
            }

            // Verify user has permission
            await _internalUserPermissionService.RequireWriteAccessFor(question, command.UserContext);

            question.TopicId = command.Derived.Topic.TopicId;
        }