public void SubtractFromMarketplaceBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { value = value.Positify(); MarketplaceBalance -= value; BalanceLog.Add(this, BalanceType.MarketplaceBalance, value.Negatify().ToDecimal(), note, balanceLogType); MarketplaceBalanceLogManager.MoneySpent(this.Id, value); }
protected override void CreditReferersPoints(int input, string note, BalanceLogType balanceLogType, int level = 1, Member forcedUser = null) { if (AppSettings.Referrals.AreIndirectReferralsEnabled && level > AppSettings.Referrals.ReferralEarningsUpToTier) { return; } if (forcedUser != null) { User = forcedUser; } if (User.HasReferer) { Member referer = new Member(User.ReferrerId); //Credit CreditPointsHelper(ref referer, input, note, balanceLogType); referer.IncreaseDirectRefPointsEarnings(input); referer.SaveStatisticsAndBalances(); User.TotalPointsEarnedToDReferer += input; User.SaveStatisticsAndBalances(); if (AppSettings.Referrals.AreIndirectReferralsEnabled) { CreditReferersPoints(input, note, balanceLogType, level + 1, referer); } } }
public void SubstractFromLoginAdsCredits(int value, string note, BalanceLogType balanceLogType = BalanceLogType.Other) { if (value < 0) { throw new MsgException("You cannot add negative value."); } LoginAdsCredits -= value; BalanceLog.Add(this, BalanceType.LoginAdsCredits, -value, note, balanceLogType); }
protected static void CreditPoints(Member User, int Input, String note, BalanceLogType balanceLogType) { //Credit CreditPointsHelper(ref User, Input, note, balanceLogType); //Save User.SaveStatisticsAndBalances(); //Achievements User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterGettingPointsInOneDay, User.PointsToday)); }
public void CreditPlan(Money amount, BalanceType balancetype, string note, BalanceLogType logType) { switch (balancetype) { case BalanceType.MainBalance: base.CreditMainBalance(amount, note, logType); break; case BalanceType.InvestmentBalance: //TO DO break; } }
public void SubtractFromPointsBalance(Int32 value, String note, BalanceLogType balanceLogType = BalanceLogType.Other, bool setMinPoints = true) { if (value < 0) { value = -value; } if (value != 0) { PointsBalance -= value; BalanceLog.Add(this, BalanceType.PointsBalance, -value, note, balanceLogType); LevelManager.PointsChanged(this, setMinPoints); } }
public void AddToPointsBalance(Int32 value, String note, BalanceLogType balanceLogType = BalanceLogType.Other, bool triggerActions = true, bool checkLeadershipSystem = true) { if (value != 0) { PointsBalance += value; BalanceLog.Add(this, BalanceType.PointsBalance, value, note, balanceLogType); LevelManager.PointsChanged(this, true, triggerActions); if (checkLeadershipSystem) { var list = new List <RestrictionKind>(); list.Add(RestrictionKind.Points); LeadershipSystem.CheckSystem(list, this); } } }
protected virtual void CreditReferersPoints(int input, String note, BalanceLogType balanceLogType, int level = 1, Member forcedUser = null) { if (AppSettings.Referrals.AreIndirectReferralsEnabled && level > AppSettings.Referrals.ReferralEarningsUpToTier) { return; } if (level == 1) { MoneySpent = Money.Zero; OriginalUser = User; } if (forcedUser != null) { User = forcedUser; } if (User.HasReferer) { Member referer = new Member(User.ReferrerId); if (referer.HasClickedEnoughToProfitFromReferrals()) { int calculated = PointsConverter.ToPoints(CalculateRefEarnings(referer, PointsConverter.ToMoney(input), level)); //Credit CreditPointsHelper(ref referer, calculated, note, balanceLogType); referer.IncreaseDirectRefPointsEarnings(calculated); referer.SaveStatisticsAndBalances(); User.TotalPointsEarnedToDReferer += calculated; User.SaveStatisticsAndBalances(); if (AppSettings.Referrals.AreIndirectReferralsEnabled) { CreditReferersPoints(input, note, balanceLogType, level + 1, referer); //change to Original user when leaving recurrence if (level == 1 && User.Id != OriginalUser.Id) { User = OriginalUser; } } } } }
protected static void CreditPointsHelper(ref Member User, int Input, string note, BalanceLogType balanceLogType) { User.AddToPointsBalance(Input, note, balanceLogType); User.PointsToday += Input; User.TotalPointsGenerated += Input; User.IncreasePointsEarnings(Input); }
public void AddToBalance(BalanceType balanceType, Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { switch (balanceType) { case BalanceType.MainBalance: AddToMainBalance(value, note, balanceLogType); break; case BalanceType.PurchaseBalance: AddToPurchaseBalance(value, note, balanceLogType); break; case BalanceType.TrafficBalance: AddToTrafficBalance(value, note, balanceLogType); break; case BalanceType.PointsBalance: AddToPointsBalance((int)value.ToDecimal(), note, balanceLogType); break; case BalanceType.CommissionBalance: AddToCommissionBalance(value, note, balanceLogType); break; case BalanceType.PTCCredits: AddToPTCCredits(value.ToDecimal(), note); break; case BalanceType.CashBalance: AddToCashBalance(value, note, balanceLogType); break; case BalanceType.InvestmentBalance: AddToInvestmentBalance(value, note, balanceLogType); break; case BalanceType.MarketplaceBalance: AddToMarketplaceBalance(value, note, balanceLogType); break; case BalanceType.BTC: AddToCryptocurrencyBalance(CryptocurrencyType.BTC, value.ToDecimal(), note, balanceLogType); break; case BalanceType.ETH: AddToCryptocurrencyBalance(CryptocurrencyType.ETH, value.ToDecimal(), note, balanceLogType); break; case BalanceType.XRP: AddToCryptocurrencyBalance(CryptocurrencyType.XRP, value.ToDecimal(), note, balanceLogType); break; case BalanceType.Token: AddToCryptocurrencyBalance(CryptocurrencyType.ERC20Token, value.ToDecimal(), note, balanceLogType); break; case BalanceType.FreezedToken: AddToCryptocurrencyBalance(CryptocurrencyType.ERCFreezed, value.ToDecimal(), note, balanceLogType); break; case BalanceType.LoginAdsCredits: AddToLoginAdsCredits((int)value.ToDecimal(), note, balanceLogType); break; } }
protected virtual Money CreditReferersMainBalance(Money input, String note, BalanceLogType balanceLogType, int level = 1, Member forcedUser = null, bool forceSave = true) { if (AppSettings.Referrals.AreIndirectReferralsEnabled && level > AppSettings.Referrals.ReferralEarningsUpToTier || TitanFeatures.IsGambinos && User.MembershipId == 1) { return(Money.Zero); } if (level == 1) { MoneySpent = Money.Zero; OriginalUser = User; } if (forcedUser != null) { User = forcedUser; } if (User.HasReferer) { Member referer = new Member(User.ReferrerId); if (referer.HasClickedEnoughToProfitFromReferrals()) { if (!MatrixBase.CanCreditReferer(User, referer)) { return(MoneySpent); } Money calculated = CalculateRefEarnings(referer, input, level); //Representatives bonus calculated += Representative.IncreaseAmountForRepresentative(input, User, referer.Id, level); bool refererCredited = false; bool adminCommissionPoolCredited = false; if (AppSettings.RevShare.IsRevShareEnabled && referer.Id == AppSettings.RevShare.AdminUserId) { adminCommissionPoolCredited = PoolDistributionManager.AddProfit(ProfitSource.RevenueAdminCommissions, calculated); } if (!adminCommissionPoolCredited) { //Add commission to Revenue Pool instead of crediting member if (AppSettings.Misc.SpilloverEnabled && referer.Membership.Id == Membership.Standard.Id) { SpilloverManager.AddMoneyToRevenuePool(calculated); } //Credit else { if (!AppSettings.Payments.CommissionBalanceEnabled) { CreditMainBalanceHelper(ref referer, calculated, note, balanceLogType); } else { CreditCommissionBalanceHelper(ref referer, calculated, note, balanceLogType); } refererCredited = true; AddToCommissionsIncomeStatistics(referer, calculated); } } if (refererCredited) { if (this is AdPackCrediter) { referer.IncreaseAdPackEarningsFromDR(calculated); User.TotalAdPacksToDReferer += calculated; } if (this is CashLinkCrediter) { referer.IncreaseDRCashLinksEarnings(calculated); User.TotalCashLinksToDReferer += calculated; } referer.IncreaseEarningsFromDirectReferral(calculated); referer.SaveStatisticsAndBalances(); User.TotalEarnedToDReferer += calculated; } User.LastDRActivity = DateTime.Now; if (forceSave) { User.SaveStatisticsAndBalances(); } try { if (AppSettings.Emails.NewReferralCommisionEnabled && calculated != Money.Zero) { Mailer.SendNewReferralCommisionMessage(referer.Name, User.Name, calculated, referer.Email, note); } } catch (Exception ex) { ErrorLogger.Log(ex); } //Mailer //increase Money spent MoneySpent += calculated; //Indirect referrals don't get paid for CashLinks if (AppSettings.Referrals.AreIndirectReferralsEnabled && !(this is CashLinkCrediter)) { var referralsMoneySpent = CreditReferersMainBalance(input, note, balanceLogType, level + 1, referer); //change to Original user when leaving recurrence if (level == 1 && User.Id != OriginalUser.Id) { User = OriginalUser; } return(referralsMoneySpent); } } } return(MoneySpent); }
public void AddToPurchaseBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { PurchaseBalance += value; BalanceLog.Add(this, BalanceType.PurchaseBalance, value.ToDecimal(), note, balanceLogType); }
public static void AddRange(string dataTableCommand, string note, BalanceType target, BalanceLogType balanceLogType) { using (var parser = ParserPool.Acquire(Database.Client)) { AddRange(parser.Instance, dataTableCommand, note, target, balanceLogType); } }
protected void CreditMainBalance(Money Input, String note, BalanceLogType balanceLogType, bool forceSave = true) { CreditMainBalance(this.User, Input, note, balanceLogType, forceSave); }
protected static void CreditMainBalance(Member User, Money Input, String note, BalanceLogType balanceLogType, bool forceSave = true) { //Credit CreditMainBalanceHelper(ref User, Input, note, balanceLogType); if (forceSave) { //Save User.SaveStatisticsAndBalances(); } //Achievements User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterEarning, User.MainBalance.GetRealTotals())); }
private static void ChargeBalance(Member user, Money amount, PurchaseBalances balance, string note, string feature = null, BalanceLogType balanceLogType = BalanceLogType.Other) { if (feature != null) { Features targetFeature = GetFeatureFromString(feature); ValidateChosenBalance(targetFeature, balance); } switch (balance) { case PurchaseBalances.Cash: if (amount > user.CashBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } user.SubtractFromCashBalance(amount, note, balanceLogType); break; case PurchaseBalances.Purchase: if (amount > user.PurchaseBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } user.SubtractFromPurchaseBalance(amount, note, balanceLogType); break; case PurchaseBalances.Traffic: if (amount > user.TrafficBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } user.SubtractFromTrafficBalance(amount, note, balanceLogType); break; case PurchaseBalances.LoginAdsCredits: if (amount.AsPoints() > user.LoginAdsCredits) { throw new MsgException(L1.NOTENOUGHFUNDS); } user.SubstractFromLoginAdsCredits(amount.AsPoints(), note, balanceLogType); break; } user.SaveBalances(); }
protected static void ConstructInsertQuery(ref StringBuilder sb, int userId, DateTime date, string note, BalanceType type, Money amount, BalanceLogType balanceLogType) { sb.Append(" (") .Append(userId) .Append(", '") .Append(date.ToDBString()) .Append("', '") .Append(note) .Append("', ") .Append(amount.ToClearString()) .Append(", ") .Append((int)type) .Append(", ") .Append((int)balanceLogType) .Append(")"); sb.Append(","); }
public void AddToMarketplaceBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { MarketplaceBalance += value; BalanceLog.Add(this, BalanceType.MarketplaceBalance, value.ToDecimal(), note, balanceLogType); MarketplaceBalanceLog.Add(this.Id, value); }
public void SubtractFromRentalBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { SubtractFromTrafficBalance(value, note, balanceLogType); }
public void AddToInvestmentBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { InvestmentBalance += value; BalanceLog.Add(this, BalanceType.InvestmentBalance, value.ToDecimal(), note, balanceLogType); }
//MERGED FROM TRAFFICUNITY public static void FastAddLogs(List <KeyValuePair <int, Money> > listIdsDifference, BalanceType type, string note, List <KeyValuePair <int, Money> > ActualBalances, BalanceLogType balanceLogType) { using (var bridge = ParserPool.Acquire(Database.Client)) { //Executing in 800 batches for good performance DateTime now = AppSettings.ServerTime; bool Active = true; int j = 0; while (Active) { bool AreRecordsInQuery = false; //Batch start var Query = ConstructInsertQueryStart(); int i = 0; while (j < listIdsDifference.Count && i < 800) { AreRecordsInQuery = true; ConstructInsertQuery(ref Query, listIdsDifference[j].Key, now, note, type, listIdsDifference[j].Value, ActualBalances[j].Value, balanceLogType); i++; j++; } if (AreRecordsInQuery) { if (Query[Query.Length - 1] == ',') { Query[Query.Length - 1] = ';'; } bridge.Instance.ExecuteRawCommandNonQuery(Query.ToString()); } else { Active = false; } } } }
public void AddToCommissionBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { CommissionBalance += value; BalanceLog.Add(this, BalanceType.CommissionBalance, value.ToDecimal(), note, balanceLogType); }
protected static void CreditCommissionBalanceHelper(ref Member User, Money Input, string note, BalanceLogType balanceLogType) { User.AddToCommissionBalance(Input, note, balanceLogType); User.IncreaseEarnings(Input); }
public static void AddRange(Parser parser, string dataTableCommand, string note, BalanceType target, BalanceLogType balanceLogType) { //You need to provide DataTable with the following variables (User Ids must be unique): //userId => UserId //amount => money that will be added to the balance //state => current account state (AFTER the operation) var List = new List <KeyValuePair <int, Money> >(); var ListActualBalance = new List <KeyValuePair <int, Money> >(); var dt = parser.ExecuteRawCommandToDataTable(dataTableCommand); foreach (DataRow row in dt.Rows) { if (new Money((Decimal)row["amount"]) != Money.Zero) { List.Add(new KeyValuePair <int, Money>((int)row["userId"], new Money((Decimal)row["amount"]))); ListActualBalance.Add(new KeyValuePair <int, Money>((int)row["userId"], new Money((Decimal)row["state"]))); } } BalanceLogManager.FastAddLogs(List, target, note, ListActualBalance, balanceLogType); }
protected void CreditPoints(int Input, String note, BalanceLogType balanceLogType) { CreditPoints(this.User, Input, note, balanceLogType); }
/// <summary> /// Do NOT require Save() on member /// </summary> /// <param name="cryptocurrencyType"></param> /// <param name="value"></param> /// <param name="note"></param> /// <param name="logType"></param> public void SubtractFromCryptocurrencyBalance(CryptocurrencyType cryptocurrencyType, decimal value, string note, BalanceLogType logType = BalanceLogType.Other) { SubtractFromCryptocurrencyBalance(cryptocurrencyType, new CryptocurrencyMoney(cryptocurrencyType, value), note, logType); }
public static void GlobalMemberAdjustHelper(Parser parser, string selectCommand, string updateCommand, string whereCommand, string note, Money amount, BalanceLogType balanceLogType) { //Add logs FAST var InactivityUsersDataTable = parser.ExecuteRawCommandToDataTable(selectCommand + whereCommand); var InactivityUsers = TableHelper.GetListFromDataTable <Member>(InactivityUsersDataTable, 100, true); var List = new List <KeyValuePair <int, Money> >(); var ListActuaiBalance = new List <KeyValuePair <int, Money> >(); foreach (var member in InactivityUsers) { List.Add(new KeyValuePair <int, Money>(member.Id, amount * -1)); ListActuaiBalance.Add(new KeyValuePair <int, Money>(member.Id, member.MainBalance - amount)); } BalanceLogManager.FastAddLogs(List, BalanceType.MainBalance, note, ListActuaiBalance, balanceLogType); //Update all parser.ExecuteRawCommandNonQuery(updateCommand + whereCommand); }
private void SubtractFromCryptocurrencyBalance(CryptocurrencyType cryptocurrencyType, CryptocurrencyMoney value, string note, BalanceLogType logType = BalanceLogType.Other) { UserCryptocurrencyBalance.Remove(this.Id, value, cryptocurrencyType); //Works on ONE crypto balance at the moment BalanceLog.Add(this, CryptocurrencyTypeHelper.ConvertToBalanceType(cryptocurrencyType), value.ToDecimal() * -1, note, logType); }
public void SubtractFromCommissionBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { value = value.Positify(); CommissionBalance -= value; BalanceLog.Add(this, BalanceType.CommissionBalance, value.Negatify().ToDecimal(), note, balanceLogType); }
public void AddToRentalBalance(Money value, String note, BalanceLogType balanceLogType = BalanceLogType.Other) { AddToTrafficBalance(value, note, balanceLogType); }