public async Task <IUserStats> Update(IUserStats userStats) { try { if (userStats == null || userStats.UserName == null) { throw new ArgumentNullException(nameof(userStats)); } using var cnn = _createdDbConnection(); cnn.Open(); string query = $"UPDATE UserStats SET {_getSqlUpdateFields(typeof(UserStats))}" .Replace("UserName=@UserName,", ""); query += " WHERE UserName=@UserName"; if (await cnn.ExecuteAsync(query, userStats) != 1) { throw new Exception($"ExecuteAsync failed: {query}"); } return(userStats); } catch (Exception ex) { _log?.ErrorAsync("Error updating user stats", ex); throw; } }
public void Load(IUserProfileModel userProfileModel) { IUserInventory inventory = LoadInventory(); IUserStats userStats = LoadUserStats(); IGameOptions gameOptions = LoadGameOptions(); userProfileModel.UserProfile = new UserProfile(inventory, userStats, gameOptions); }
public async Task <IUserStats> Add(IUserStats userStats) { try { if (userStats == null) { throw new ArgumentNullException(nameof(userStats)); } using var cnn = _createdDbConnection(); cnn.Open(); var transaction = cnn.BeginTransaction(); // Validate username var userId = await cnn.ExecuteScalarAsync($"SELECT UserName FROM UserStats WHERE UserName=@UserName", new { userStats.UserName }, transaction); if (userId != null) { throw new InvalidConstraintException($"Stats for {userStats.UserName} already exist."); } // Create User Stats string query = $"INSERT INTO UserStats {_getSqlInsertFields(typeof(UserStats))}"; var res = await cnn.ExecuteAsync(query, userStats, transaction); if (res == 0) { throw new Exception($"ExecuteAsync failed: {query} [{userStats.ToJson()}]"); } transaction.Commit(); return(userStats); } catch (Exception ex) { await _log?.ErrorAsync("Error inserting user stats", ex); throw; } }
private void SaveUserStats(IUserStats userStats) { CustomPlayerPrefs.SetBool(StringConstants.PlayerPrefsKeys.FirstSession, userStats.IsFirstSession); CustomPlayerPrefs.SetInt(StringConstants.PlayerPrefsKeys.TutorialStage, userStats.TutorialStage); }
private void Init(string username) { var result = Dependency.Locator.GetSingleton<IUserStatsManager>() .GetUserStats(username); if (result.Result == ResultValue.Success) { this.stats = result.ResultData; } else { this.stats = new ErrorUserStats(result.Message); } }
public UserProfile(IUserInventory inventory, IUserStats userStats, IGameOptions gameOptions) { UserInventory = inventory; UserStats = userStats; GameOptions = gameOptions; }