public void SetAmount(UserDataModel user, int amount) { RankModel prevRank = this.GetRank(user); user.CurrencyAmounts[this.ID] = Math.Min(Math.Max(amount, 0), this.MaxAmount); if (ChannelSession.Settings != null) { ChannelSession.Settings.UserData.ManualValueChanged(user.ID); } RankModel newRank = this.GetRank(user); UserViewModel userViewModel = ChannelSession.Services.User.GetUserByID(user.ID); if (userViewModel == null) { userViewModel = new UserViewModel(user); } if (newRank.Amount > prevRank.Amount && this.RankChangedCommand != null) { AsyncRunner.RunAsyncBackground((cancellationToken) => this.RankChangedCommand.Perform(new CommandParametersModel(userViewModel)), new CancellationToken()); } else if (newRank.Amount < prevRank.Amount && this.RankDownCommand != null) { AsyncRunner.RunAsyncBackground((cancellationToken) => this.RankDownCommand.Perform(new CommandParametersModel(userViewModel)), new CancellationToken()); } }
public RankModel GetNextRank(UserDataModel user) { if (this.Ranks.Count > 0) { int amount = this.GetAmount(user); RankModel rank = this.Ranks.Where(r => r.Amount > amount).Min(); if (rank != null) { return(rank); } } return(CurrencyModel.NoRank); }
public void AddAmount(UserDataModel user, int amount) { if (!user.IsCurrencyRankExempt && amount > 0) { RankModel prevRank = this.GetRank(user); this.SetAmount(user, this.GetAmount(user) + amount); RankModel newRank = this.GetRank(user); if (prevRank != newRank && this.RankChangedCommand != null) { this.RankChangedCommand.Perform(ChannelSession.Services.User.GetUserByID(user.ID)).Wait(); } } }