public virtual async Task SetGradeAsync(int columnId, int userId, MoodleGradebookGrade grade) { // Sanity check if (grade.Score < 0) { throw new ArgumentOutOfRangeException(nameof(grade.Score), "The score must not be negative."); } // Retrieve affected column var column = await GetColumnAsync(columnId); // Prepare score object var score = new MoodleLtiScore { UserId = userId.ToString(), ScoreGiven = grade.Score, Comment = grade.Comment, Timestamp = grade.Timestamp, ScoreMaximum = column.MaximumScore, ActivityProgress = ActivityProgressStatus.Completed, GradingProgress = GradingProgressStatus.FullyGraded }; // Store score await _ltiApi.UpdateScoreAsync(columnId, score); }