/// <summary> /// Loads the reference node data /// </summary> /// <param name="referenceNode">Reference node</param> /// <returns>Reference node data</returns> private async Task <ReferenceNodeData> GetReferenceNodeData(ReferenceNode referenceNode) { ReferenceNodeData referenceNodeData = new ReferenceNodeData(); referenceNodeData.ReferenceText = referenceNode.ReferenceText; referenceNodeData.ObjectType = referenceNode.ReferencedObjects.Any() ? referenceNode.ReferencedObjects[0].ObjectType : ExportConstants.ExportObjectTypeNone; switch (referenceNodeData.ObjectType.ToLowerInvariant()) { case ExportConstants.ExportObjectTypeNpc: referenceNodeData.Npc = await _exportCachedDbAccess.GetNpcById(referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeItem: referenceNodeData.Item = await _exportCachedDbAccess.GetItemById(referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeSkill: referenceNodeData.Skill = await _exportCachedDbAccess.GetSkillById(referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeQuest: referenceNodeData.Quest = await _exportCachedDbAccess.GetQuestById(referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeWikiPage: referenceNodeData.WikiPage = await _exportCachedDbAccess.GetWikiPageById(referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeMapMarker: referenceNodeData.Marker = await _exportCachedDbAccess.GetMarkerById(referenceNode.ReferencedObjects[1].ObjectId, referenceNode.ReferencedObjects[0].ObjectId); break; case ExportConstants.ExportObjectTypeDailyRoutineEvent: referenceNodeData.Npc = await _exportCachedDbAccess.GetNpcById(referenceNode.ReferencedObjects[1].ObjectId); referenceNodeData.DailyRoutineEvent = referenceNodeData.Npc.DailyRoutine != null?referenceNodeData.Npc.DailyRoutine.FirstOrDefault(d => d.EventId == referenceNode.ReferencedObjects[0].ObjectId) : null; break; } return(referenceNodeData); }