public static void ExchangeClicksForSeconds(int numberOfSeconds, int adPackId, Member user) { AdPack adPack = new AdPack(adPackId); AdPackType adPackType = new AdPackType(adPack.AdPackTypeId); int clicksLeft = (adPack.ClicksBought - adPack.TotalClicks) - 1; int maxExtraSecondsLeft = user.Membership.MaxExtraAdPackSecondsForClicks - (adPack.DisplayTime - adPackType.DisplayTime); if (numberOfSeconds > maxExtraSecondsLeft) { throw new MsgException(string.Format(U5006.CANNOTADDMORESECONDS, maxExtraSecondsLeft > 0 ? maxExtraSecondsLeft : 0)); } int requiredClicks = GetReqiuredClicksForExchange(numberOfSeconds, adPackType); if (clicksLeft < requiredClicks) { throw new MsgException(string.Format(U5006.NOTENOUGHCLICKSFOREXCHANGE, requiredClicks + 1)); } adPack.DisplayTime = adPack.DisplayTime + numberOfSeconds; adPack.ClicksBought = adPack.ClicksBought - requiredClicks; adPack.Save(); }
public static void TryBuyAdPack(BalanceType fromBalance, int advertId, AdPackType adPackType, int numberOfPacks, Member adPackOwner = null) { if (Member.Current.IsAnyBalanceIsNegative()) { throw new MsgException(U6013.YOUCANTPROCEED); } if (numberOfPacks <= 0) { throw new MsgException(String.Format("Can't buy 0 {0}s", AppSettings.RevShare.AdPack.AdPackNamePlural)); } if (fromBalance == BalanceType.PurchaseBalance) { AdPackManager.BuyPacks(numberOfPacks, advertId, Member.CurrentInCache, adPackType, PurchaseBalances.Purchase, adPackOwner: adPackOwner); } else if (fromBalance == BalanceType.CashBalance) { AdPackManager.BuyPacks(numberOfPacks, advertId, Member.CurrentInCache, adPackType, PurchaseBalances.Cash, adPackOwner: adPackOwner); } else if (fromBalance == BalanceType.Token) { AdPackManager.TryBuyAdPackForTokens(numberOfPacks, advertId, Member.CurrentInCache, adPackType, adPackOwner: adPackOwner); } else { AdPackManager.TryBuyAdPackFromAnotherBalance(numberOfPacks, advertId, Member.CurrentInCache, adPackType, fromBalance, adPackOwner: adPackOwner); } }
protected void CalculateButton_Click(object sender, EventArgs e) { ResultPlaceHolder.Visible = false; var adpackType = new AdPackType(int.Parse(AdPackDropDownList.SelectedValue)); var numberOfPacks = 0; DateTime startDate = DateTime.ParseExact(startDateInput.Value, "MM/dd/yyyy", Thread.CurrentThread.CurrentCulture); try { numberOfPacks = Convert.ToInt32(AdPacksCountTextBox.Text); } catch (Exception ex) { FailureP.Visible = true; FailureText.Text = U4000.BADFORMAT; return; } ResultPlaceHolder.Visible = true; var user = Member.CurrentInCache; var dailyEarning = adpackType.Price * adpackType.FixedDistributionValuePercent / 100; int daysToFinish = 0; if (dailyEarning != Money.Zero) { daysToFinish = ((adpackType.Price * adpackType.PackReturnValuePercentage / 100) / dailyEarning).GetTotalsUp(); } if (AppSettings.RevShare.DistributionTime == DistributionTimePolicy.EveryWeek) { EarnsLiteral.Text = U6007.WEEKLY; dailyEarning *= 7; } else { EarnsLiteral.Text = L1.DAILY; } var adBalanceRepurchase = user.Membership.AdPackAdBalanceReturnPercentage * adpackType.AdBalanceReturnPercentage / 100; var adBalanceEarning = dailyEarning * numberOfPacks * adBalanceRepurchase / 100; var mainBalanceEarning = (100 - adBalanceRepurchase) * dailyEarning * numberOfPacks / 100; FinishDateLiteral.Text = string.Format("{0}: <strong>{1}</strong>", U6007.FINISHDATE, startDate.AddDays(daysToFinish).ToShortDateString()); EarnsLiteral.Text += string.Format(" {0}: {1}: <strong>{2}</strong>, {3}: <strong>{4}</strong>", U4000.EARNINGS, L1.MAINBALANCE, mainBalanceEarning.ToString(), U6012.PURCHASEBALANCE, adBalanceEarning.ToString()); }
protected void Page_Load(object sender, EventArgs e) { TokenCryptocurrency = CryptocurrencyFactory.Get <BitcoinCryptocurrency>(); ERC20TokenCryptocurrency = CryptocurrencyFactory.Get <ERC20TokenCryptocurrency>(); if (!IsPostBack) { HideMessages(); var PurchaseOptions = PurchaseOption.Get(PurchaseOption.Features.AdPack); BindDataToTypesDDL(); CustomCampaignsDropDownManagement(); CustomPurchaseViaTokenPlaceHolder.Visible = false; CustomPurchaseViaMainBalancePlaceHolder.Visible = TitanFeatures.IsTrafficThunder; CustomPurchaseViaCommissionBalancePlaceHolder.Visible = AppSettings.RevShare.AdPackPurchasesViaCommissionBalanceEnabled; CustomPurchaseViaPurchaseBalancePlaceHolder.Visible = PurchaseOptions.PurchaseBalanceEnabled && !TitanFeatures.PurchaseBalanceDisabled; CustomPurchaseViaCashBalancePlaceHolder.Visible = PurchaseOptions.CashBalanceEnabled; CustomPurchaseForReferralPlaceHolder.Visible = AppSettings.RevShare.AdPack.BuyAdPacksForReferralsEnabled; CustomPurchaseViaERC20TokensButton.Enabled = false; CustomPurchaseViaCommissionBalanceButton.Enabled = false; CustomPurchaseViaCashBalanceButton.Enabled = false; CustomPurchaseViaPurchaseBalanceButton.Enabled = false; CustomPurchaseViaMainBalanceButton.Enabled = false; TOSAgreement.Checked = false; if (TitanFeatures.IsTrafficThunder) { CustomTypesDDLPlaceHolder.Visible = false; } LangAdders(); } var adPackType = new AdPackType(Convert.ToInt32(CustomTypesDropDown.SelectedValue)); CustomPackPriceLabel.Text = adPackType.Price.ToClearString(); ScriptManager.RegisterStartupScript(CustomAdPackPurchaseUpdatePanel, GetType(), "AdPacksTBChanged", "AdPacksTBChanged();", true); }
private void TryPrepareDataForAdPackPurchase() { AdvertId = -1; NumberOfPacks = 0; AdPackType = null; AdPackOwner = null; AdPackOwnerId = null; //Get Advert Id try { AdvertId = Convert.ToInt32(CustomCampaignsDropDown.SelectedValue); } catch (Exception ex) { } //Get number of AdPacks try { Money CostOfPack = Money.Parse(CustomPackPriceLabel.Text); NumberOfPacks = (int)(Decimal.Parse((MoneyToInvestTextBox.Text)) / CostOfPack.ToDecimal()); } catch (Exception ex) { throw new MsgException(U4000.BADFORMAT); } //Get AdPack type AdPackType = new AdPackType(Convert.ToInt32(CustomTypesDropDown.SelectedValue)); //Get referral for AdPack if (AppSettings.RevShare.AdPack.BuyAdPacksForReferralsEnabled && CustomBuyForReferralCheckBox.Checked && CustomReferralsDropDownList.Items.Count > 0) { AdPackOwnerId = Convert.ToInt32(CustomReferralsDropDownList.SelectedValue); } if (AdPackOwnerId.HasValue) { ValidateAdPacksForReferrals(); AdPackOwner = new Member(AdPackOwnerId.Value); } }
public static void TryBuyAdPackFromAnotherBalance(int numberOfPacks, int advertId, Member user, AdPackType adPackType, BalanceType targetType, int?userGroupIdNullable = null, int?groupIdNullable = null, bool forcePurchaseWithoutDeducingFunds = false, Member adPackOwner = null) { Money TotalPriceForAdPacks = AdPackManager.GetAdPacksPrice(adPackType, numberOfPacks); if (TotalPriceForAdPacks <= Money.Zero) { throw new MsgException("Value can not be <= 0"); } if (targetType == BalanceType.CommissionBalance) { if (TotalPriceForAdPacks > user.CommissionBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } try { //Funds ok, lets proceed with tokens transfer user.SubtractFromCommissionBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); user.AddToPurchaseBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); AdPackManager.BuyPacks(numberOfPacks, advertId, user, adPackType, PurchaseBalances.Purchase, adPackOwner: adPackOwner); } catch (MsgException ex) { user.SubtractFromPurchaseBalance(TotalPriceForAdPacks, "Reversed Purchase transfer", BalanceLogType.ReversedPurchaseTransfer); user.AddToPurchaseBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); throw new MsgException("<br />" + ex.Message); } } else if (targetType == BalanceType.MainBalance) { if (TotalPriceForAdPacks > user.MainBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } try { //Funds ok, lets proceed with tokens transfer user.SubtractFromMainBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); user.AddToPurchaseBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); AdPackManager.BuyPacks(numberOfPacks, advertId, user, adPackType, PurchaseBalances.Purchase, adPackOwner: adPackOwner); } catch (MsgException ex) { user.SubtractFromPurchaseBalance(TotalPriceForAdPacks, "Reversed Purchase transfer", BalanceLogType.ReversedPurchaseTransfer); user.AddToMainBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); throw new MsgException("<br />" + ex.Message); } } else if (targetType == BalanceType.BTC) { Money BTCValue = CryptocurrencyFactory.Get(CryptocurrencyType.BTC).GetValue(); Decimal BTCAmountNeeded = TotalPriceForAdPacks.ToDecimal() / BTCValue.ToDecimal(); if (BTCAmountNeeded > user.GetCryptocurrencyBalance(CryptocurrencyType.BTC).ToDecimal()) { throw new MsgException(String.Format(U6012.NOFUNDSINWALLET, "BTC")); } try { //Funds ok, lets proceed with tokens transfer user.SubtractFromCryptocurrencyBalance(CryptocurrencyType.BTC, BTCAmountNeeded, "Purchase transfer", BalanceLogType.PurchaseTransfer); user.AddToPurchaseBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); AdPackManager.BuyPacks(numberOfPacks, advertId, user, adPackType, PurchaseBalances.Purchase, adPackOwner: adPackOwner); } catch (MsgException ex) { user.SubtractFromPurchaseBalance(TotalPriceForAdPacks, "Reversed Purchase transfer", BalanceLogType.ReversedPurchaseTransfer); user.AddToCryptocurrencyBalance(CryptocurrencyType.BTC, BTCAmountNeeded, "Purchase transfer", BalanceLogType.PurchaseTransfer); throw new MsgException("<br />" + ex.Message); } } else { throw new MsgException("Not implemented transaction"); } }
public static void TryBuyAdPackForTokens(int numberOfPacks, int advertId, Member user, AdPackType adPackType, int?userGroupIdNullable = null, int?groupIdNullable = null, bool forcePurchaseWithoutDeducingFunds = false, Member adPackOwner = null) { var TokenCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.ERC20Token); //Check all basic values Money TotalPriceForAdPacks = AdPackManager.GetAdPacksPrice(adPackType, numberOfPacks); Money TokenValue = TokenCryptocurrency.GetValue(); Decimal TokenNumberNeeded = TotalPriceForAdPacks.ToDecimal() / TokenValue.ToDecimal(); if (TokenValue <= Money.Zero) { throw new MsgException("Amount of tokens can not be <= 0"); } if (TokenNumberNeeded > user.GetCryptocurrencyBalance(CryptocurrencyType.ERC20Token).ToDecimal()) { throw new MsgException(String.Format(U6012.NOFUNDSINWALLET, TokenCryptocurrency.Code)); } try { //Funds ok, lets proceed with tokens transfer user.SubtractFromCryptocurrencyBalance(CryptocurrencyType.ERC20Token, TokenNumberNeeded, "Purchase transfer", BalanceLogType.PurchaseTransfer); user.AddToPurchaseBalance(TotalPriceForAdPacks, "Purchase transfer", BalanceLogType.PurchaseTransfer); AdPackManager.BuyPacks(numberOfPacks, advertId, user, adPackType, PurchaseBalances.Purchase, adPackOwner: adPackOwner); } catch (MsgException ex) { user.AddToCryptocurrencyBalance(CryptocurrencyType.ERC20Token, TokenNumberNeeded, "Reversed Purchase transfer", BalanceLogType.ReversedPurchaseTransfer); user.SubtractFromPurchaseBalance(TotalPriceForAdPacks, "Reversed Purchase transfer", BalanceLogType.ReversedPurchaseTransfer); throw new MsgException("<br />" + ex.Message); } }
public static int GetReqiuredClicksForExchange(int numberOfSeconds, AdPackType adPackType) { int oneSecondInClicks = adPackType.ValueOf1SecondInClicks; return(numberOfSeconds * oneSecondInClicks); }
public static void BuyPacks(int numberOfPacks, int adPacksAdvertId, Member user, AdPackType adPackType, PurchaseBalances targetBalance, int?userGroupIdNullable = null, int?groupIdNullable = null, bool forcePurchaseWithoutDeducingFunds = false, Member adPackOwner = null) { if (!TitanFeatures.IsClickmyad && !AppSettings.RevShare.AdPack.EnableAdvertChange && adPacksAdvertId == -1 && AppSettings.RevShare.AdPacksPolicy != AppSettings.AdPacksPolicy.HYIP) { throw new MsgException(U6000.CANNOTBUYADPACKS); } AdPacksForOtherUsers record = null; string note = string.Format("{0} purchase", AppSettings.RevShare.AdPack.AdPackName); //Buying AdPacks for oneself if (adPackOwner == null) { if (!user.HasThisMembershipOrHigher(adPackType.RequiredMembership)) { throw new MsgException(String.Format(U5006.YOUNEEDMEMBERSHIP, Membership.SelectName(adPackType.RequiredMembership))); } int numberOfUsersAdPacks = GetNumberOfUsersAdPacks(user.Id, true, adPackType.Id); if (numberOfUsersAdPacks + numberOfPacks > adPackType.MaxInstances) { throw new MsgException(U5004.TOOMANYADPACKOFTYPE.Replace("%a%", AppSettings.RevShare.AdPack.AdPackNamePlural) .Replace("%b%", (adPackType.MaxInstances - numberOfUsersAdPacks).ToString())); } int numberOfAllUsersAdpacks = GetNumberOfAllUsersAdPacks(user.Id, adPackType.Id); if (numberOfAllUsersAdpacks + numberOfPacks > adPackType.MaxInstancesOfAllAdpacks) { throw new MsgException(U5004.TOOMANYADPACKOFTYPE.Replace("%a%", AppSettings.RevShare.AdPack.AdPackNamePlural) .Replace("%b%", (adPackType.MaxInstancesOfAllAdpacks - numberOfAllUsersAdpacks).ToString())); } var availableTypes = AdPackTypeManager.GetAllActiveTypesForUser(user); if (!availableTypes.Any(el => el.Id == adPackType.Id) || adPackType.Status != AdPackTypeStatus.Active) { throw new MsgException("You cannot buy AdPacks of selected type."); } adPackOwner = user; } else { AdPacksForOtherUsers.Validate(user.Id, adPackOwner.Id, numberOfPacks, out record); note += " for " + adPackOwner.Name; } //BUY ADPACKS var totalPrice = GetAdPacksPrice(adPackType, numberOfPacks); if (!forcePurchaseWithoutDeducingFunds) { PurchaseOption.ChargeBalance(user, totalPrice, PurchaseOption.Features.AdPack.ToString(), targetBalance, note, BalanceLogType.AdPackPurchase); } if (user != adPackOwner) { AdPacksForOtherUsers.AddOrUpdate(record, user.Id, adPackOwner.Id, numberOfPacks); } Money totalTrafficExchangeSurfCredits = Money.Zero; int totalLoginAdsCredits = 0; for (int i = 0; i < numberOfPacks; i++) { AdPack pack = new AdPack(); pack.MoneyReturned = new Money(0); pack.AdPacksAdvertId = adPacksAdvertId; pack.TotalConstantBannerImpressions = 0; pack.TotalNormalBannerImpressions = 0; pack.ConstantBannerImpressionsBought = adPackType.ConstantBannerImpressions; pack.NormalBannerImpressionsBought = adPackType.NormalBannerImpressions; pack.ClicksBought = adPackType.Clicks; pack.PurchaseDate = DateTime.Now; pack.MoneyReturned = new Money(0); pack.MoneyToReturn = Money.MultiplyPercent(adPackType.Price, adPackType.PackReturnValuePercentage + adPackOwner.Membership.ROIEnlargedByPercentage); pack.UserCustomGroupId = -1; pack.UserId = adPackOwner.Id; pack.DistributionPriority = new Decimal(1); pack.AdPackTypeId = adPackType.Id; pack.DisplayTime = adPackType.DisplayTime; pack.BalanceBoughtType = targetBalance; pack.Save(); totalTrafficExchangeSurfCredits += adPackType.TrafficExchangeSurfCredits; totalLoginAdsCredits += adPackType.LoginAdsCredits; } if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled) { adPackOwner.AddToTrafficBalance(totalTrafficExchangeSurfCredits, "Traffic Exchange Surf Credits", BalanceLogType.Other); } adPackOwner.AddToLoginAdsCredits(totalLoginAdsCredits, note); adPackOwner.SaveBalances(); Money moneyLeftForPools; if (TitanFeatures.isAri) { AriRevShareDistribution.AdPackAriCrediter crediter = new AriRevShareDistribution.AdPackAriCrediter(user); moneyLeftForPools = crediter.CreditReferer(totalPrice, targetBalance); } else { AdPackCrediter crediter = new AdPackCrediter(user); moneyLeftForPools = crediter.CreditReferer(totalPrice); } //Pools if (TitanFeatures.StringSawSundayPool.HasValue && AppSettings.ServerTime.DayOfWeek == DayOfWeek.Sunday) { PoolDistributionManager.AddProfitToSundayPool(moneyLeftForPools); } else { PoolDistributionManager.AddProfit(ProfitSource.AdPacks, moneyLeftForPools); } //Matrix MatrixBase.TryAddMemberAndCredit(user, totalPrice, AdvertType.AdPack); var purchasedItem = PurchasedItem.Create(user.Id, adPackType.Price, numberOfPacks, adPackType.Name + " " + AppSettings.RevShare.AdPack.AdPackName, PurchasedItemType.AdPack); if (TitanFeatures.isAri) { HtmlInvoiceGenerator generator = new HtmlInvoiceGenerator(purchasedItem); generator.SendPdfViaEmail(); } //LeadershipSystem var list = new List <RestrictionKind>(); list.Add(RestrictionKind.ActiveAdPacks); list.Add(RestrictionKind.ActiveAdPacksPrice); list.Add(RestrictionKind.DirectReferralsActiveAdPacks); list.Add(RestrictionKind.DirectReferralsActiveAdPacksPrice); LeadershipSystem.CheckSystem(list, user, 1); }
public static Money GetAdPacksPrice(AdPackType adPackType, int numberOfPacks) { return(adPackType.Price * numberOfPacks); }
public static void CheckAndUpdateStatistics(StatisticsType Type) { Statistics Stat; switch (Type) { case StatisticsType.TotalMembersCount: Stat = new Statistics(Type); var where1 = new Dictionary <string, object>(); where1.Add("AccountStatusInt", (int)MemberStatus.Active); int totalmember = TableHelper.CountOf <Member>(where1); where1.Add(Member.Columns.MembershipName, Memberships.Membership.Standard.Name); int upgradedmember = TableHelper.CountOf <Member>(where1); upgradedmember = totalmember - upgradedmember; //Now update var list1 = TableHelper.GetIntListFromString(Stat.Data1); list1[0] = totalmember; Stat.Data1 = TableHelper.GetStringFromIntList(list1); var list2 = TableHelper.GetIntListFromString(Stat.Data2); list2[0] = upgradedmember; Stat.Data2 = TableHelper.GetStringFromIntList(list2); Stat.Save(); break; case StatisticsType.PointsInSystem: Stat = new Statistics(Type); //Now update var list888 = TableHelper.GetIntListFromString(Stat.Data1); list888[0] = AppSettings.Points.TotalInSystem; Stat.Data1 = TableHelper.GetStringFromIntList(list888); Stat.Save(); break; case StatisticsType.PointsGenerated: Stat = new Statistics(Type); //Now update var list999 = TableHelper.GetIntListFromString(Stat.Data1); int totalNow = AppSettings.Points.TotalGenerated; int totalYesterday = AppSettings.Points.TotalGeneratedUpToYesterday; int totalToday = totalNow - totalYesterday; list999[0] = totalToday; Stat.Data1 = TableHelper.GetStringFromIntList(list999); Stat.Save(); break; case StatisticsType.AvailableReferrals: Stat = new Statistics(Type); //Now update var list3 = TableHelper.GetIntListFromString(Stat.Data1); list3[0] = RentReferralsSystem.GetAvailableNormalReferralsCount(); Stat.Data1 = TableHelper.GetStringFromIntList(list3); Stat.Save(); break; case StatisticsType.NormalRentedReferrals: Stat = new Statistics(Type); //Now update var list4 = TableHelper.GetIntListFromString(Stat.Data1); list4[0] = RentReferralsSystem.GetRentedNormalReferralsCount(); Stat.Data1 = TableHelper.GetStringFromIntList(list4); Stat.Save(); break; case StatisticsType.BotRentedReferrals: Stat = new Statistics(Type); //Now update var list5 = TableHelper.GetIntListFromString(Stat.Data1); list5[0] = RentReferralsSystem.GetRentedBotReferralsCount(); Stat.Data1 = TableHelper.GetStringFromIntList(list5); Stat.Save(); break; case StatisticsType.MoneyDistributedPerAdPack: Stat = new Statistics(Type); //Now update //TO DO: review var list6 = TableHelper.GetMoneyListFromString(Stat.Data1); AdPackType type = AdPackType.Standard; list6[0] = new Money(type.Price.ToDecimal() * (type.FixedDistributionValuePercent / (Decimal)100)); Stat.Data1 = TableHelper.GetStringFromMoneyList(list6); Stat.Save(); break; case StatisticsType.AvailableFunds: //Handle var list = PaymentAccountDetails.AllGateways; foreach (var account in list) { var where = TableHelper.MakeDictionary("Type", (int)StatisticsType.AvailableFunds); where.Add("Data1", StatisticsManager.GetPaymentAccountName(account)); var TempStatList = TableHelper.SelectRows <Statistics>(where); if (TempStatList.Count > 0) { Statistics stat = TempStatList[0]; if (stat != null) { stat.SetData2(account.Account.Balance); stat.Save(); } } } //var where2 = TableHelper.MakeDictionary("Type", (int)StatisticsType.AvailableFunds); //where2.Add("Data1", AppSettings.Cryptocurrencies.APIProvider.ToString()); //var tempStatList2 = TableHelper.SelectRows<Statistics>(where2); //if (tempStatList2.Count > 0) //{ // var stat = tempStatList2[0]; // if (stat != null) // { // stat.SetData2(BitcoinAPIFacotry.Get().GetAccountBalance()); // stat.Save(); // } //} break; } }
private static Money GetMoneyPerUnitFixed(AdPackType type) { return(new Money(type.Price.ToDecimal() * (type.FixedDistributionValuePercent / (Decimal)100))); }
private static Money GetMoneyPerUnit(Money PerUnit, bool HourDistribution, bool FinalDistributionButHourly, AdPackType adPackType) { if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Pools) { var maxRoi = Money.MultiplyPercent(Money.MultiplyPercent(adPackType.Price, adPackType.PackReturnValuePercentage), AppSettings.RevShare.AdPack.MaxDailyROIPercent); if (PerUnit > maxRoi) { PerUnit = maxRoi; } } //Hour distribution? if (HourDistribution) { PerUnit = new Money(PerUnit.ToDecimal() / (Decimal)(24)); } //Hour but final if (FinalDistributionButHourly) { PerUnit = PerUnit - (AppSettings.RevShare.HourlyDistributionsMadeToday * (new Money(PerUnit.ToDecimal() / (Decimal)(24)))); } return(PerUnit); }