/// <summary> /// Saves the given quest step. /// </summary> /// <param name="questStepDto">Transfer object representing the quest step to save.</param> public async Task SaveQuestStep(QuestStepDto questStepDto) { var entity = questStepDto.ToEntity(); var hasQuestSteps = await questRepository.HasQuestStepsAsync(questStepDto.QuestKey); if (hasQuestSteps) { var original = await questRepository.GetQuestStepAsync(questStepDto.QuestStepKey); if (original == null) { var maxSortOrder = await questRepository.GetMaxSortOrderAsync(questStepDto.QuestKey); entity.SortOrder = maxSortOrder + 1; } else { entity.SortOrder = original.SortOrder; } } else { entity.SortOrder = 0; } questRepository.Save(entity, ctx => ctx.QuestStep, qs => qs.QuestStepKey == questStepDto.QuestStepKey); }