/// <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); }
/// <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) }); }
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)); } }