public override async Task FollowUp() { if (!string.IsNullOrEmpty(ActivityUI.ExistingGroupsList.Value)) { var previousGroup = SelectedGroup; if (string.IsNullOrEmpty(previousGroup) || !string.Equals(previousGroup, ActivityUI.ExistingGroupsList.Value)) { var stats = await _statXIntegration.GetStatsForGroup(StatXUtilities.GetStatXAuthToken(AuthorizationToken), ActivityUI.ExistingGroupsList.Value); if (stats.Any(x => string.IsNullOrEmpty(x.Title))) { StatXUtilities.AddAdvisoryMessage(Storage); } else { if (Storage.CratesOfType <AdvisoryMessagesCM>().FirstOrDefault() != null) { ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); } Storage.RemoveByLabel("Advisories"); } ActivityUI.ExistingGroupStats.ListItems = stats .Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); var firstStat = stats.FirstOrDefault(); if (firstStat != null) { ActivityUI.ExistingGroupStats.SelectByValue(firstStat.Id); ActivityUI.StatTitle.TextValue = firstStat.Title; ActivityUI.StatNotes.TextValue = firstStat.Notes; var statDTO = firstStat as GeneralStatWithItemsDTO; if (statDTO != null) { if (statDTO.VisualType == StatTypes.PickList) { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser("Current Index", "CurrentIndex", requestUpstream: true, groupLabelText: "Available Stat Properties")); } else { foreach (var item in statDTO.Items) { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(item.Name, item.Name, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } else { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(string.IsNullOrEmpty(firstStat.Title) ? firstStat.Id : firstStat.Title, string.IsNullOrEmpty(firstStat.Title) ? firstStat.Id : firstStat.Title, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } SelectedGroup = ActivityUI.ExistingGroupsList.Value; //refresh statx groups ActivityUI.ExistingGroupsList.ListItems = (await _statXIntegration.GetGroups(StatXUtilities.GetStatXAuthToken(AuthorizationToken))) .Select(x => new ListItem { Key = x.Name, Value = x.Id }).ToList(); ActivityUI.ExistingGroupsList.Value = SelectedGroup; } else { ActivityUI.StatTitle.Value = string.Empty; ActivityUI.StatNotes.Value = string.Empty; ActivityUI.ExistingGroupStats.ListItems.Clear(); ActivityUI.ExistingGroupStats.selectedKey = string.Empty; ActivityUI.ExistingGroupStats.Value = string.Empty; SelectedGroup = string.Empty; } if (!string.IsNullOrEmpty(ActivityUI.ExistingGroupStats.Value)) { var previousStat = SelectedStat; var stats = await _statXIntegration.GetStatsForGroup(StatXUtilities.GetStatXAuthToken(AuthorizationToken), ActivityUI.ExistingGroupsList.Value); if (stats.Any(x => string.IsNullOrEmpty(x.Title))) { StatXUtilities.AddAdvisoryMessage(Storage); } else { if (Storage.CratesOfType <AdvisoryMessagesCM>().FirstOrDefault() != null) { ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); } Storage.RemoveByLabel("Advisories"); } if (string.IsNullOrEmpty(previousStat) || !string.Equals(previousStat, ActivityUI.ExistingGroupStats.Value)) { var currentStat = stats.FirstOrDefault(x => x.Id == ActivityUI.ExistingGroupStats.Value); if (currentStat != null) { ActivityUI.ClearDynamicFields(); var statDTO = currentStat as GeneralStatWithItemsDTO; if (statDTO != null && statDTO.Items.Any()) { if (statDTO.VisualType == StatTypes.PickList) { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser("Current Index", "CurrentIndex", requestUpstream: true, groupLabelText: "Available Stat Properties")); } else { foreach (var item in statDTO.Items) { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(item.Name, item.Name, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } else { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(string.IsNullOrEmpty(currentStat.Title) ? currentStat.Id : currentStat.Title, string.IsNullOrEmpty(currentStat.Title) ? currentStat.Id : currentStat.Title, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } #region Refresh Stat Items to Track for Changes in app SelectedStat = ActivityUI.ExistingGroupStats.Value; ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); ActivityUI.ExistingGroupStats.Value = SelectedStat; var statToCheck = stats.FirstOrDefault(x => x.Id == SelectedStat); //check for changes in statValue Array if (statToCheck != null) { ActivityUI.ExistingGroupStats.selectedKey = string.IsNullOrEmpty(statToCheck.Title) ? statToCheck.Id : statToCheck.Title; var statDTO = statToCheck as GeneralStatWithItemsDTO; if (statDTO != null && statDTO.Items.Any()) { var oldStatNames = ActivityUI.StatValues.Select(x => x.Name).ToList(); var newStatNames = new List <string>(); if (statDTO.VisualType != StatTypes.PickList) { newStatNames = statDTO.Items.Select(x => x.Name).ToList(); //recreate new items var newItems = newStatNames.Where(x => !oldStatNames.Contains(x)).ToList(); var oldItemsToDelete = oldStatNames.Where(x => !newStatNames.Contains(x)).ToList(); foreach (var item in oldItemsToDelete.ToList()) { var itemToDelete = ActivityUI.StatValues.FirstOrDefault(x => x.Name == item); if (itemToDelete != null) { ActivityUI.StatValues.Remove(itemToDelete); } } foreach (var item in newItems) { ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(item, item, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } else { var currentTextSource = ActivityUI.StatValues.FirstOrDefault()?.Name; if (currentTextSource != (string.IsNullOrEmpty(statToCheck.Title) ? statToCheck.Id : statToCheck.Title)) { ActivityUI.StatValues?.Clear(); ActivityUI.StatValues.Add(UiBuilder.CreateSpecificOrUpstreamValueChooser(string.IsNullOrEmpty(statToCheck.Title) ? statToCheck.Id : statToCheck.Title, string.IsNullOrEmpty(statToCheck.Title) ? statToCheck.Id : statToCheck.Title, requestUpstream: true, groupLabelText: "Available Stat Properties")); } } } #endregion } else { ActivityUI.StatTitle.Value = string.Empty; ActivityUI.StatNotes.Value = string.Empty; ActivityUI.ClearDynamicFields(); ActivityUI.ExistingGroupStats.ListItems.Clear(); ActivityUI.ExistingGroupStats.selectedKey = string.Empty; ActivityUI.ExistingGroupStats.Value = string.Empty; SelectedStat = string.Empty; } }
public override async Task FollowUp() { if (!string.IsNullOrEmpty(ActivityUI.ExistingGroupsList.Value)) { var previousGroup = SelectedGroup; if (string.IsNullOrEmpty(previousGroup) || !string.Equals(previousGroup, ActivityUI.ExistingGroupsList.Value)) { var stats = await _statXIntegration.GetStatsForGroup(StatXUtilities.GetStatXAuthToken(AuthorizationToken), ActivityUI.ExistingGroupsList.Value); if (stats.Any(x => string.IsNullOrEmpty(x.Title))) { StatXUtilities.AddAdvisoryMessage(Storage); } else { if (Storage.CratesOfType <AdvisoryMessagesCM>().FirstOrDefault() != null) { ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); } Storage.RemoveByLabel("Advisories"); } ActivityUI.ExistingGroupStats.ListItems = stats .Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); var firstStat = stats.FirstOrDefault(); if (firstStat != null) { ActivityUI.ExistingGroupStats.SelectByValue(firstStat.Id); } CrateSignaller.ClearAvailableCrates(); CrateSignaller.MarkAvailableAtRuntime <StandardPayloadDataCM>(RunTimeCrateLabel) .AddFields(CreateStatValueFields(StatXUtilities.MapToStatItemCrateManifest(firstStat))); } SelectedGroup = ActivityUI.ExistingGroupsList.Value; ActivityUI.ExistingGroupsList.ListItems = (await _statXIntegration.GetGroups(StatXUtilities.GetStatXAuthToken(AuthorizationToken))) .Select(x => new ListItem { Key = x.Name, Value = x.Id }).ToList(); ActivityUI.ExistingGroupsList.Value = SelectedGroup; } else { ActivityUI.ExistingGroupStats.ListItems.Clear(); ActivityUI.ExistingGroupStats.selectedKey = string.Empty; ActivityUI.ExistingGroupStats.Value = string.Empty; SelectedGroup = string.Empty; } if (!string.IsNullOrEmpty(ActivityUI.ExistingGroupStats.Value)) { var previousStat = SelectedStat; var stats = await _statXIntegration.GetStatsForGroup(StatXUtilities.GetStatXAuthToken(AuthorizationToken), ActivityUI.ExistingGroupsList.Value); if (stats.Any(x => string.IsNullOrEmpty(x.Title))) { StatXUtilities.AddAdvisoryMessage(Storage); } else { if (Storage.CratesOfType <AdvisoryMessagesCM>().FirstOrDefault() != null) { ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); } Storage.RemoveByLabel("Advisories"); } if (string.IsNullOrEmpty(previousStat) || !string.Equals(previousStat, ActivityUI.ExistingGroupStats.Value)) { var currentStat = stats.FirstOrDefault(x => x.Id == ActivityUI.ExistingGroupStats.Value); if (currentStat != null) { CrateSignaller.ClearAvailableCrates(); CrateSignaller.MarkAvailableAtRuntime <StandardPayloadDataCM>(RunTimeCrateLabel).AddFields(CreateStatValueFields(StatXUtilities.MapToStatItemCrateManifest(currentStat))); } } SelectedStat = ActivityUI.ExistingGroupStats.Value; ActivityUI.ExistingGroupStats.ListItems = stats.Select(x => new ListItem { Key = string.IsNullOrEmpty(x.Title) ? x.Id : x.Title, Value = x.Id }).ToList(); ActivityUI.ExistingGroupStats.Value = SelectedStat; EventSubscriptions.Subscriptions?.Clear(); EventSubscriptions.Manufacturer = "StatX"; EventSubscriptions.Add("StatXValueChange_" + SelectedStat.Substring(0, 18)); } else { CrateSignaller.ClearAvailableCrates(); ActivityUI.ExistingGroupStats.ListItems.Clear(); ActivityUI.ExistingGroupStats.selectedKey = string.Empty; ActivityUI.ExistingGroupStats.Value = string.Empty; SelectedStat = string.Empty; } }