Example #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);
        }
Example #2
0
        /// <summary>
        /// Converts the given <see cref="QuestStepDto"/> to a <see cref="QuestStep"/>.
        /// </summary>
        /// <param name="dto">The dto to transform into its entity object equivalent.</param>
        /// <exception cref="ArgumentNullException">Thrown if dto is null.</exception>
        public static QuestStep ToEntity(this QuestStepDto dto)
        {
            if (dto == null)
            {
                throw new ArgumentNullException(nameof(dto));
            }

            return(new QuestStep
            {
                Description = dto.Description.JsonCleanUp(),
                Name = dto.Name.JsonCleanUp(),
                QuestKey = dto.QuestKey,
                QuestStepKey = dto.QuestStepKey,
                SortOrder = int.Parse(dto.SortOrder)
            });
        }
Example #3
0
        public async Task <ActionResult> PostQuestStepAsync(QuestStepDto questStepDto)
        {
            if (questStepDto == null)
            {
                throw new ArgumentNullException(nameof(questStepDto));
            }
            if (questStepDto.QuestKey == Guid.Empty)
            {
                return(BadRequest());
            }

            try
            {
                await questDomain.SaveQuestStep(questStepDto);

                return(Ok());
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }