Пример #1
0
        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;
            }
        }
Пример #2
0
        public void Load(IUserProfileModel userProfileModel)
        {
            IUserInventory inventory   = LoadInventory();
            IUserStats     userStats   = LoadUserStats();
            IGameOptions   gameOptions = LoadGameOptions();

            userProfileModel.UserProfile = new UserProfile(inventory, userStats, gameOptions);
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
 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);
              }
        }
Пример #6
0
 public UserProfile(IUserInventory inventory, IUserStats userStats, IGameOptions gameOptions)
 {
     UserInventory = inventory;
     UserStats     = userStats;
     GameOptions   = gameOptions;
 }