Exemple #1
0
        /// <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);
        }