private async Task UpdateAchievements() { await BackupData.WaitForInitAsync(); Achievements.Clear(); if (IsLoggedIn) //current user is logged in to the server { try { var newlyUnlocked = await IoCManager.Resolve <IAchievementFetcher>().UpdateAchievements(); AchievementNotification.QueueAchievementNotifications(newlyUnlocked); var achievementCounter = 0; var unlockedCounter = 0; foreach (var achievement in DbManager.DataAccess.Achievements().GetAchievements()) { Achievements.Add(AchievementViewModel.CreateFrom(achievement)); if (achievement.IsUnlocked) { unlockedCounter++; } achievementCounter++; } Score = $"{Strings.AchievementsScreenView_Score} {AppSharedData.CurrentAchievementsScore()}"; AchievementCount = $"{unlockedCounter + "/" + achievementCounter}{Strings.AchievementsScreenView_Achievement_Count}"; } catch (Exception e) { Debug.WriteLine(e); if ((((WebException)e.InnerException).Response as HttpWebResponse)?.StatusCode == HttpStatusCode.InternalServerError) { await IoCManager.Resolve <INavigationService>() .DisplayAlert(Strings.Alert_Server_Error_Title, Strings.Alert_Server_Error_Description, Strings.Alert_Confirm); } else { await IoCManager.Resolve <INavigationService>() .DisplayAlert(Strings.Alert_Network_Error_Title, Strings.Alert_Network_Error_Description, Strings.Alert_Confirm); } } } }
public AchievementsDetailsExhibitPageViewModel(ExhibitsVisitedAchievement exhibitsVisitedAchievement) { var exhibits = DbManager.DataAccess.Exhibits().GetExhibits().ToList(); var visited = exhibits.Count(it => it.Unlocked); var total = exhibits.Count; Exhibits = new ObservableCollection <ExhibitViewModel>(exhibits.Select(it => new ExhibitViewModel { Name = it.Name, Image = it.Image.GetImageSource(), Unlocked = it.Unlocked })); Title = exhibitsVisitedAchievement.Title; Score = $"{Strings.AchievementsScreenView_Score} {AppSharedData.CurrentAchievementsScore()}"; VisitedText = string.Format(Strings.AchievementsDetailsExhibitView_VisitedMOfNExhibits, visited, total); }