コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        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());
        }