public void LoadStats() { string savedJSON = Utils.ReadTextFromFile(STAT_FILE); if (!string.IsNullOrEmpty(savedJSON)) { PlayerStatModel stat = Utils.DeserializeObject <PlayerStatModel>(savedJSON); currentStats = stat; } else { currentStats = new PlayerStatModel(); } }
public static Wrapper GetPlayerStatsFromGuesses(IEnumerable <GuessModel> guesses, List <MatchModel> matches) { Wrapper wrapper = new Wrapper(); PlayerStatModel playerStatModel = new PlayerStatModel(); playerStatModel.Count = guesses.Count(); PlayerStatModel playerStatModelBefore = new PlayerStatModel(); //int lastId = matches.Where(m => m.HomeScore.HasValue).OrderBy(m => m.Date).Last().Id; IEnumerable <int> matchesTemp = matches.Where(m => m.HomeScore.HasValue).OrderBy(m => m.Date).Select(m => m.Id); IEnumerable <int> lastIds = matchesTemp.Skip(matchesTemp.Count() - 3); PlayerMatchesWithGuesses playerMatchesWithGuesses = new PlayerMatchesWithGuesses(); foreach (var guess in guesses) { MatchModel match = matches.Where(m => m.Id == guess.MatchId).First(); if (match.HomeScore.HasValue) //game has been playing { if (match.HomeScore.Value == guess.HomeScore && match.AwayScore.Value == guess.AwayScore) { playerStatModel.TT++; playerStatModel.TTPoint += GuessPoint.TTPoint; //if (match.Id != lastId) if (!lastIds.Contains(match.Id)) { playerStatModelBefore.TT++; playerStatModelBefore.TTPoint += GuessPoint.TTPoint; } playerMatchesWithGuesses.TTGuessesByMatch.Add(guess.Id, match.Id); } else { bool isGK = false; if (Math.Abs(match.HomeScore.Value - match.AwayScore.Value) == Math.Abs(guess.HomeScore - guess.AwayScore) && ((match.HomeScore.Value > match.AwayScore.Value && guess.HomeScore > guess.AwayScore) || (match.HomeScore.Value <= match.AwayScore.Value && guess.HomeScore <= guess.AwayScore))) { //playerStats.GK++; isGK = true; } bool isMK = false; if ((match.HomeScore.Value > match.AwayScore.Value && guess.HomeScore > guess.AwayScore) || (match.HomeScore.Value < match.AwayScore.Value && guess.HomeScore < guess.AwayScore) || (match.HomeScore.Value == match.AwayScore.Value && guess.HomeScore == guess.AwayScore)) { //playerStats.MK++; isMK = true; } bool isCSG = false; if (match.HomeScore.Value == guess.HomeScore || match.AwayScore.Value == guess.AwayScore) { //playerStats.CSG++; isCSG = true; //if (isMK) //{ // playerStats.Bonus += 2; //} } bool isOG = false; if (match.HomeScore.Value + match.AwayScore.Value == guess.HomeScore + guess.AwayScore) { //playerStats.OG++; isOG = true; } if (isMK && isCSG) { playerStatModel.MKCSGPoint += GuessPoint.MKCSGPoint; playerStatModel.MKCSG++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.MKCSG++; playerStatModelBefore.MKCSGPoint += GuessPoint.MKCSGPoint; } playerMatchesWithGuesses.MKCSGGuessesByMatch.Add(guess.Id, match.Id); } else { if (isMK && isGK) { if (match.HomeScore.Value == match.AwayScore.Value) { playerStatModel.MKGKPoint += GuessPoint.DrawMKPoint; playerStatModel.MKGKDraw++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.MKGKPoint += GuessPoint.DrawMKPoint; playerStatModelBefore.MKGKDraw++; } playerMatchesWithGuesses.MKGKDRAWGuessesByMatch.Add(guess.Id, match.Id); } else { playerStatModel.MKGKPoint += GuessPoint.MKGKPoint; playerStatModel.MKGK++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.MKGKPoint += GuessPoint.MKGKPoint; playerStatModelBefore.MKGK++; } playerMatchesWithGuesses.MKGKGuessesByMatch.Add(guess.Id, match.Id); } } else { if (isMK && isOG) { playerStatModel.MKOGPoint += GuessPoint.MKOGPoint; playerStatModel.MKOG++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.MKOGPoint += GuessPoint.MKOGPoint; playerStatModelBefore.MKOG++; } playerMatchesWithGuesses.MKOGGuessesByMatch.Add(guess.Id, match.Id); } else { if (isMK) { playerStatModel.MKPoint += GuessPoint.MKPoint; playerStatModel.MK++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.MKPoint += GuessPoint.MKPoint; playerStatModelBefore.MK++; } playerMatchesWithGuesses.MKGuessesByMatch.Add(guess.Id, match.Id); } else { if (isCSG) { playerStatModel.CSGPoint += GuessPoint.CSGPoint; playerStatModel.CSG++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.CSGPoint += GuessPoint.CSGPoint; playerStatModelBefore.CSG++; } playerMatchesWithGuesses.CSGGuessesByMatch.Add(guess.Id, match.Id); } else { if (isOG) { playerStatModel.OGPoint += GuessPoint.OGPoint; playerStatModel.OG++; if (!lastIds.Contains(match.Id)) { playerStatModelBefore.OGPoint += GuessPoint.OGPoint; playerStatModelBefore.OG++; } playerMatchesWithGuesses.OGGuessesByMatch.Add(guess.Id, match.Id); } else { playerMatchesWithGuesses.NONEGuessesByMatch.Add(guess.Id, match.Id); playerStatModel.NONE++; } } } } } } } } } wrapper.PlayerStatModel = playerStatModel; wrapper.PlayerStatModelBefore = playerStatModelBefore; wrapper.PlayerMatchesWithGuesses = playerMatchesWithGuesses; return(wrapper); //return playerStats; }