/// <summary> /// Returns the valid export template by object id and template type /// </summary> /// <param name="id">Object Id</param> /// <param name="templateType">Template Type</param> /// <returns>Valid Export Template</returns> private async Task <ExportTemplateByObjectIdResult> GetValidExportTemplateByIdAndType(string id, TemplateType templateType) { ExportTemplateByObjectIdResult result = new ExportTemplateByObjectIdResult(); result.IsDefault = false; GoNorthProject project = await _projectDbAccess.GetDefaultProject(); ExportTemplate template = await _exportTemplateDbAccess.GetTemplateByCustomizedObjectId(project.Id, id); if (template == null) { result.IsDefault = true; FlexFieldObject flexFieldObject = null; if (templateType == TemplateType.ObjectNpc) { flexFieldObject = await _npcDbAccess.GetFlexFieldObjectById(id); } else if (templateType == TemplateType.ObjectItem) { flexFieldObject = await _itemDbAccess.GetFlexFieldObjectById(id); } else if (templateType == TemplateType.ObjectSkill) { flexFieldObject = await _skillDbAccess.GetFlexFieldObjectById(id); } if (flexFieldObject != null) { template = await _exportTemplateDbAccess.GetTemplateByCustomizedObjectId(project.Id, flexFieldObject.TemplateId); } if (template == null) { template = await _defaultTemplateProvider.GetDefaultTemplateByType(project.Id, templateType); } } result.Template = template; return(result); }
/// <summary> /// Compares a skill /// </summary> /// <param name="skillId">Id of the skill</param> /// <param name="currentSkill">Current skill, if null the skill will be loaded</param> /// <returns>Compare Result</returns> public async Task <CompareResult> CompareSkill(string skillId, EvneSkill currentSkill = null) { if (currentSkill == null) { currentSkill = await _skillDbAccess.GetFlexFieldObjectById(skillId); } EvneSkill oldSkill = await _skillSnapshotDbAccess.GetSnapshotById(skillId); return(CompareObjects(currentSkill, oldSkill)); }
/// <summary> /// Returns a skill by its id /// </summary> /// <param name="skillId">Skill id</param> /// <returns>Skill</returns> public async Task <EvneSkill> GetSkillById(string skillId) { if (_cachedSkills.ContainsKey(skillId)) { return(_cachedSkills[skillId]); } EvneSkill skill = await _skillDbAccess.GetFlexFieldObjectById(skillId); _cachedSkills.Add(skillId, skill); return(skill); }
/// <summary> /// Checks an skill for update /// </summary> /// <param name="exportSnippet">Export Snippet</param> /// <param name="objectId">Object Id</param> /// <param name="timelineEvent">Timeline Event</param> /// <returns>Result of update</returns> private async Task <FlexFieldObject> CheckSkillForUpdate(ObjectExportSnippet exportSnippet, string objectId, TimelineEvent timelineEvent) { EvneSkill skill = await _skillDbAccess.GetFlexFieldObjectById(objectId); if (skill == null) { return(null); } await _timelineService.AddTimelineEntry(exportSnippet.ProjectId, timelineEvent, exportSnippet.SnippetName, skill.Name, skill.Id); CompareResult result = await _implementationStatusComparer.CompareSkill(skill.Id, skill); if (result.CompareDifference != null && result.CompareDifference.Count > 0) { skill.IsImplemented = false; await _skillDbAccess.UpdateFlexFieldObject(skill); } return(skill); }
public async Task <IActionResult> FlagSkillAsImplemented(string skillId) { // Check Data EvneSkill skill = await _skillDbAccess.GetFlexFieldObjectById(skillId); if (skill == null) { return(StatusCode((int)HttpStatusCode.NotFound)); } // Flag skill as implemented skill.IsImplemented = true; await _skillSnapshotDbAccess.SaveSnapshot(skill); await _skillDbAccess.UpdateFlexFieldObject(skill); // Add Timeline entry await _timelineService.AddTimelineEntry(TimelineEvent.ImplementedSkill, skill.Id, skill.Name); return(Ok()); }