public static void CRON() { if (AppSettings.RevShare.IsRevShareEnabled && !TitanFeatures.IsEpadilla && (AppSettings.RevShare.DistributionTime != DistributionTimePolicy.EveryWeek || AppSettings.ServerTime.DayOfWeek == AppSettings.RevShare.DayOfWeekDistribution)) { AppSettings.RevShare.Reload(); if (AppSettings.Misc.SpilloverEnabled) { AdPackManager.FinishAdPacksIfNotUpgradedFor(7); } if (TitanFeatures.StringSawSundayPool.HasValue && AppSettings.ServerTime.DayOfWeek == DayOfWeek.Sunday) { StringSawSundayPool.CreditFromSundayPool(); } DailyDistribution(false, AppSettings.RevShare.DistributionTime == DistributionTimePolicy.EveryHour); AppSettings.RevShare.HourlyDistributionsMadeToday = 0; AppSettings.RevShare.Save(); TableHelper.ExecuteRawCommandNonQuery("UPDATE AdPackTypes SET FixedDistributionValuePercent = FixedDistributionValuePercent2;"); RevShareManager.RemoveOldPercentageValuesFromDatabase(); if (TitanFeatures.IsTradeOwnSystem) { string AdPackConditionForTradeOwnSystem = @" WITH CTE AS( SELECT UserId AS UserId, purchasedate AS purchasedate, ROW_NUMBER()OVER(PARTITION BY userId ORDER BY purchasedate) AS rownumber FROM AdPacks WHERE MoneyToReturn > MoneyReturned ) UPDATE Users SET FirstActiveDayOfAdPacks = GETDATE(), AdPackViewedCounter = 0 WHERE Users.UserId NOT IN (SELECT UserId from CTE);"; TableHelper.ExecuteRawCommandNonQuery(AdPackConditionForTradeOwnSystem); } //RevShare Income Statistics //WEEKLY if (AppSettings.ServerTime.DayOfWeek == DayOfWeek.Sunday) { TableHelper.ExecuteRawCommandNonQuery("UPDATE Users SET StatsRevShareLastWeekIncome = StatsRevShareCurrentWeekIncome, StatsRevShareCurrentWeekIncome = 0"); } //MONTHLY if (AppSettings.ServerTime.Day == DateTime.DaysInMonth(AppSettings.ServerTime.Year, AppSettings.ServerTime.Month)) { TableHelper.ExecuteRawCommandNonQuery("UPDATE Users SET StatsRevShareLastMonthIncome = StatsRevShareCurrentMonthIncome, StatsRevShareCurrentMonthIncome = 0"); } } }
public static string GetJsonWithInstantAccrualsValues() { return RevShareManager.GetJsonWithInstantAccrualsValues(Member.CurrentId); }
private static void DailyDistribution(bool HourDistribution = false, bool FinalDistributionButHourly = false) { DailyPool Pool = DailyPool.GetYesterdayPool(PoolsHelper.GetBuiltInProfitPoolId(Pools.AdPackRevenueReturn)); String RaportMessage = String.Empty; Int32 ActiveAdPacks = 0; Money TotalDistributed = Money.Zero; Money PerUnit = Money.Zero; Money InThePool = Pool.SumAmount; using (var bridge = ParserPool.Acquire(Database.Client)) { DistributionSQLHelper DistributionHelper = new DistributionSQLHelper(bridge.Instance); DistributionHelper.SetStartingDistributionPriority(); ActiveAdPacks = DistributionHelper.GetSumOfActiveAdPacks(); try { if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.Classic) { //Classic //Nothing to change } if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.CustomGroups || AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticAndCustomGroups) { //CustomGrups if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Accelerate) { DistributionHelper.UpdatePrioritiesCustomGroups(); } } if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticGroups || AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticAndCustomGroups) { //AutomaticGroups DistributionHelper.UpdatePrioritiesAutomaticGroups(); } Decimal priorities = DistributionHelper.GetSumOfPriorities(); if (ActiveAdPacks == 0) { throw new MsgException("No active AdPacks with active members. " + GetNoDistributionMessage(HourDistribution)); } //Make the distribution var adPackTypes = AdPackTypeManager.GetAllTypes(); foreach (var adPackType in adPackTypes) { var returnedPercentage = 0.0m; if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Fixed) { PerUnit = GetMoneyPerUnit(GetMoneyPerUnitFixed(adPackType), HourDistribution, FinalDistributionButHourly, adPackType); returnedPercentage = adPackType.FixedDistributionValuePercent; } else if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Pools) { PerUnit = GetMoneyPerUnit(GetMoneyPerUnitPools(InThePool, priorities), HourDistribution, FinalDistributionButHourly, adPackType); returnedPercentage = PerUnit.ToDecimal() / adPackType.Price.ToDecimal(); } RaportMessage += "<b>" + adPackType.Name + "</b> for priority 1.00 (no acceleration): <b>" + PerUnit.ToClearString() + "</b>. <br/>"; if (PerUnit > Money.Zero) { TotalDistributed += DistributionHelper.DistributeUsingPriority(PerUnit, adPackType.Id); } RevShareManager.AddAdPackTypePercentageHistory(adPackType.Id, returnedPercentage); } if (TitanFeatures.isAri) { AriRevShareDistribution.CreditAriRevShareDistribution(); } } catch (MsgException ex) { RaportMessage += ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); } Pool.SumAmount -= TotalDistributed; if (HourDistribution == false) { if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Pools) { RaportMessage += "Money moved to the next day pool: " + Pool.SumAmount.ToClearString() + ". "; } Pool.MoveMoneyForTomorrow(); } Pool.Save(); Report.Add(ActiveAdPacks, InThePool, TotalDistributed, RaportMessage); CustomGroupManager.TrySetGroupsAsExpired(); } }