Exemplo n.º 1
0
        public async Task <IActionResult> Page(string id)
        {
            KirjaPage page = null;

            if (!string.IsNullOrEmpty(id))
            {
                page = await _pageDbAccess.GetPageById(id);
            }
            else
            {
                GoNorthProject project = await _userProjectAccess.GetUserProject();

                page = await _pageDbAccess.GetDefaultPageForProject(project.Id);

                if (page == null)
                {
                    page           = new KirjaPage();
                    page.IsDefault = true;
                    page.ProjectId = project.Id;
                    page.Name      = _localizer["DefaultPageName"];
                    page.Content   = _localizer["DefaultPageContent"];

                    _pageParserService.ParsePage(page);

                    page = await _pageDbAccess.CreatePage(page);
                }
            }
            return(Ok(page));
        }
        public async Task <IActionResult> GetJsonConfigByKey(string configKey)
        {
            GoNorthProject project = await _userProjectAccess.GetUserProject();

            JsonConfigEntry configEntry = await _projectConfigDbAccess.GetJsonConfigByKey(project.Id, configKey);

            if (configEntry != null)
            {
                return(Ok(configEntry.ConfigData));
            }
            else
            {
                return(Ok(string.Empty));
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Ensures that the project is loaded
 /// </summary>
 /// <returns>Task</returns>
 private async Task EnsureProject()
 {
     if (_project == null)
     {
         _project = await _userProjectAccess.GetUserProject();
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Manage function generation conditions
        /// </summary>
        /// <returns>View</returns>
        public async Task <IActionResult> FunctionGenerationCondition()
        {
            GoNorthProject project = await _userProjectAccess.GetUserProject();

            FunctionGenerationConditionViewModel viewModel = new FunctionGenerationConditionViewModel();

            viewModel.DialogFunctionGenerationActionTypes = Enum.GetValues(typeof(ActionType)).Cast <ActionType>().Select(s => new MappedDialogFunctionGenerationActionType {
                OriginalActionType = s,
                Value = (int)s,
                Name  = s.ToString()
            }).ToList();
            viewModel.NodeTypes        = ExportDialogData.GetAllNodeTypes();
            viewModel.LockId           = project.Id;
            viewModel.ActionTranslator = _actionTranslator;

            return(View(viewModel));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Index view
        /// </summary>
        /// <returns>View</returns>
        public async Task <IActionResult> Index()
        {
            GoNorthProject defaultProject = await _projectUserAccess.GetUserProject();

            IndexViewModel viewModel = new IndexViewModel();

            viewModel.ProjectName = defaultProject != null ? defaultProject.Name : "";

            return(View(viewModel));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Appends the project id to the lock id if required
        /// </summary>
        /// <param name="id">Id of the lock</param>
        /// <param name="appendProjectIdToKey">True if the project id musit be appended</param>
        /// <returns>Updated id</returns>
        private async Task <string> AppendProjectIdIfRequired(string id, bool appendProjectIdToKey)
        {
            if (appendProjectIdToKey)
            {
                GoNorthProject defaultProject = await _userProjectAccess.GetUserProject();

                id += "|" + defaultProject.Id;
            }

            return(id);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Returns the user project
        /// </summary>
        /// <returns>Project</returns>
        public async Task <GoNorthProject> GetUserProject()
        {
            if (_project != null)
            {
                return(_project);
            }

            _project = await _userProjectAccess.GetUserProject();

            return(_project);
        }
        public async Task <IActionResult> GetCodeEditorPreferences()
        {
            GoNorthUser currentUser = await _userManager.GetUserAsync(this.User);

            UserPreferences userPreferences = await _userPreferencesDbAccess.GetUserPreferences(currentUser.Id);

            GoNorthProject defaultProject = await _userProjectAccess.GetUserProject();

            ExportSettings settings = await _exportSettingsDbAccess.GetExportSettings(defaultProject.Id);

            UserCodeEditorPreferences codeEditorPreferences = new UserCodeEditorPreferences();

            codeEditorPreferences.CodeEditorTheme = userPreferences.CodeEditorTheme;
            codeEditorPreferences.ScriptLanguage  = settings.ScriptLanguage;

            return(Ok(codeEditorPreferences));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Exports an object
        /// </summary>
        /// <param name="template">Template to use</param>
        /// <param name="objectData">Object data</param>
        /// <returns>Export Result</returns>
        public async Task <ExportObjectResult> ExportObject(ExportTemplate template, ExportObjectData objectData)
        {
            GoNorthProject project = await _userProjectAccess.GetUserProject();

            ExportSettings exportSettings = await _exportSettingsDbAccess.GetExportSettings(project.Id);

            ExportObjectResult result = new ExportObjectResult();

            result.FileExtension = exportSettings.ScriptExtension;

            ExportPlaceholderFillResult filledResult = await _placeholderResolver.FillPlaceholders(template.TemplateType, template.Code, objectData, template.RenderingEngine);

            result.Code   = filledResult.Code;
            result.Errors = filledResult.Errors.ToErrorList();

            return(result);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Exports an object
        /// </summary>
        /// <param name="template">Template to use</param>
        /// <param name="objectData">Object data</param>
        /// <returns>Export Result</returns>
        public async Task <ExportObjectResult> ExportObject(ExportTemplate template, ExportObjectData objectData)
        {
            // Run script export to refresh language keys
            IFlexFieldExportable flexFieldObject = null;

            if (objectData.ExportData.ContainsKey(ExportConstants.ExportDataObject))
            {
                flexFieldObject = objectData.ExportData[ExportConstants.ExportDataObject] as IFlexFieldExportable;
            }

            if (flexFieldObject != null)
            {
                _languageKeyReferenceCollector.PrepareCollectionForGroup(flexFieldObject.Id);
            }
            else
            {
                _languageKeyReferenceCollector.PrepareCollectionForGroup(null);
            }

            await _scriptExporter.ExportObject(template, objectData);

            objectData.ExportData[ExportConstants.ExportDataReferencedLanguageIds] = _languageKeyReferenceCollector.GetReferencedLanguageKeys();

            // Export language keys
            GoNorthProject project = await _userProjectAccess.GetUserProject();

            ExportSettings exportSettings = await _exportSettingsDbAccess.GetExportSettings(project.Id);

            ExportTemplate exportTemplate = await _defaultTemplateProvider.GetDefaultTemplateByType(project.Id, TemplateType.LanguageFile);

            ExportObjectResult result = new ExportObjectResult();

            result.FileExtension = exportSettings.LanguageFileExtension;

            ExportPlaceholderFillResult filledResult = await _placeholderResolver.FillPlaceholders(TemplateType.LanguageFile, exportTemplate.Code, objectData, exportTemplate.RenderingEngine);

            result.Code   = filledResult.Code;
            result.Errors = filledResult.Errors.ToErrorList();

            return(result);
        }
Exemplo n.º 11
0
        public async Task <IActionResult> GetNotImplementedDialogs(int start, int pageSize)
        {
            GoNorthProject project = await _userProjectAccess.GetUserProject();

            Task <List <TaleDialog> > queryTask;
            Task <int> countTask;

            queryTask = _taleDbAccess.GetNotImplementedDialogs(project.Id, start, pageSize);
            countTask = _taleDbAccess.GetNotImplementedDialogsCount(project.Id);
            Task.WaitAll(queryTask, countTask);

            // Resolve npc names
            List <KortistoNpc> npcNames = await _npcDbAccess.ResolveFlexFieldObjectNames(queryTask.Result.Select(d => d.RelatedObjectId).ToList());

            DialogQueryResult queryResult = new DialogQueryResult();

            queryResult.Dialogs = queryTask.Result.Select(d => new DialogQueryObject {
                Id = d.Id,
                RelatedObjectId = d.RelatedObjectId,
                Name            = npcNames.First(n => n.Id == d.RelatedObjectId).Name
            }).ToList();
            queryResult.HasMore = start + queryResult.Dialogs.Count < countTask.Result;
            return(Ok(queryResult));
        }
Exemplo n.º 12
0
        /// <summary>
        /// Adds a timeline entry with a user
        /// </summary>
        /// <param name="projectId">Id of the project to associate, if null the project will be loaded</param>
        /// <param name="userDisplayName">User Displayname</param>
        /// <param name="userLoginName">Userl oginname</param>
        /// <param name="timelineEvent">Timeline Event</param>
        /// <param name="additionalValues">Additional Values</param>
        /// <returns>Task</returns>
        private async Task AddTimlineEntry(string projectId, string userDisplayName, string userLoginName, TimelineEvent timelineEvent, params string[] additionalValues)
        {
            if (string.IsNullOrEmpty(projectId))
            {
                GoNorthProject project = await _userProjectAccess.GetUserProject();

                projectId = project != null ? project.Id : string.Empty;
            }

            string updateId = null;

            if (_eventMergeTimeSpan > 0)
            {
                DateTimeOffset       dateLimit       = DateTimeOffset.UtcNow.AddMinutes(-_eventMergeTimeSpan);
                List <TimelineEntry> timelineEntries = await _timelineDbAccess.GetTimelineEntriesByUserInTimeSpan(projectId, userLoginName, timelineEvent, dateLimit);

                foreach (TimelineEntry curEntry in timelineEntries)
                {
                    if (curEntry.AdditionalValues == null && additionalValues == null)
                    {
                        updateId = curEntry.Id;
                        break;
                    }
                    else if (curEntry.AdditionalValues == null || additionalValues == null)
                    {
                        continue;
                    }

                    if (curEntry.AdditionalValues.Length != additionalValues.Length)
                    {
                        continue;
                    }

                    bool isNotValid = false;
                    for (int curAdditionalValue = 0; curAdditionalValue < additionalValues.Length; ++curAdditionalValue)
                    {
                        if (curEntry.AdditionalValues[curAdditionalValue] != additionalValues[curAdditionalValue])
                        {
                            isNotValid = true;
                            break;
                        }
                    }

                    if (isNotValid)
                    {
                        continue;
                    }

                    updateId = curEntry.Id;
                    break;
                }
            }

            TimelineEntry entry = new TimelineEntry();

            entry.ProjectId        = projectId;
            entry.Event            = timelineEvent;
            entry.Timestamp        = DateTimeOffset.UtcNow;
            entry.AdditionalValues = additionalValues;
            entry.Username         = userLoginName;
            entry.UserDisplayName  = userDisplayName;

            if (string.IsNullOrEmpty(updateId))
            {
                await _timelineDbAccess.CreateTimelineEntry(entry);
            }
            else
            {
                entry.Id = updateId;
                await _timelineDbAccess.UpdateTimelineEntry(entry);
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Adds a timeline event
        /// </summary>
        /// <param name="projectId">Id of the project to associate, if null the project will be loaded</param>
        /// <param name="timelineEvent">Timeline Event</param>
        /// <param name="additionalValues">Additional Values</param>
        /// <returns>Task</returns>
        public async Task AddTimelineEntry(string projectId, TimelineEvent timelineEvent, params string[] additionalValues)
        {
            GoNorthUser currentUser;

            if (string.IsNullOrEmpty(projectId))
            {
                Task <GoNorthUser>    currentUserTask = _userManager.GetUserAsync(_httpContext.HttpContext.User);
                Task <GoNorthProject> projectTask     = _userProjectAccess.GetUserProject();
                Task.WaitAll(currentUserTask, projectTask);
                currentUser = currentUserTask.Result;
                GoNorthProject project = projectTask.Result;
                projectId = project != null ? project.Id : string.Empty;
            }
            else
            {
                currentUser = await _userManager.GetUserAsync(_httpContext.HttpContext.User);
            }

            string updateId = null;

            if (_eventMergeTimeSpan > 0)
            {
                DateTimeOffset       dateLimit       = DateTimeOffset.UtcNow.AddMinutes(-_eventMergeTimeSpan);
                List <TimelineEntry> timelineEntries = await _timelineDbAccess.GetTimelineEntriesByUserInTimeSpan(projectId, currentUser.UserName, timelineEvent, dateLimit);

                foreach (TimelineEntry curEntry in timelineEntries)
                {
                    if (curEntry.AdditionalValues == null && additionalValues == null)
                    {
                        updateId = curEntry.Id;
                        break;
                    }
                    else if (curEntry.AdditionalValues == null || additionalValues == null)
                    {
                        continue;
                    }

                    if (curEntry.AdditionalValues.Length != additionalValues.Length)
                    {
                        continue;
                    }

                    bool isNotValid = false;
                    for (int curAdditionalValue = 0; curAdditionalValue < additionalValues.Length; ++curAdditionalValue)
                    {
                        if (curEntry.AdditionalValues[curAdditionalValue] != additionalValues[curAdditionalValue])
                        {
                            isNotValid = true;
                            break;
                        }
                    }

                    if (isNotValid)
                    {
                        continue;
                    }

                    updateId = curEntry.Id;
                    break;
                }
            }

            TimelineEntry entry = new TimelineEntry();

            entry.ProjectId        = projectId;
            entry.Event            = timelineEvent;
            entry.Timestamp        = DateTimeOffset.UtcNow;
            entry.AdditionalValues = additionalValues;
            entry.Username         = currentUser.UserName;
            entry.UserDisplayName  = currentUser.DisplayName;

            if (string.IsNullOrEmpty(updateId))
            {
                await _timelineDbAccess.CreateTimelineEntry(entry);
            }
            else
            {
                entry.Id = updateId;
                await _timelineDbAccess.UpdateTimelineEntry(entry);
            }
        }
Exemplo n.º 14
0
 public async Task<IActionResult> Maps()
 {
     GoNorthProject project = await _userProjectAccess.GetUserProject();
     List<KartaMap> maps = await _mapDbAccess.GetAllProjectMaps(project.Id);
     return Ok(maps);
 }