private async Task <List <EncounterGroupViewModel> > BuildEncounters(ReportData reportData) { var result = new List <EncounterGroupViewModel>(); var bossNames = new HashSet <string>(reportData.fights.Select(s => s.name)); foreach (var bossName in bossNames) { var encounterGroup = new EncounterGroupViewModel(); encounterGroup.BossName = bossName; encounterGroup.ReportId = Report.ReportId; result.Add(encounterGroup); } IEncounterConfigurationManager encounterConfigurationManager; List <EncounterConfigurationData> configurations = new List <EncounterConfigurationData>(); if (DI.TryGetService <IEncounterConfigurationManager>(out encounterConfigurationManager)) { configurations = await encounterConfigurationManager.GetAllAsync(); } var configurationViewModels = configurations.Select(config => new EncounterConfigurationViewModel(config)).ToList(); foreach (var group in result) { var configurationMatch = configurationViewModels.FirstOrDefault(d => d.IsValidForBoss(group.BossName)); group.Configuration = configurationMatch ?? new EncounterConfigurationViewModel() { BossMapping = group.BossName }; } var view = CollectionViewSource.GetDefaultView(result); if (result.Count > 0) { view?.MoveCurrentToFirst(); } return(result); }
private async Task RunAnalysisAsync(EncounterGroupViewModel encounterGroupViewModel, SimpleListItemViewModel notification) { await encounterGroupViewModel.LoadAsync(notification); }