public async Task <IActionResult> DownloadPersonalData()
        {
            PersonalDataResponse response = new PersonalDataResponse();

            GoNorthUser currentUser = await _userManager.GetUserAsync(User);

            response.User = MapUser(currentUser);
            await FillModifiedData(response, currentUser);
            await FillAssignedTasks(response, currentUser);
            await FillTimelineEvents(response, currentUser);
            await FillTaskBoardHistory(response, currentUser);
            await FillLockEntries(response, currentUser);

            JsonSerializerOptions options = new JsonSerializerOptions
            {
                WriteIndented = true,
                Encoder       = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            };

            MemoryStream returnStream       = new MemoryStream();
            StreamWriter writer             = new StreamWriter(returnStream);
            string       serializedResponse = JsonSerializer.Serialize(response, options);
            await writer.WriteAsync(serializedResponse);

            await writer.FlushAsync();

            returnStream.Seek(0, SeekOrigin.Begin);

            return(File(returnStream, "application/json", "UserData.json"));
        }
Beispiel #2
0
        public async Task ExecuteTestAsync()
        {
            Console.WriteLine("<Controller:Execute> Starting");
            var mailBodyList    = new List <MailBodyDto>();
            var tenantCompanies = await GetTenantCompanies();

            if (tenantCompanies.Count == 0)
            {
                return;
            }
            PersonalDataResponse personalData = null;

            using (StreamReader r = new StreamReader("C:\\Test\\HrLink\\Employee_response.json"))
            {
                string json = r.ReadToEnd();
                personalData = JsonConvert.DeserializeObject <PersonalDataResponse>(json);
                //var persons = personalDataResponse.SoapenvEnvelope.Body.ApiVersionPersons.Persons;
            }
            JobDataResponse jobData = null;

            using (StreamReader r = new StreamReader("C:\\Test\\HRLink\\Job_response.json"))
            {
                string json = r.ReadToEnd();
                jobData = JsonConvert.DeserializeObject <JobDataResponse>(json);
                //var jobs = jDataResponse.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList;
            }
            var defaultTenant  = tenantCompanies.First();
            var defaultCompany = tenantCompanies.First().Companies.First();
            var imported       = await _userHelper.ImportAsync(defaultTenant.Api, defaultCompany, personalData, jobData, mailBodyList);

            Console.WriteLine("<Controller:Execute> Ending");
        }
        /// <summary>
        /// Fills the task board history
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillTaskBoardHistory(PersonalDataResponse response, GoNorthUser currentUser)
        {
            response.TaskBoardHistory = new List <TrimmedTaskBoardHistory>();

            List <UserTaskBoardHistory> taskBoardHistory = await _userTaskBoardHistoryDbAccess.GetAllOpenedBoardsOfUser(currentUser.Id);

            foreach (UserTaskBoardHistory curTaskBoard in taskBoardHistory)
            {
                TrimmedTaskBoardHistory curTaskBoardHistory = new TrimmedTaskBoardHistory();
                curTaskBoardHistory.BoardName = "DELETED";
                curTaskBoardHistory.Project   = "DELETED";

                TaskBoard taskBoard = await _taskBoardDbAccess.GetTaskBoardById(curTaskBoard.LastOpenBoardId);

                if (taskBoard != null)
                {
                    curTaskBoardHistory.BoardName = taskBoard.Name;
                }

                GoNorthProject project = await _projectDbAccess.GetProjectById(curTaskBoard.ProjectId);

                if (project != null)
                {
                    curTaskBoardHistory.Project = project.Name;
                }

                response.TaskBoardHistory.Add(curTaskBoardHistory);
            }
        }
        /// <summary>
        /// Fills the timeline events for a user
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillTimelineEvents(PersonalDataResponse response, GoNorthUser currentUser)
        {
            List <TimelineEntry> timelineEntries = await _timelineDbAccess.GetTimelineEntriesByUser(currentUser.UserName);

            response.TimelineEntries = timelineEntries.Select(t => new TrimmedTimelineEntry {
                Event = t.Event.ToString(),
                Date  = t.Timestamp
            }).ToList();
        }
        /// <summary>
        /// Lock entries
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillLockEntries(PersonalDataResponse response, GoNorthUser currentUser)
        {
            List <LockEntry> locks = await _lockDbAccess.GetAllLocksOfUser(currentUser.Id);

            response.LockEntries = locks.Select(l => new TrimmedLockEntry {
                Id         = l.Id,
                Category   = l.Category,
                ResourceId = l.ResourceId,
                ExpireDate = l.ExpireDate
            }).ToList();
        }
Beispiel #6
0
        public async Task <bool> ImportAsync(ApiDto apiDto, Dto.CompanyDto company, PersonalDataResponse personalData, JobDataResponse jobData, List <MailBodyDto> mailBodyList)
        {
            var persons    = personalData == null ? new List <Person>() : personalData.SoapenvEnvelope.Body.ApiVersionPersons.Persons.ToList();
            var jobs       = jobData == null ? new List <JobDataWithComp>() : jobData.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList.ToList();
            int count      = 1;
            var httpClient = HttpClientHelper.Get(apiDto);
            var imported   = true;

            foreach (var person in persons)
            {
                var progressMessage = $"Importing {count++} of {persons.Count}.";
                var externalId      = person.Emplid.Text;
                var userName        = person.SubNames.NameDisplay.Text;
                var job             = jobs.FirstOrDefault(j => j.Job.Emplid.Text == externalId);
                if (job == null)
                {
                    await LogHelper.SaveLogAsync(apiDto, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"-- Not Imported - Job data must exists for employeeid {externalId} --", progressMessage, JsonConvert.SerializeObject(person));

                    imported = false;
                    continue;
                }
                var department = await GetDepartmentAsync(httpClient, company.CompanyId, job.Department.Deptid.Text);

                if (department == null)
                {
                    await ApiHelper.SaveLogAsync(apiDto, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Department does not exists for external id {job.Department.Deptid.Text}.", progressMessage, JsonConvert.SerializeObject(person));

                    continue;
                }
                var isActive    = job.Job.EmplStatus.Text == "A";
                var employeeDto = await SaveEmployeeAsync(httpClient, company, externalId, userName, isActive, progressMessage, mailBodyList);

                if (employeeDto == null)
                {
                    imported = false;
                    continue;
                }
                var savedUserTypology = await SaveUserTypologyAsync(httpClient, company, department.Id, job, progressMessage);

                if (!savedUserTypology)
                {
                    imported = false;
                    continue;
                }
                var savedUserDto = await SaveUserAsync(httpClient, company, externalId, userName, isActive, person, job, employeeDto.Id, progressMessage, mailBodyList);

                if (savedUserDto == null)
                {
                    imported = false;
                    continue;
                }
            }
            return(imported);
        }
        /// <summary>
        /// Fills the assigned tasks of the user
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillAssignedTasks(PersonalDataResponse response, GoNorthUser currentUser)
        {
            List <TaskBoard> taskBoards = await _taskBoardDbAccess.GetAllTaskBoardsByAssignedUser(currentUser.Id);

            response.AssignedTasks = taskBoards.SelectMany(t => t.TaskGroups.Where(tg => tg.AssignedTo == currentUser.Id)).Select(t => new TrimmedTask {
                Name        = t.Name,
                Description = t.Description,
                IsTaskGroup = true
            }).ToList();
            response.AssignedTasks.AddRange(taskBoards.SelectMany(t => t.TaskGroups.SelectMany(tg => tg.Tasks.Where(ta => ta.AssignedTo == currentUser.Id))).Select(t => new TrimmedTask {
                Name        = t.Name,
                Description = t.Description,
                IsTaskGroup = false
            }).ToList());
        }
Beispiel #8
0
        public override Task <PersonalDataResponse> GetPersonalData(Empty request, ServerCallContext context)
        {
            var resp = new PersonalDataResponse()
            {
                Result = new PersonalData()
                {
                    Email     = "*****@*****.**",
                    Phone     = "123123123",
                    FullName  = "Full-Name",
                    FirstName = "First-Name",
                    LastName  = "Last-Name",
                    Address   = "Street 54, ap 41",
                    City      = "Nice",
                    Country   = "Switzerland"
                }
            };

            return(Task.FromResult(resp));
        }
Beispiel #9
0
        public override async Task <PersonalDataResponse> GetPersonalData(Empty request, ServerCallContext context)
        {
            var result = new PersonalDataResponse();

            var token    = context.GetBearerToken();
            var response = await _walletApiV1Client.GetPersonalDataAsync(token);

            if (response.Result != null)
            {
                result.Body = _mapper.Map <PersonalData>(response.Result);
            }

            if (response.Error != null)
            {
                result.Error = response.Error.ToApiError();
            }

            return(result);
        }
Beispiel #10
0
        public async Task <IActionResult> DownloadPersonalData()
        {
            PersonalDataResponse response = new PersonalDataResponse();

            GoNorthUser currentUser = await _userManager.GetUserAsync(User);

            response.User = MapUser(currentUser);
            await FillModifiedData(response, currentUser);
            await FillAssignedTasks(response, currentUser);
            await FillTimelineEvents(response, currentUser);
            await FillTaskBoardHistory(response, currentUser);
            await FillLockEntries(response, currentUser);

            MemoryStream returnStream       = new MemoryStream();
            StreamWriter writer             = new StreamWriter(returnStream);
            string       serializedResponse = JsonConvert.SerializeObject(response);
            await writer.WriteAsync(serializedResponse);

            await writer.FlushAsync();

            returnStream.Seek(0, SeekOrigin.Begin);

            return(File(returnStream, "application/json", "UserData.json"));
        }
Beispiel #11
0
        public async Task <bool> ImportAsync(ApiDto api, Dto.CompanyDto company, PersonalDataResponse personalData, JobDataResponse jobData, List <MailBodyDto> mailBodyList)
        {
            var persons    = personalData == null ? new List <Person>() : personalData.SoapenvEnvelope.Body.ApiVersionPersons.Persons.ToList();
            var jobs       = jobData == null ? new List <JobDataWithComp>() : jobData.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList.ToList();
            int count      = 1;
            var httpClient = HttpClientHelper.Get(api);
            var imported   = true;

            foreach (var person in persons)
            {
                var progressMessage = $"Importing {count++} of {persons.Count}.";
                var userId          = Guid.Empty;
                var externalId      = person.Emplid.Text.ToString();
                var userName        = person.SubNames.NameDisplay.Text;
                var job             = jobs.FirstOrDefault(j => j.Job.Emplid.Text.ToString(CultureInfo.InvariantCulture) == externalId);
                if (job == null)
                {
                    await LogHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"-- Not Imported - Job data must exists for employeeid {externalId} --", progressMessage, JsonConvert.SerializeObject(person));

                    imported = false;
                    continue;
                }
                var department = await GetDepartmentAsync(httpClient, company.CompanyId, job.Department.Deptid.Text);

                if (department == null)
                {
                    await ApiHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Department does not exists for external id {job.Department.Deptid.Text}.", progressMessage, JsonConvert.SerializeObject(person));

                    continue;
                }
                var isActive = job.Job.EmplStatus.Text == "A";
                var documentUserFieldValueDtos = await GetUserIdByHrLinkIdAsync(httpClient, person.Emplid.Text.ToString());

                if (documentUserFieldValueDtos.Count > 1)
                {
                    await ApiHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Exists several users with {person.Emplid.Text} HRLinkID.", progressMessage, JsonConvert.SerializeObject(person));

                    return(false);
                }
                if (documentUserFieldValueDtos.Count == 1)
                {
                    var user = await GetUserAsync(httpClient, documentUserFieldValueDtos[0].DocumentId);

                    externalId = user.ExternalId;
                    userId     = user.Id;
                }
                else
                {
                    externalId = (externalId.Length == 10 && externalId.Substring(2, 2) == "00") ? externalId.Remove(2, 2) : externalId;
                }
                var employeeDto = await SaveEmployeeAsync(httpClient, company, externalId, userName, isActive, progressMessage, mailBodyList);

                if (employeeDto == null)
                {
                    imported = false;
                    continue;
                }
                var savedUserTypology = await SaveUserTypologyAsync(httpClient, company, department.Id, job, progressMessage);

                if (!savedUserTypology)
                {
                    imported = false;
                    continue;
                }
                var savedUserDto = await SaveUserAsync(httpClient, company, userId, externalId, userName, isActive, person, job, employeeDto.Id, progressMessage, mailBodyList);

                if (savedUserDto == null)
                {
                    imported = false;
                    continue;
                }
                var documentUserFieldValueBatchPutModel = new DocumentUserFieldValueBatchPutModel
                {
                    DocumentId              = savedUserDto.Id,
                    DocumentTypeName        = "User",
                    DocumentUserFieldValues = new List <DocumentUserFieldValue>()
                };
                documentUserFieldValueBatchPutModel.DocumentUserFieldValues.Add(new DocumentUserFieldValue {
                    ColumnName = "HRLinkId", Value = person.Emplid.Text.ToString(), ColumnDataTypeId = (int)ColumnDataType.Varchar50
                });
                await SaveDocumentUserFieldValueAsync(httpClient, company, documentUserFieldValueBatchPutModel, progressMessage);
            }
            return(imported);
        }
        /// <summary>
        /// Fills the modified data for the response
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillModifiedData(PersonalDataResponse response, GoNorthUser currentUser)
        {
            response.ModifiedData = new List <TrimmedModifiedData>();

            List <AikaQuest> quests = await _questDbAccess.GetQuestsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(quests.Select(p => new TrimmedModifiedData {
                ObjectType   = "Quest",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaQuest> questRecycleBin = await _questDbAccess.GetRecycleBinQuestsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(questRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "QuestRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaQuest> questImplementationSnapshots = await _questImplementationSnapshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            response.ModifiedData.AddRange(questImplementationSnapshots.Select(p => new TrimmedModifiedData {
                ObjectType   = "QuestImplementationSnapshot",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterDetail> chapterDetail = await _chapterDetailDbAccess.GetChapterDetailsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterDetail.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterDetail",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterDetail> chapterDetailRecycleBin = await _chapterDetailDbAccess.GetRecycleBinChapterDetailsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterDetailRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterDetailRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterOverview> chapterOverview = await _chapterOverviewDbAccess.GetChapterOverviewByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterOverview.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterOverview",
                Name         = "ChapterOverview",
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterOverview> chapterOverviewRecycleBin = await _chapterOverviewDbAccess.GetRecycleBinChapterOverviewByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterOverviewRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterOverviewRecycleBin",
                Name         = "ChapterOverview",
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skills = await _skillDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skills.Select(p => new TrimmedModifiedData {
                ObjectType   = "Skill",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skillsRecyleBin = await _skillDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skillsRecyleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "SkillRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skillsImplementationSnapshots = await _skillImplementationSnapshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            response.ModifiedData.AddRange(skillsImplementationSnapshots.Select(p => new TrimmedModifiedData {
                ObjectType   = "SkillImplementationSnapshot",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <FlexFieldImportFieldValuesResultLog> skillsFieldValuesLogs = await _skillImportFieldValuesLogDbAccess.GetImportLogsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skillsFieldValuesLogs.Select(p => new TrimmedModifiedData {
                ObjectType   = "SkillFieldValueImportLog",
                Name         = p.FileName,
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skillTemplates = await _skillTemplateDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skillTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "SkillTemplate",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skillsTemplateRecyleBin = await _skillTemplateDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skillsTemplateRecyleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "SkillTemplateRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcs = await _npcDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcs.Select(p => new TrimmedModifiedData {
                ObjectType   = "Npc",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcsRecycleBin = await _npcDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcsRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "NpcRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcImplementationSnapshots = await _npcImplementationSnapshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            response.ModifiedData.AddRange(npcImplementationSnapshots.Select(p => new TrimmedModifiedData {
                ObjectType   = "NpcImplementationSnapshot",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <FlexFieldImportFieldValuesResultLog> npcsFieldValuesLogs = await _npcImportFieldValuesLogDbAccess.GetImportLogsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcsFieldValuesLogs.Select(p => new TrimmedModifiedData {
                ObjectType   = "NpcFieldValueImportLog",
                Name         = p.FileName,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcTemplates = await _npcTemplateDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "NpcTemplate",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcTemplatesRecycleBin = await _npcTemplateDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcTemplatesRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "NpcTemplateRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> items = await _itemDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(items.Select(p => new TrimmedModifiedData {
                ObjectType   = "Item",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> itemsRecyleBin = await _itemDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(itemsRecyleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "ItemReycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> itemImplementationSnapshots = await _itemImplementationSnapshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            response.ModifiedData.AddRange(itemImplementationSnapshots.Select(p => new TrimmedModifiedData {
                ObjectType   = "ItemImplementationSnapshot",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <FlexFieldImportFieldValuesResultLog> itemsFieldValuesLogs = await _itemImportFieldValuesLogDbAccess.GetImportLogsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(itemsFieldValuesLogs.Select(p => new TrimmedModifiedData {
                ObjectType   = "ItemFieldValueImportLog",
                Name         = p.FileName,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> itemTemplates = await _itemTemplateDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(itemTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "ItemTemplate",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> itemTemplatesRecyleBin = await _itemTemplateDbAccess.GetRecycleBinFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(itemTemplatesRecyleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "ItemTemplateReycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <ExportTemplate> exportTemplates = await _exportTemplateDbAccess.GetExportTemplatesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(exportTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "ExportTemplate",
                Name         = "Template " + p.TemplateType.ToString() + " " + p.Category.ToString(),
                ModifiedDate = p.ModifiedOn
            }));

            List <ExportTemplate> exportTemplatesRecycleBin = await _exportTemplateDbAccess.GetRecycleBinExportTemplatesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(exportTemplatesRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "ExportTemplateRecycleBin",
                Name         = "Template " + p.TemplateType.ToString() + " " + p.Category.ToString(),
                ModifiedDate = p.ModifiedOn
            }));


            List <IncludeExportTemplate> includeExportTemplates = await _includeExportTemplateDbAccess.GetIncludeTemplatesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(includeExportTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "IncludeExportTemplate",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <IncludeExportTemplate> includeExportTemplatesRecycleBin = await _includeExportTemplateDbAccess.GetRecycleBinIncludeTemplatesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(includeExportTemplatesRecycleBin.Select(p => new TrimmedModifiedData {
                ObjectType   = "IncludeExportTemplateRecycleBin",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));


            List <ObjectExportSnippet> objectExportSnippets = await _objectExportSnippetDbAccess.GetExportSnippetByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(objectExportSnippets.Select(p => new TrimmedModifiedData {
                ObjectType   = "ObjectExportSnippet",
                Name         = p.SnippetName,
                ModifiedDate = p.ModifiedOn
            }));

            List <KartaMap> maps = await _mapDbAccess.GetMapsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(maps.Select(p => new TrimmedModifiedData {
                ObjectType   = "Map",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KirjaPage> pages = await _pageDbAccess.GetPagesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(pages.Select(p => new TrimmedModifiedData {
                ObjectType   = "WikiPage",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KirjaPageVersion> pageVersions = await _pageVersionDbAccess.GetPageVersionsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(pageVersions.Select(p => new TrimmedModifiedData {
                ObjectType   = "WikiPageVersion",
                Name         = string.Format("{0} #{1}", p.Name, p.VersionNumber),
                ModifiedDate = p.ModifiedOn
            }));

            List <TaleDialog> dialogs = await _taleDbAccess.GetDialogsByModifiedUser(currentUser.Id);

            Dictionary <string, KortistoNpc> dialogNpcs = (await _npcDbAccess.ResolveFlexFieldObjectNames(dialogs.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (TaleDialog curDialog in dialogs)
            {
                string npcName = "DELETED";
                if (dialogNpcs.ContainsKey(curDialog.RelatedObjectId))
                {
                    npcName = dialogNpcs[curDialog.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "Dialog",
                    Name         = npcName,
                    ModifiedDate = curDialog.ModifiedOn
                });
            }

            List <TaleDialog> dialogsRecyleBin = await _taleDbAccess.GetRecycleBinDialogsByModifiedUser(currentUser.Id);

            Dictionary <string, KortistoNpc> dialogRecyleBinNpcs = (await _npcDbAccess.ResolveRecycleBinFlexFieldObjectNames(dialogsRecyleBin.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (TaleDialog curDialog in dialogsRecyleBin)
            {
                string npcName = "DELETED";
                if (dialogRecyleBinNpcs.ContainsKey(curDialog.RelatedObjectId))
                {
                    npcName = dialogRecyleBinNpcs[curDialog.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "DialogRecyleBin",
                    Name         = npcName,
                    ModifiedDate = curDialog.ModifiedOn
                });
            }

            List <TaleDialog> dialogsSnapshots = await _taleImplementationSnapshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            Dictionary <string, KortistoNpc> dialogSnapshotNpcs = (await _npcDbAccess.ResolveFlexFieldObjectNames(dialogsSnapshots.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (TaleDialog curDialogSnapshot in dialogsSnapshots)
            {
                string npcName = "DELETED";
                if (dialogNpcs.ContainsKey(curDialogSnapshot.RelatedObjectId))
                {
                    npcName = dialogNpcs[curDialogSnapshot.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "DialogSnapshot",
                    Name         = npcName,
                    ModifiedDate = curDialogSnapshot.ModifiedOn
                });
            }

            List <StateMachine> stateMachines = await _stateMachineDbAccess.GetStateMachinesByModifiedUser(currentUser.Id);

            Dictionary <string, KortistoNpc> stateMachineNpcs = (await _npcDbAccess.ResolveFlexFieldObjectNames(stateMachines.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (StateMachine curStateMachine in stateMachines)
            {
                string npcName = "DELETED";
                if (stateMachineNpcs.ContainsKey(curStateMachine.RelatedObjectId))
                {
                    npcName = stateMachineNpcs[curStateMachine.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "StateMachine",
                    Name         = npcName,
                    ModifiedDate = curStateMachine.ModifiedOn
                });
            }

            List <StateMachine> stateMachineSnapshots = await _stateMachineSnapsshotDbAccess.GetSnapshotsModifiedByUsers(currentUser.Id);

            Dictionary <string, KortistoNpc> stateMachineSnapshotNpcs = (await _npcDbAccess.ResolveFlexFieldObjectNames(stateMachineSnapshots.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (StateMachine curStateMachine in stateMachineSnapshots)
            {
                string npcName = "DELETED";
                if (stateMachineSnapshotNpcs.ContainsKey(curStateMachine.RelatedObjectId))
                {
                    npcName = stateMachineSnapshotNpcs[curStateMachine.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "StateMachineSnapshot",
                    Name         = npcName,
                    ModifiedDate = curStateMachine.ModifiedOn
                });
            }


            List <JsonConfigEntry> jsonConfigEntries = await _projectConfigDbAccess.GetJsonConfigEntriesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(jsonConfigEntries.Select(p => new TrimmedModifiedData {
                ObjectType   = "JsonConfig",
                Name         = p.Key,
                ModifiedDate = p.ModifiedOn
            }));

            List <MiscProjectConfig> miscConfigEntries = await _projectConfigDbAccess.GetMiscConfigEntriesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(miscConfigEntries.Select(p => new TrimmedModifiedData {
                ObjectType   = "MiscConfig",
                Name         = "Miscellaneous Config",
                ModifiedDate = p.ModifiedOn
            }));

            List <TaskBoard> taskBoards = await _taskBoardDbAccess.GetTaskBoardsByModifiedUser(currentUser.Id);

            foreach (TaskBoard curBoard in taskBoards)
            {
                if (curBoard.ModifiedBy == currentUser.Id)
                {
                    response.ModifiedData.Add(new TrimmedModifiedData {
                        ObjectType   = "TaskBoard",
                        Name         = curBoard.Name,
                        ModifiedDate = curBoard.ModifiedOn
                    });
                }

                List <TaskGroup> modifiedGroups = curBoard.TaskGroups.Where(t => t.ModifiedBy == currentUser.Id).ToList();
                if (modifiedGroups.Count > 0)
                {
                    response.ModifiedData.AddRange(modifiedGroups.Select(p => new TrimmedModifiedData {
                        ObjectType   = "TaskGroup",
                        Name         = p.Name,
                        ModifiedDate = p.ModifiedOn
                    }));
                }

                List <GoNorthTask> tasks = curBoard.TaskGroups.SelectMany(p => p.Tasks.Where(t => t.ModifiedBy == currentUser.Id)).ToList();
                if (tasks.Count > 0)
                {
                    response.ModifiedData.AddRange(tasks.Select(p => new TrimmedModifiedData {
                        ObjectType   = "Task",
                        Name         = p.Name,
                        ModifiedDate = p.ModifiedOn
                    }));
                }
            }

            List <GoNorthTaskType> taskGroupTypes = await _taskGroupTypeDbAccess.GetTaskTypesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(taskGroupTypes.Select(p => new TrimmedModifiedData {
                ObjectType   = "TaskGroupType",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <GoNorthTaskType> taskTypes = await _taskTypeDbAccess.GetTaskTypesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(taskTypes.Select(p => new TrimmedModifiedData {
                ObjectType   = "TaskType",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            response.SelectedProject = await _projectDbAccess.GetUserSelectedProject(currentUser.Id);
        }
Beispiel #13
0
        /// <summary>
        /// Fills the modified data for the response
        /// </summary>
        /// <param name="response">Response to send</param>
        /// <param name="currentUser">Current user</param>
        /// <returns>Task</returns>
        private async Task FillModifiedData(PersonalDataResponse response, GoNorthUser currentUser)
        {
            response.ModifiedData = new List <TrimmedModifiedData>();

            List <AikaQuest> quests = await _questDbAccess.GetQuestsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(quests.Select(p => new TrimmedModifiedData {
                ObjectType   = "Quest",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterDetail> chapterDetail = await _chapterDetailDbAccess.GetChapterDetailsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterDetail.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterDetail",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <AikaChapterOverview> chapterOverview = await _chapterOverviewDbAccess.GetChapterOverviewByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(chapterOverview.Select(p => new TrimmedModifiedData {
                ObjectType   = "ChapterOverview",
                Name         = "ChapterOverview",
                ModifiedDate = p.ModifiedOn
            }));

            List <EvneSkill> skills = await _skillDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(skills.Select(p => new TrimmedModifiedData {
                ObjectType   = "Skill",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KortistoNpc> npcs = await _npcDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(npcs.Select(p => new TrimmedModifiedData {
                ObjectType   = "Npc",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <StyrItem> items = await _itemDbAccess.GetFlexFieldObjectsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(items.Select(p => new TrimmedModifiedData {
                ObjectType   = "Item",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <ExportTemplate> exportTemplates = await _exportTemplateDbAccess.GetExportTemplatesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(exportTemplates.Select(p => new TrimmedModifiedData {
                ObjectType   = "ExportTemplate",
                Name         = "Template " + p.TemplateType.ToString() + " " + p.Category.ToString(),
                ModifiedDate = p.ModifiedOn
            }));

            List <KartaMap> maps = await _mapDbAccess.GetMapsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(maps.Select(p => new TrimmedModifiedData {
                ObjectType   = "Map",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KirjaPage> pages = await _pageDbAccess.GetPagesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(pages.Select(p => new TrimmedModifiedData {
                ObjectType   = "WikiPage",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <KirjaPageVersion> pageVersions = await _pageVersionDbAccess.GetPageVersionsByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(pageVersions.Select(p => new TrimmedModifiedData {
                ObjectType   = "WikiPageVersion",
                Name         = string.Format("{0} #{1}", p.Name, p.VersionNumber),
                ModifiedDate = p.ModifiedOn
            }));

            List <TaleDialog> dialogs = await _taleDbAccess.GetDialogsByModifiedUser(currentUser.Id);

            Dictionary <string, KortistoNpc> dialogNpcs = (await _npcDbAccess.ResolveFlexFieldObjectNames(dialogs.Select(n => n.RelatedObjectId).ToList())).ToDictionary(n => n.Id);

            foreach (TaleDialog curDialog in dialogs)
            {
                string npcName = "DELETED";
                if (dialogNpcs.ContainsKey(curDialog.RelatedObjectId))
                {
                    npcName = dialogNpcs[curDialog.RelatedObjectId].Name;
                }
                response.ModifiedData.Add(new TrimmedModifiedData {
                    ObjectType   = "Dialog",
                    Name         = npcName,
                    ModifiedDate = curDialog.ModifiedOn
                });
            }

            List <TaleConfigEntry> taleConfigEntries = await _taleConfigDbAccess.GetConfigEntriesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(taleConfigEntries.Select(p => new TrimmedModifiedData {
                ObjectType   = "TaleConfig",
                Name         = p.Key,
                ModifiedDate = p.ModifiedOn
            }));

            List <TaskBoard> taskBoards = await _taskBoardDbAccess.GetTaskBoardsByModifiedUser(currentUser.Id);

            foreach (TaskBoard curBoard in taskBoards)
            {
                if (curBoard.ModifiedBy == currentUser.Id)
                {
                    response.ModifiedData.Add(new TrimmedModifiedData {
                        ObjectType   = "TaskBoard",
                        Name         = curBoard.Name,
                        ModifiedDate = curBoard.ModifiedOn
                    });
                }

                List <TaskGroup> modifiedGroups = curBoard.TaskGroups.Where(t => t.ModifiedBy == currentUser.Id).ToList();
                if (modifiedGroups.Count > 0)
                {
                    response.ModifiedData.AddRange(modifiedGroups.Select(p => new TrimmedModifiedData {
                        ObjectType   = "TaskGroup",
                        Name         = p.Name,
                        ModifiedDate = p.ModifiedOn
                    }));
                }

                List <GoNorthTask> tasks = curBoard.TaskGroups.SelectMany(p => p.Tasks.Where(t => t.ModifiedBy == currentUser.Id)).ToList();
                if (tasks.Count > 0)
                {
                    response.ModifiedData.AddRange(tasks.Select(p => new TrimmedModifiedData {
                        ObjectType   = "Task",
                        Name         = p.Name,
                        ModifiedDate = p.ModifiedOn
                    }));
                }
            }

            List <GoNorthTaskType> taskGroupTypes = await _taskGroupTypeDbAccess.GetTaskTypesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(taskGroupTypes.Select(p => new TrimmedModifiedData {
                ObjectType   = "TaskGroupType",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));

            List <GoNorthTaskType> taskTypes = await _taskTypeDbAccess.GetTaskTypesByModifiedUser(currentUser.Id);

            response.ModifiedData.AddRange(taskTypes.Select(p => new TrimmedModifiedData {
                ObjectType   = "TaskType",
                Name         = p.Name,
                ModifiedDate = p.ModifiedOn
            }));
        }