public async Task Fill() { this.labelTop.Text = "loading..."; int venueID = FVOConfig.LoadFromKeyChain(App.KeyChain).VenueID; var resultsWeb = await App.WebService.GetResultsAtVenue(venueID); var results = resultsWeb.Select(r => r.ToResult()).ToList(); var scores = await App.WebService.GetScoresAtVenue(venueID); bool failedToLoadFromWeb = results == null || scores == null; if (failedToLoadFromWeb) { scores = App.Repository.GetScores(true); results = App.Repository.GetResults(true).ToList(); } var matches = (from score in scores select SnookerMatchScore.FromScore(score.AthleteAID, score)).ToList(); var breaks = (from result in results select SnookerBreak.FromResult(result)).ToList(); await new CacheHelper().LoadFromWebserviceIfNecessary_People(App.Cache, results, scores); new CacheHelper().LoadNamesFromCache(App.Cache, breaks); new CacheHelper().LoadNamesFromCache(App.Cache, matches); listOfMatchesControl.Fill(matches); listOfBreaksControl.Fill(breaks); this.labelTop.Text = failedToLoadFromWeb ? "Failed to load. Internet issues?" : "History"; }
public async Task <FullSnookerVenueData> Load(int venueID) { FullSnookerVenueData data = new FullSnookerVenueData(); data.VenueID = venueID; VenueWebModel venue = await App.WebService.GetVenue(venueID); if (venue == null) { return(null); } data.Venue = venue; App.Cache.Venues.Put(venue); var webResults = await App.WebService.GetResultsAtVenue(venueID); if (webResults != null) { var results = (from r in webResults select r.ToResult()).ToList(); data.Breaks = (from i in results select SnookerBreak.FromResult(i)).ToList(); } var scores = await App.WebService.GetScoresAtVenue(venueID); if (scores != null) { data.Matches = (from i in scores select SnookerMatchScore.FromScore(0, i)).ToList(); } var gameHosts = await App.WebService.GetGameHostsAtVenue(venueID, true); if (gameHosts != null) { data.GameHosts = (from i in gameHosts orderby i.When descending select i).ToList(); data.GameHostsInThePast = (from i in gameHosts where i.When < DateTime.UtcNow orderby i.When descending select i).ToList(); data.GameHostsInTheFuture = (from i in gameHosts where i.When >= DateTime.UtcNow orderby i.When ascending select i).ToList(); } await loadPeople(data); this.putPlaceholdersIfInternetIssues(data); return(data); }
public async Task <FullSnookerPlayerData> LoadForPlayer(int athleteID) { FullSnookerPlayerData data = new FullSnookerPlayerData(); data.AthleteID = athleteID; var webResults = await App.WebService.GetResults(data.AthleteID); if (webResults != null) { var results = (from r in webResults select r.ToResult()).ToList(); data.Breaks = (from i in results select SnookerBreak.FromResult(i)).ToList(); } else { data.InternetIssues = true; } var scores = await App.WebService.GetScores(data.AthleteID); if (scores != null) { data.Matches = (from i in scores select SnookerMatchScore.FromScore(data.AthleteID, i)).ToList(); } else { data.InternetIssues = true; } await loadOpponents(data); await loadVenues(data); data.Person = await App.WebService.GetPersonByID(data.AthleteID); if (data.Person == null) { data.InternetIssues = true; } this.putPlaceholdersIfInternetIssues(data); return(data); }
public async Task <FullSnookerPlayerData> LoadForMe() { DateTime timeBegin = DateTime.Now; FullSnookerPlayerData data = new FullSnookerPlayerData(); data.AthleteID = App.Repository.GetMyAthleteID(); var results = App.Repository.GetResults(data.AthleteID, false); data.Breaks = (from i in results select SnookerBreak.FromResult(i)).ToList(); var scores = App.Repository.GetScores(false); data.Matches = (from i in scores select SnookerMatchScore.FromScore(data.AthleteID, i)).ToList(); await loadOpponents(data); await loadVenues(data); data.Person = await App.WebService.GetPersonByID(data.AthleteID); if (data.Person == null) { data.InternetIssues = true; var athlete = App.Repository.GetAthlete(data.AthleteID); data.Person = new PersonFullWebModel(); data.Person.CopyFrom(athlete); } this.putPlaceholdersIfInternetIssues(data); if (data.InternetIssues == false && data.Person != null) { await App.Cache.LoadFromWebserviceIfNecessary_Metro(data.Person.MetroID); } TraceHelper.TraceTimeSpan(timeBegin, DateTime.Now, "FullSnookerPlayerDataHelper.LoadForMe"); return(data); }
void fillPausedMatches() { // incompleted matches in the db var scoreObjs = (from i in App.Repository.GetScores(false) where i.IsUnfinished == true orderby i.TimeModified descending select i).ToList(); this.panelNewMatch.IsVisible = scoreObjs.Count() == 0; this.panelPausedMatches.Children.Clear(); foreach (var scoreObj in scoreObjs) { var match = SnookerMatchScore.FromScore(scoreObj.AthleteAID, scoreObj); var matchMetadata = new MetadataHelper().FromScoreForYou(match); var metadataControl = new SnookerMatchMetadataControl(matchMetadata, true) { Padding = new Thickness(0, 0, 0, 0) }; this.panelPausedMatches.Children.Add(metadataControl); var buttonDelete = new BybButton() { Text = "Cancel the match", Style = (Style)App.Current.Resources["BlackButtonStyle"], HorizontalOptions = LayoutOptions.FillAndExpand, }; buttonDelete.Clicked += async(s1, e1) => { if (await App.Navigator.NavPage.DisplayAlert("Byb", "Delete this match?", "Yes, delete", "Cancel") == true) { App.Repository.SetIsDeletedOnScore(scoreObj.ScoreID, true); this.DoOnOpen(); } }; var buttonContinue = new BybButton() { Text = "Continue the match", Style = (Style)App.Current.Resources["LargeButtonStyle"], HorizontalOptions = LayoutOptions.FillAndExpand, }; buttonContinue.Clicked += async(s1, e1) => { new MetadataHelper().ToScore(matchMetadata, match); var page = new RecordMatchPage(match, false); await App.Navigator.NavPage.Navigation.PushModalAsync(page); }; this.panelPausedMatches.Children.Add(new StackLayout() { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.FillAndExpand, Padding = new Thickness(0, 12, 0, 0), Spacing = 1, Children = { buttonDelete, buttonContinue } }); this.panelPausedMatches.Children.Add(new BoxView() { HeightRequest = 25 }); // load opponent names from web if it's not loaded yet if (matchMetadata.OpponentAthleteID > 0 && string.IsNullOrEmpty(matchMetadata.OpponentAthleteName) == true) { Task.Run(async() => { await App.Cache.LoadFromWebserviceIfNecessary_People(new List <int> () { matchMetadata.OpponentAthleteID }); var person = App.Cache.People.Get(matchMetadata.OpponentAthleteID); if (person != null) { Device.BeginInvokeOnMainThread(() => { match.OpponentName = person.Name; match.OpponentPicture = person.Picture; matchMetadata.OpponentAthleteName = person.Name; matchMetadata.OpponentPicture = person.Picture; metadataControl.Refill(); }); } }); } ; } }
private PersonFullWebModel getFull(int myAthleteID, int athleteID) { var _person = this.getBasic(myAthleteID, db.Athletes.Where(a => a.AthleteID == athleteID)).FirstOrDefault(); if (_person == null) { return(null); } var person = new PersonFullWebModel(); _person.CopyTo(person); var athlete = (from a in db.Athletes.Include("Friendships1").Include("Friendships2").Include("ScoreAs").Include("ScoreBs").Include("Results") where a.AthleteID == athleteID select a).Single(); // added in 01/25/2016: person.IsFriendRequestSentByThisPerson = false; if (person.IsFriend == false) { if (athlete.Friendships1.Where(i => i.Athlete1ID == athleteID && i.FriendshipStatus == (int)FriendshipStatusEnum.Initiated).Count() == 1) { person.IsFriendRequestSentByThisPerson = true; } } // basic stats person.SnookerStats = new SnookerStatsModel(); person.SnookerStats.CountContributions = (from i in athlete.VenueEdits select i.VenueID).Distinct().Count(); person.SnookerStats.CountBests = (from r in athlete.Results where r.OpponentConfirmation != (int)OpponentConfirmationEnum.Declined where r.IsDeleted == false select r).Count(); person.SnookerStats.CountMatches = (from s in athlete.ScoreAs where s.AthleteBConfirmation != (int)OpponentConfirmationEnum.Declined where s.IsDeleted == false select s).Count() + (from s in athlete.ScoreBs where s.AthleteBConfirmation == (int)OpponentConfirmationEnum.Confirmed where s.IsDeleted == false select s).Count(); person.SnookerStats.BestBallCount = (from r in athlete.Results where r.OpponentConfirmation != (int)OpponentConfirmationEnum.Declined where r.IsDeleted == false select r).Max(i => i.Count2) ?? 0; person.SnookerStats.BestPoints = (from r in athlete.Results where r.OpponentConfirmation != (int)OpponentConfirmationEnum.Declined where r.IsDeleted == false select r).Max(i => i.Count) ?? 0; // best frame score //var matchesA = (from i in athlete.ScoreAs // select SnookerMatchScore.FromScore(myAthleteID, i)); //var matchesB = (from i in athlete.ScoreBs // where i.AthleteBConfirmation == (int)OpponentConfirmationEnum.Confirmed // select SnookerMatchScore.FromScore(myAthleteID, i)); List <SnookerMatchScore> matches = new List <SnookerMatchScore>(); matches.AddRange(from i in athlete.ScoreAs where i.IsDeleted == false select SnookerMatchScore.FromScore(myAthleteID, i)); matches.AddRange(from i in athlete.ScoreBs where i.AthleteBConfirmation == (int)OpponentConfirmationEnum.Confirmed where i.IsDeleted == false select SnookerMatchScore.FromScore(myAthleteID, i)); person.SnookerStats.BestFrameScore = (from m in matches from f in m.FrameScores select(int?) f.A).Max() ?? 0; //int maxA = (from m in matchesA // from f in m.FrameScores // select (int?)f.A).Max() ?? 0; //int maxB = (from m in matchesB // from f in m.FrameScores // select (int?)f.B).Max() ?? 0; //person.SnookerStats.BestFrameScore = System.Math.Max(maxA, maxB); // number of venues var venues1 = (from r in athlete.Results where r.OpponentConfirmation != (int)OpponentConfirmationEnum.Declined where r.IsDeleted == false where r.VenueID != null select r.VenueID.Value).Distinct().ToList(); var venues2 = (from s in athlete.ScoreAs where s.AthleteBConfirmation != (int)OpponentConfirmationEnum.Declined where s.IsDeleted == false where s.VenueID != null select s.VenueID.Value).Distinct().ToList(); var venues3 = (from s in athlete.ScoreBs where s.AthleteBConfirmation != (int)OpponentConfirmationEnum.Declined where s.IsDeleted == false where s.VenueID != null select s.VenueID.Value).Distinct().ToList(); List <int> venues = venues1.ToList(); foreach (var i in venues2) { if (venues.Contains(i) == false) { venues.Add(i); } } foreach (var i in venues3) { if (venues.Contains(i) == false) { venues.Add(i); } } person.SnookerStats.CountVenuesPlayed = venues.Count(); // number of opponents var opponents1 = (from r in athlete.Results where r.OpponentAthleteID != null && r.OpponentAthleteID != 0 where r.OpponentConfirmation != (int)OpponentConfirmationEnum.Declined where r.IsDeleted == false select r.OpponentAthleteID.Value).Distinct().ToList(); var opponents2 = (from s in athlete.ScoreAs where s.AthleteBID != 0 where s.AthleteBConfirmation != (int)OpponentConfirmationEnum.Declined where s.IsDeleted == false select s.AthleteBID).Distinct().ToList(); var opponents3 = (from s in athlete.ScoreBs where s.AthleteAID != 0 where s.AthleteBConfirmation != (int)OpponentConfirmationEnum.Declined where s.IsDeleted == false select s.AthleteAID).Distinct().ToList(); List <int> opponents = opponents1.ToList(); foreach (var i in opponents2) { if (opponents.Contains(i) == false) { opponents.Add(i); } } foreach (var i in opponents3) { if (opponents.Contains(i) == false) { opponents.Add(i); } } person.SnookerStats.CountOpponentsPlayed = opponents.Count; return(person); }