protected void CustomCampaignsDropDownManagement() { int availableAdverts = AdPackManager.GetUsersAdverts(Member.CurrentId).Count; if (availableAdverts > 0) { SpaceDivPlaceHolder.Visible = false; CustomCampaignDDLPlaceHolder.Visible = true; CustomCampaignLabel.Text = "Campaigns"; var list = new Dictionary <string, string>(); var campaigns = AdPackManager.GetUsersAdverts(Member.CurrentId); for (int i = 0; i < campaigns.Count; i++) { list.Add(campaigns[i].Id.ToString(), campaigns[i].Title); } CustomCampaignsDropDown.DataSource = list; CustomCampaignsDropDown.DataTextField = "Value"; CustomCampaignsDropDown.DataValueField = "Key"; CustomCampaignsDropDown.DataBind(); } else { SpaceDivPlaceHolder.Visible = true; CustomCampaignDDLPlaceHolder.Visible = false; } }
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 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 ChangeCampaignButton_Click(object sender, EventArgs e) { if (AppSettings.RevShare.AdPack.EnableAdvertChange) { for (int i = 0; i < SurfAdsStatsGridView.Rows.Count; i++) { GridViewRow row = SurfAdsStatsGridView.Rows[i]; bool isChecked = ((CheckBox)row.FindControl("chkSelect")).Checked; if (isChecked) { int adpackId = Convert.ToInt32(row.Cells[1].Text); AdPack adpack = new AdPack(adpackId); adpack.AdPacksAdvertId = Convert.ToInt32(ddlCampaigns2.SelectedValue); if (!AdPackManager.HasConstantBanner(adpack.AdPacksAdvertId)) { adpack.TotalConstantBannerImpressions = adpack.ConstantBannerImpressionsBought; } if (!AdPackManager.HasNormalBanner(adpack.AdPacksAdvertId)) { adpack.TotalNormalBannerImpressions = adpack.NormalBannerImpressionsBought; } adpack.Save(); } } SurfAdsStatsGridView.DataBind(); } }
public static void Apply(CustomGroup type, UserCustomGroup userCustomGroup) { //Temporary (for better performance) List <AdPackType> typesList = TableHelper.SelectAllRows <AdPackType>(); AdPack creatorAdPack = null; var types = new Dictionary <int, AdPackType>(); foreach (var typeList in typesList) { types.Add(typeList.Id, typeList); } Random random = new Random(); List <int> adPackIds = new List <int>(); //Value of purchases Money memberPurchasesAmount = Money.Zero; Money creatorPurchasesAmount = Money.Zero; var adpacks = AdPackManager.GetAllAdPacksInCustomGroup(userCustomGroup.Id); foreach (var adpack in adpacks) { if (adpack.UserId != userCustomGroup.CreatorUserId) { memberPurchasesAmount += types[adpack.AdPackTypeId].Price; adPackIds.Add(adpack.Id); } else { creatorPurchasesAmount += types[adpack.AdPackTypeId].Price; } } //Reward for creator var creatorReward = Money.MultiplyPercent(memberPurchasesAmount, type.CreatorRewardBonusPercent); Member GroupCreator = new Member(userCustomGroup.CreatorUserId); GroupCreator.AddToPurchaseBalance(creatorReward, "Custom Group creator bonus"); GroupCreator.SaveBalances(); //Prize1 var prize1Reward = Money.MultiplyPercent(memberPurchasesAmount, type.FirstRewardPercent); int wonPrize1Ticket = random.Next(0, adPackIds.Count); Member Prize1Winner = new Member((new AdPack(adPackIds[wonPrize1Ticket])).UserId); Prize1Winner.AddToPurchaseBalance(prize1Reward, "Custom Group 1st prize"); Prize1Winner.SaveBalances(); //Prize2 var prize2Reward = Money.MultiplyPercent(creatorPurchasesAmount, type.SecondRewardPercent); int wonPrize2Ticket = random.Next(0, adPackIds.Count); Member Prize2Winner = new Member((new AdPack(adPackIds[wonPrize2Ticket])).UserId); Prize2Winner.AddToPurchaseBalance(prize2Reward, "Custom Group 2nd prize"); Prize2Winner.SaveBalances(); userCustomGroup.BonusExtraInformation = String.Format("Creator username: <b>{0}</b>, reward: <b>{1}</b>, 1st prize winner: <b>{2}</b> ({3}), 2nd prize winner: <b>{4}</b> ({5}).", GroupCreator.Name, creatorReward.ToString(), Prize1Winner.Name, prize1Reward.ToString(), Prize2Winner.Name, prize2Reward.ToString()); }
protected void StartPageDateCalendar_DayRender(object sender, DayRenderEventArgs e) { if (e.Day.Date <= DateTime.Now.Date) { e.Day.IsSelectable = false; e.Cell.CssClass = "not-available"; return; } bool isFull = AdPackManager.GetNumberOfStartPagesPurchasedForDay(e.Day.Date) > 0; if (isFull) { e.Cell.CssClass = "not-available alert alert-danger"; e.Day.IsSelectable = false; } else { e.Cell.CssClass = "available"; } if (e.Day.IsSelected) { e.Cell.CssClass = "active"; } }
protected void ClosedGroupsGridView2_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { int userId = Convert.ToInt32(e.Row.Cells[0].Text); int userCustomGroupId = Convert.ToInt32(e.Row.Cells[7].Text); //userId e.Row.Cells[0].Text = new Member(userId).Name; //Name e.Row.Cells[1].BackColor = System.Drawing.Color.FromName(e.Row.Cells[2].Text); //insert link e.Row.Cells[1].Text = string.Format("<span style='font-weight:bold'><a style='color:white;' href='{0}user/advert/groups/customgroup.aspx?g={1}'>{2}<a/><span/>", AppSettings.Site.Url, userCustomGroupId, e.Row.Cells[1].Text); //Color e.Row.Cells[2].Visible = false; //AdPacksAdded e.Row.Cells[3].Text = HtmlCreator.GenerateCPAAdProgressHTML(Convert.ToInt32(e.Row.Cells[3].Text), Convert.ToInt32(e.Row.Cells[4].Text), AppSettings.RevShare.AdPack.AdPackNamePlural); //AdPacksLimit e.Row.Cells[4].Visible = false; //Percentage e.Row.Cells[5].Visible = false; //Daily profit if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase) { e.Row.Cells[6].Text = "+" + Convert.ToInt32(e.Row.Cells[6].Text).ToString(); } e.Row.Cells[6].Text += "%"; //UserGroupId - > Number of participants e.Row.Cells[7].Text = AdPackManager.GetNumberOfParticipantsInGroup(userCustomGroupId).ToString(); // e.Row.Cells[8].Visible = false; } else if (e.Row.RowType == DataControlRowType.Header) { e.Row.Cells[2].Visible = false; e.Row.Cells[4].Visible = false; e.Row.Cells[5].Visible = false; if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Accelerate) { ClosedGroupsGridView2.Columns[6].HeaderText = U4200.DAILYPROFITRAISEDBY; } else if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase) { ClosedGroupsGridView2.Columns[6].HeaderText = U5001.PROFITRAISEDBY; } } }
public static Money GetTotalCustomGroupsEarnings(int userCustomGroupId) { var adPackList = AdPackManager.GetAllAdPacksInCustomGroup(userCustomGroupId); Money earnings = Money.Zero; foreach (var adPack in adPackList) { earnings += adPack.MoneyReturned; } return(earnings); }
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"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { ActivePacksTab.Text = "List"; User = Member.CurrentInCache; AccessManager.RedirectIfDisabled(TitanFeatures.IsEpadilla); Form.Action = Request.RawUrl; bool hasAvailableAdverts = AdPackManager.HasAvailableAdverts(User.Id); } }
private void UpdateAvailableAdPacks() { var customGroup = new CustomGroup(userCustomGroup.CustomGroupId); AvailableAdPacksLabel.Text = AdPackManager.GetUsersActiveAdPacksForGroups(User.Id, customGroup).Count.ToString(); if (User.Id == userCustomGroup.CreatorUserId) { MyAdPacks.Text = (AdPackManager.GetUsersActiveAdPacksForGroups(User.Id, customGroup, userCustomGroupId).Count - customGroup.CreatorsMinNumberOfAdPacks).ToString(); } else { MyAdPacks.Text = AdPackManager.GetUsersActiveAdPacksForGroups(User.Id, customGroup, userCustomGroupId).Count.ToString(); } }
private void UpdateAvailableAdPacks() { int customGroupId = -1; Int32.TryParse(GroupsAvailableToOpen.SelectedValue, out customGroupId); if (customGroupId != -1) { AvailableAdPacksLabel.Text = AdPackManager.GetUsersActiveAdPacksForGroups(User.Id, new CustomGroup(customGroupId)).Count.ToString(); AllAdPacksLabel.Text = AdPackManager.GetUsersActiveAdPacksWithoutGroup(User.Id).Count().ToString(); } else { AdPacksPlaceHolder.Visible = false; } }
public static AutomaticGroup GetUsersAutomaticGroup(Member user, ref int numberOfAdPacksToNextGroup, ref AutomaticGroup nextGroup) { try { var numberOfActiveAdpacks = AdPackManager.GetUsersActiveAdPacks(user.Id).Count; var allAutomaticGroups = GetAllAutomaticGroups(); int minNumberOfAdPacks = 0; AutomaticGroup currentGroup = null; foreach (var group in allAutomaticGroups) { if (numberOfActiveAdpacks >= minNumberOfAdPacks && numberOfActiveAdpacks <= group.AdPacksLimit) { currentGroup = group; minNumberOfAdPacks = group.AdPacksLimit + 1; var nextGroups = TableHelper.GetListFromRawQuery <AutomaticGroup>(string.Format("SELECT * FROM AutomaticGroups WHERE Number = {0}", (group.Number + 1).ToString())); if (nextGroups.Count > 0) { nextGroup = nextGroups[0]; } } } if (currentGroup == null) { var maxNumber = allAutomaticGroups.Max(x => x.Number); currentGroup = (from groups in allAutomaticGroups.Where(x => x.Number == maxNumber) select groups).ToList()[0]; } var maxGroupNumber = Convert.ToInt32(TableHelper.SelectScalar("SELECT MAX(Number) FROM AutomaticGroups")); if (currentGroup.Number >= maxGroupNumber) { nextGroup = null; } if (nextGroup != null) { numberOfAdPacksToNextGroup = currentGroup.AdPacksLimit + 1 - numberOfActiveAdpacks; } return(currentGroup); } catch (InvalidOperationException) { return(null); } }
protected void ProceedAdPackPurchase(BalanceType fromBalance) { HideMessages(); try { if (TokenCryptocurrency.WalletEnabled && TOSAgreement.Checked == false) { throw new MsgException("Terms of Service are not agreed"); } TryPrepareDataForAdPackPurchase(); AdPackManager.TryBuyAdPack(fromBalance, AdvertId, AdPackType, NumberOfPacks, adPackOwner: AdPackOwner); if (NumberOfPacks == 1) { CustomSuccessLiteral.Text = U4200.BUYADPACKSUCCESS.Replace("%n%", NumberOfPacks.ToString()).Replace("%p%", AppSettings.RevShare.AdPack.AdPackName) + "."; } else { CustomSuccessLiteral.Text = U4200.BUYADPACKSUCCESS.Replace("%n%", NumberOfPacks.ToString()).Replace("%p%", AppSettings.RevShare.AdPack.AdPackNamePlural) + "."; } CustomSuccessPanel.Visible = true; CustomMessagesPlaceHolder.Visible = true; //Set up date when buy adpack to count number of active adpack (Customization) Member.CurrentInCache.FirstActiveDayOfAdPacks = DateTime.Now; BindDataToTypesDDL(); BindDataToReferralsDDL(); } catch (MsgException ex) { CustomErrorLiteral.Text = ex.Message; CustomErrorPanel.Visible = true; CustomMessagesPlaceHolder.Visible = true; } catch (Exception ex) { ErrorLogger.Log(ex); } }
protected void AdPackRefreshUpdatePanel_Load(object sender, EventArgs e) { if (AppSettings.RevShare.AdPack.IsAdListEnabled) { AdsLiteral.Visible = false; AdsLiteral.Controls.Clear(); //Display proper ads to the Member List<AdPacksAdvert> AvailableAdList = AdPackManager.GetAdPacksAdvertsForUsers(User.Membership.AdPackDailyRequiredClicks); for (int i = 0; i < AvailableAdList.Count; i++) { AdsLiteral.Controls.Add(GetAdHTML(AvailableAdList[i], User)); } AdsLiteral.Visible = true; } }
private void BindDataToCampaignsDDL() { var list = new Dictionary <string, string>(); var campaigns = AdPackManager.GetUsersAdverts(User.Id); for (int i = 0; i < campaigns.Count; i++) { list.Add(campaigns[i].Id.ToString(), campaigns[i].Title); } CampaignsDropDown.DataSource = list; CampaignsDropDown.DataTextField = "Value"; CampaignsDropDown.DataValueField = "Key"; CampaignsDropDown.DataBind(); ddlCampaigns2.DataSource = list; ddlCampaigns2.DataTextField = "Value"; ddlCampaigns2.DataValueField = "Key"; ddlCampaigns2.DataBind(); }
private static string CreateHeaders(IEnumerable <Membership> memberships) { StringBuilder sb = new StringBuilder(); StringBuilder props = new StringBuilder(); sb.Append("<thead><tr>"); if (!(AppSettings.RevShare.AdPack.HideAdPackTypesWhenOneEnabled && AdPackManager.GetAdPackActiveTypesCount() <= 1)) { sb.AppendFormat("<th class=\"vcenter\">{0}</th>", string.Format(U6000.ADPACKTYPE, AppSettings.RevShare.AdPack.AdPackName)); } foreach (var m in memberships) { sb.AppendFormat("<th class=\"text-center\">{0} ({1})</th><th class=\"text-center\">{0} ({2})</th>", "<span style='color:" + m.Color + "'>" + m.Name + "</span>", "ROI", U6000.REPURCHASE); } props.Append("</tr></thead>"); return(sb.ToString() + props.ToString()); }
protected void Page_Load(object sender, EventArgs e) { User = Member.Current; AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.EarnAdPacksEnabled && User.IsEarner); Form.Action = Request.RawUrl; var adsViewed = User.RSAPTCAdsViewed.Count; string coloredAdsViewed; dailyRequiredClicks = User.Membership.AdPackDailyRequiredClicks; if (adsViewed < dailyRequiredClicks) coloredAdsViewed = string.Format("<span style={0}>{1}</span>", "'color: #cb6f1b; font-weight: bold;'", adsViewed); else coloredAdsViewed = string.Format("<span style={0}>{1}</span>", "'color: #87a131; font-weight: bold;'", adsViewed); if (AppSettings.RevShare.DistributionTime == DistributionTimePolicy.EveryWeek) { string timeLeft = Prem.PTC.Utils.TimeSpanExtensions.ToFriendlyDisplay(AdPackManager.GetAdSurfDeadline(), 3); AdsWatchedInfo.Text = string.Format(U6003.ADPACKTIMEDESC, dailyRequiredClicks, coloredAdsViewed, dailyRequiredClicks, timeLeft); } else { AdsWatchedInfo.Text = U4200.ADPACKEARNMAINDESCRIPTION.Replace("%n%", dailyRequiredClicks.ToString()) + U4200.WATCHEDADPACKSADVERT.Replace("%n%", string.Format("{0}/{1}", coloredAdsViewed, dailyRequiredClicks)); } //Checking condition to display appropriate message if (Member.IsLogged && !User.CheckAccessCustomizeTradeOwnSystem && User.CommissionToMainBalanceRequiredViewsMessageInt > 0) CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERINFO, User.CommissionToMainBalanceRequiredViewsMessageInt, AppSettings.RevShare.AdPack.AdPackName); else if (Member.IsLogged && !User.CheckAccessCustomizeTradeOwnSystem && User.CommissionToMainBalanceRequiredViewsMessageInt == 0) CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERNOACTIVEADPACKINFO, AppSettings.RevShare.AdPack.AdPackName); else CommissionTransferInfoDiv.Visible = false; AdsLiteral.Visible = AppSettings.RevShare.AdPack.IsAdListEnabled; }
protected void CreateAdButton_Click(object sender, EventArgs e) { SPanel.Visible = false; EPanel.Visible = false; try { if (URL.Enabled) { throw new MsgException(U4200.CHECKURL); } NewAdPackAdvert.Title = InputChecker.HtmlEncode(Title.Text, Title.MaxLength, L1.TITLE); NewAdPackAdvert.Description = InputChecker.HtmlEncode(Description.Text, Description.MaxLength, L1.DESCRIPTION); NewAdPackAdvert.TargetUrl = URL.Text; Member admin = new Member(AppSettings.RevShare.AdminUsername); NewAdPackAdvert.CreatorUserId = User.Id; //No need to approve admin's adverts if (NewAdPackAdvert.CreatorUserId == admin.Id) { NewAdPackAdvert.Status = AdvertStatus.Active; } else { NewAdPackAdvert.Status = AdvertStatusExtensions.GetStartingStatus(); } NewAdPackAdvert.AddedAsType = PurchaseOption.Features.SurfAd; UrlVerifier.Check(UrlCreator.ParseUrl(URL.Text)); if (AppSettings.RevShare.AdPack.IsStartPageEnabled && PurchaseStartPageCheckBox.Checked) { if (AdPackManager.GetNumberOfStartPagesPurchasedForDay(StartPageDateCalendar.SelectedDate) > 0) { throw new MsgException("You can't buy a Start Page for a selected date"); } User = Member.Current; Money startPagePrice = AppSettings.RevShare.AdPack.StartPagePrice; if (startPagePrice > User.PurchaseBalance) { throw new MsgException(L1.NOTENOUGHFUNDS); } NewAdPackAdvert.StartPageDate = StartPageDateCalendar.SelectedDate; User.SubtractFromPurchaseBalance(startPagePrice, "Start Page"); User.SaveBalances(); //Add to profit sources PoolDistributionManager.AddProfit(ProfitSource.StartPage, startPagePrice); } NewAdPackAdvert.Save(); //Clear all ClearAll(); BindDataToCampaignsDDL(); //Display info SPanel.Visible = true; if (User.Name == AppSettings.RevShare.AdminUsername) { SText.Text = U3501.ADCREATED; } else { SText.Text = U4200.ADAWAITSAPPROVAL; } AdPacksAdGridView.DataBind(); } catch (MsgException ex) { EPanel.Visible = true; EText.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); throw ex; } }
protected void Page_Load(object sender, EventArgs e) { User = Member.CurrentInCache; AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.AdvertSurfAdsEnabled && User.IsAdvertiser); RegularExpressionValidator2.ValidationExpression = RegexExpressions.AdWebsiteUrl; Form.Action = Request.RawUrl; if (!Page.IsPostBack) { BindDataToCampaignsDDL(); BindDataToPacksDDL(); Button1.Text = L1.BUY + " " + U5004.SURFADS; Button2.Text = U4200.ADVERTISEMENTS; Button3.Text = L1.MANAGE; NewAdPackAdvert = null; StartPageDescriptionLiteral.Visible = StartPagePlaceHolder.Visible = AppSettings.RevShare.AdPack.IsStartPageEnabled; if (User.Name == AppSettings.RevShare.AdminUsername) { AdminLiteral.Visible = true; AdminLiteral.Text = @"<br/><br/><b>Administrator's advertisements are automatically approved and will appear in the surf queue if there are not enough ads created by users (no need to buy Surf Ads).</b>"; StartPageDescriptionLiteral.Text = "<br/>Administrator's Start Pages will not be considered."; } else { AdminLiteral.Visible = false; StartPageDescriptionLiteral.Text = "<br/>" + U5001.STARTPAGEDESCRIPTION; } PurchaseStartPageCheckBox.Text = " " + L1.BUY + " " + U5001.STARTPAGE + "<span style='font-size:smaller'> (" + U5003.STARTPAGEINFO + ")</span>"; surfAdsPack = new SurfAdsPack(Convert.ToInt32(PacksDropDown.SelectedValue)); PackPriceLabel.Text = surfAdsPack.Price.ToClearString(); } ScriptManager.RegisterStartupScript(MultiViewUpdatePanel, GetType(), "TBChanged", "TBChanged();", true); LangAdder.Add(RegularExpressionValidator1, L1.ER_INVALIDTITLE); LangAdder.Add(UserNameRequired, L1.REQ_TITLE); HintAdder.Add(Title, L1.H_TITLE); LangAdder.Add(CorrectEmailRequired, L1.ER_BADDESC); HintAdder.Add(Description, L1.H_DESCRIPTION); LangAdder.Add(PasswordRequired, L1.REQ_URL); LangAdder.Add(RegularExpressionValidator2, L1.ER_BADURL); HintAdder.Add(URL, L1.H_URL); ChangeAdvertInfoPlaceholder.Visible = AppSettings.RevShare.AdPack.EnableAdvertChange; //JS changes URL.Attributes.Add("onfocus", "if (getElementById('" + URL.ClientID + "').value == 'http://') getElementById('" + URL.ClientID + "').value = ''"); bool hasAvailableAdverts = AdPackManager.HasAvailableAdverts(User.Id); DropDownAdsPlaceHolder.Visible = PurchaseButton.Visible = DropDownAdsPlaceHolder2.Visible = ChangeCampaignButton.Visible = hasAvailableAdverts; RedirectToNewAdsButton2.Visible = !hasAvailableAdverts; PurchaseButton.Text = L1.BUY; CreateAdButton.Text = U4200.CREATE; AdPacksAdGridView.EmptyDataText = U4200.NOADS; AdPacksAdGridView.Columns[2].HeaderText = L1.TITLE; AdPacksAdGridView.Columns[3].HeaderText = L1.DESCRIPTION; AdPacksAdGridView.Columns[4].HeaderText = U6008.ADDEDAS; AdPacksAdGridView.Columns[5].HeaderText = L1.STATUS; AdPacksAdGridView.Columns[6].HeaderText = U6008.TARGETURL; StartPageCalendarPanel.Visible = PurchaseStartPageCheckBox.Checked; }
protected void Page_Load(object sender, EventArgs e) { if (Member.IsLogged && AppSettings.RevShare.IsRevShareEnabled) { Member member = Member.CurrentInCache; int dailyRequiredClicks = member.Membership.AdPackDailyRequiredClicks; if (dailyRequiredClicks > 0) { ContainerPlaceHolder.Visible = true; if (AppSettings.RevShare.DistributionTime != DistributionTimePolicy.EveryWeek) { //Vacation Mode if (member.Status == MemberStatus.VacationMode) { StatusLiteral.Text = U5003.YOUWILL2.Replace("%p%", AppSettings.RevShare.AdPack.AdPackName); } //Registered today else if (member.Registered.Date == DateTime.Now.Date) { StatusLiteral.Text = U5003.YOUWILL3.Replace("%p%", AppSettings.RevShare.AdPack.AdPackName) .Replace("%l%", String.Format("<b>{0}</b>", dailyRequiredClicks)); } else if (member.RevenueShareAdsWatchedYesterday >= dailyRequiredClicks) { StatusLiteral.Text = U5003.YOUWILL1.Replace("%p%", AppSettings.RevShare.AdPack.AdPackName) .Replace("%l%", String.Format("{0}", dailyRequiredClicks)) .Replace("%n%", String.Format("<b>{0}</b>", member.RevenueShareAdsWatchedYesterday)); } else { StatusLiteral.Text = U5003.YOUWILLNOT1.Replace("%p%", AppSettings.RevShare.AdPack.AdPackName) .Replace("%l%", String.Format("{0}", dailyRequiredClicks)) .Replace("%n%", String.Format("<b>{0}</b>", member.RevenueShareAdsWatchedYesterday)); } } else { var adsViewed = member.RSAPTCAdsViewed.Count; string coloredAdsViewed; if (adsViewed < member.Membership.AdPackDailyRequiredClicks) { coloredAdsViewed = string.Format("<span style={0}>{1}</span>", "'color: #cb6f1b; font-weight: bold;'", adsViewed); } else { coloredAdsViewed = string.Format("<span style={0}>{1}</span>", "'color: #87a131; font-weight: bold;'", adsViewed); } string timeLeft = Prem.PTC.Utils.TimeSpanExtensions.ToFriendlyDisplay(AdPackManager.GetAdSurfDeadline(), 3); StatusLiteral.Text = string.Format(U6003.ADPACKTIMEDESC, dailyRequiredClicks, coloredAdsViewed, dailyRequiredClicks, timeLeft); } } } }
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"); } }
protected void DirectRefsGridView_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { if (TitanFeatures.IsTrafficThunder) { e.Row.Cells[17].Text = "Comission"; e.Row.Cells[20].Visible = false; for (int i = 0; i < 27; i++) { e.Row.Cells[i].Style.Add("color", "#f15f79"); } } else { e.Row.Cells[17].Text = U4000.MONEY; } if (!AppSettings.TitanFeatures.UpgradeEnabled) { e.Row.Cells[21].Visible = false; } if (!AppSettings.Ethereum.ERC20TokenEnabled) { e.Row.Cells[18].Visible = false; } } if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[0].Text = ""; var chbox = ((HtmlInputCheckBox)e.Row.FindControl("chkSelect")); chbox.Attributes.Add("onclick", SelectedPanel.ClientID + ".style.display = 'block';hideIfUnchecked('" + SelectedPanel.ClientID + "');"); //Create an instance of the datarow var userName = e.Row.Cells[19].Text; Member User = new Member(userName); //Lets generate avatar + colored login OR encrypt if (AppSettings.DirectReferrals.AreUsernamesEncrypted) { e.Row.Cells[2].Text = MemberAuthenticationService.ComputeHash(userName).Substring(0, 16); } else { e.Row.Cells[2].Text = HtmlCreator.CreateAvatarPlusUsername(User); } if (TitanFeatures.isAri) { e.Row.Cells[6].Text = User.ActiveAdPacks.ToString(); } //Count the AVG [] Clicks[] RegDate[] int clicks = Int32.Parse(e.Row.Cells[10].Text); DateTime registered = Convert.ToDateTime(e.Row.Cells[7].Text); if (registered < AppSettings.ServerTime.AddYears(-100)) { e.Row.Cells[7].Text = Member.CurrentInCache.Registered.ToShortDateString(); } e.Row.Cells[11].Text = HtmlCreator.GetColoredAVGValue(RentReferralsSystem.GetAVG(clicks, registered)); //Last activity[5] string lastActivityString; if (string.IsNullOrEmpty(e.Row.Cells[8].Text) || e.Row.Cells[8].Text == " " || Convert.ToDateTime(e.Row.Cells[8].Text) < DateTime.Now.AddYears(-100)) { lastActivityString = "<i>" + L1.NEVER + "</i>"; } else { DateTime lastActivity = Convert.ToDateTime(e.Row.Cells[8].Text); int days = (int)Math.Ceiling(DateTime.Now.Subtract(lastActivity).TotalDays); switch (days) { case 1: lastActivityString = L1.TODAY; break; case 2: lastActivityString = L1.YESTERDAY; break; default: lastActivityString = days.ToString() + " " + L1.DAYSAGO; break; } } e.Row.Cells[8].Text = lastActivityString; e.Row.Cells[15].Text = new Money(Convert.ToDecimal(e.Row.Cells[15].Text)).ToString(); e.Row.Cells[17].Text = Money.Parse(e.Row.Cells[17].Text).ToString(); if (AppSettings.Ethereum.ERC20TokenEnabled) { e.Row.Cells[18].Text = (new CryptocurrencyMoney(CryptocurrencyType.ERC20Token, Decimal.Parse(e.Row.Cells[18].Text))).ToString(); } else { e.Row.Cells[18].Visible = false; } if (AppSettings.DirectReferrals.DirectReferralBuyingEnabled && User.ReferrerExpirationDate.HasValue) { e.Row.Cells[20].Text = GetTimeToExpiration(User.ReferrerExpirationDate.Value); } else if (AppSettings.DirectReferrals.DirectReferralExpirationEnabled) { var expirationDate = Convert.ToDateTime(e.Row.Cells[20].Text).AddDays(AppSettings.DirectReferrals.DirectReferralExpiration); e.Row.Cells[20].Text = GetTimeToExpiration(expirationDate); } else { e.Row.Cells[20].Text = "-"; } e.Row.Cells[21].Text = new Membership(Convert.ToInt32(e.Row.Cells[21].Text)).Name; if (!AppSettings.TitanFeatures.UpgradeEnabled) { e.Row.Cells[21].Visible = false; } if (TitanFeatures.IsTrafficThunder) { e.Row.Cells[20].Visible = false; } if (TitanFeatures.IsSardaryify) { // Get id of current user // Id is in the last column var id = Convert.ToInt32(e.Row.Cells[26].Text); e.Row.Cells[23].Text = AdPackManager.GetNumberOfUsersAdPacks(id, true).ToString(); e.Row.Cells[24].Text = Member.GetDirectReferralsCount(id).ToString(); var amount = TableHelper.SelectScalar(string.Format(@" SELECT SUM(Price) FROM Adpacks AS A JOIN AdPackTypes AS B ON A.AdPackTypeId = B.Id WHERE A.UserId = {0} AND BalanceBoughtType = {1} ", id, (int)PurchaseBalances.Cash)).ToString(); Money amountInMoney; if (!string.IsNullOrWhiteSpace(amount)) { amountInMoney = Money.Parse(amount); } else { amountInMoney = new Money(0); } e.Row.Cells[25].Text = amountInMoney.ToString(); } } }
protected void CreateGroupButton_Click(object sender, EventArgs e) { SPanel.Visible = false; EPanel.Visible = false; try { if (!AdPacksPlaceHolder.Visible) { throw new MsgException(U4200.YOUMUSTCLOSEGROUPS); } int userGroupId = Convert.ToInt32(GroupsAvailableToOpen.SelectedValue); int numberOfAdPacks = 0; try { numberOfAdPacks = Convert.ToInt32(AdPacksTextBox.Text); } catch (Exception ex) { throw new MsgException(U4000.BADFORMAT); } if (numberOfAdPacks <= 0) { throw new MsgException(U4200.CANTBUYZEROADPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackName)); } var customGroup = new CustomGroup(userGroupId); var usersHighestClosedNumber = CustomGroupManager.GetUsersHighestClosedGroup(User); var allAdPacksList = AdPackManager.GetUsersActiveAdPacksForGroups(User.Id, customGroup); IEnumerable <AdPack> adPacksList = (from a in allAdPacksList select a).Take(numberOfAdPacks); if (adPacksList.Count() < numberOfAdPacks) { throw new MsgException(U4200.NOTENOUGHADPACKSAVAILABLEFORGROUPS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural)); } //HAS USER CLOSED A GROUP WITH A LOWER NUMBER? if (customGroup.Number > usersHighestClosedNumber + 1) { throw new MsgException(U4200.CANTCREATEGROUPOFTHISTYPE); } //MIN NUMBER OF PACKS TO CREATE if (customGroup.CreatorsMinNumberOfAdPacks > numberOfAdPacks) { throw new MsgException(U4200.MOREADPACKSREQUIRED.Replace("%n%", customGroup.CreatorsMinNumberOfAdPacks.ToString()).Replace("%p%", AppSettings.RevShare.AdPack.AdPackNamePlural)); } //NUMBER OF PACKS TO CLOSE if (customGroup.AdPacksLimit < numberOfAdPacks) { throw new MsgException(U4200.TOOMANYPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + " " + customGroup.AdPacksLimit); } //MAX OPEN INSTANCES if (CustomGroupManager.GetNumberOfUsersCustomGroupInstances(User.Id, customGroup.Id) >= customGroup.NumberOfGroupsLimit) { throw new MsgException("You cannot exceed your group open instances limit"); } //MAX ADMIN ADPACKS if (customGroup.CreatorsMaxNumberOfAdPacks < numberOfAdPacks) { throw new MsgException(U4200.TOOMANYPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + " " + customGroup.CreatorsMaxNumberOfAdPacks); } string name = GroupNameTextBox.Text; string description = GroupDescriptionTextBox.Text; string videoURL = PromoUrlTextBox.Text; string email = EmailTextBox.Text; string skype = SkypeTextBox.Text; string phoneNumber = PhoneNumberTextBox.Text; string facebookURL = FacebookUrlTextBox.Text; if (!string.IsNullOrWhiteSpace(facebookURL) && !facebookURL.Contains("facebook.com")) { throw new MsgException(L1.ER_BADURL); } //IFRAME VALID? if (!string.IsNullOrWhiteSpace(videoURL) && !UrlVerifier.IsIframeValid(videoURL)) { throw new MsgException(U4200.INVALIDIFRAME); } CustomGroupManager.CreateUserCustomGroup(NewCustomGroup, customGroup, adPacksList, User, name, description, videoURL, email, skype, phoneNumber, facebookURL); SPanel.Visible = true; string groupUrl = string.Format("{0}user/advert/groups/customgroup.aspx?g={1}", AppSettings.Site.Url, NewCustomGroup.Id); SText.Text = U4200.CREATEGROUPSUCCESS.Replace("%n%", name).Replace("%p%", numberOfAdPacks + " " + AppSettings.RevShare.AdPack.AdPackNamePlural).Replace("%u%", "<br/>" + groupUrl); if (NewCustomGroup.AdPacksAdded >= customGroup.AdPacksLimit) { if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase) { CustomGroupManager.IncreaseAdPacksReturnAmountInClosedGroup(customGroup, NewCustomGroup); } SText.Text += "<br/>" + U5001.CREATORCLOSECUSTOMGROUPSUCCESS.Replace("%a%", AppSettings.RevShare.AdPack.AdPackName) .Replace("%b%", (customGroup.AcceleratedProfitPercentage).ToString()); NewCustomGroup.Status = CustomGroupStatus.Active; } else { NewCustomGroup.Status = CustomGroupStatus.InProgress; } NewCustomGroup.Save(); BindToGroupsAvailableToOpenRadio(); UpdateAvailableAdPacks(); ClearControls(); } catch (MsgException ex) { EPanel.Visible = true; EText.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); } }
private static int RefreshAndGetValue(NotificationType type, Member user = null) { if (!Member.IsLogged) { return(0); } if (user == null) { user = Member.CurrentInCache; } switch (type) { case NotificationType.NewAds: List <PtcAdvert> AvailableAdList = PtcAdvert.GetActiveAdsForUser(user); int newAdsCounter = 0; foreach (PtcAdvert Ad in AvailableAdList) { if (!user.AdsViewed.Contains(Ad.Id)) { newAdsCounter++; } } return(newAdsCounter); case NotificationType.NewMessages: return(ConversationMessage.GetNumberOfUnreadMessages(Member.CurrentId)); case NotificationType.NewDirectReferrals: using (var bridge = ParserPool.Acquire(Database.Client)) { return((int)bridge.Instance.ExecuteRawCommandScalar("SELECT COUNT (*) FROM Users WHERE IsSpotted = 0 AND ReferrerId = " + Member.CurrentId)); } case NotificationType.NewAchievements: return(user.UnspottedAchievements); case NotificationType.NewCPAOffers: //CPAOFfers //User is already loaded var OM = new OffersManager(user); return(OM.AllActiveOffersForMember.Count); case NotificationType.UnreadSupportTickets: return((int)TableHelper.SelectScalar(String.Format("SELECT COUNT(*) FROM SupportTickets WHERE IsRead = 0 AND FromUsername = '******'", Member.CurrentName))); case NotificationType.NewAdPacksAds: List <AdPacksAdvert> AdPacksAdList = AdPackManager.GetAdPacksAdvertsForUsers(user.Membership.AdPackDailyRequiredClicks); int numberofAdsViewed = user.RSAPTCAdsViewed.Count(); int adsRequiredToWatch = user.Membership.AdPackDailyRequiredClicks - numberofAdsViewed; if (adsRequiredToWatch <= 0) { return(0); } if (adsRequiredToWatch > AdPacksAdList.Count) { int adCount = 0; foreach (AdPacksAdvert ad in AdPacksAdList) { if (!user.RSAPTCAdsViewed.Contains(ad.Id)) { adCount++; } } return(adCount); } return(adsRequiredToWatch); case NotificationType.UnassignedMatrixMembers: return(user.GetUnassignedMatrixMembersCount()); case NotificationType.PendingRepresentativePaymentRequest: return(ConversationMessage.GetPendingRequestForRepresentativeCount(user.Id)); default: return(0); } }
public static void AddRemoveUsersAdPacksToCustomGroup(int userId, int numberOfAdPacks, UserCustomGroup userCustomGroup, bool join) { CustomGroup customGroup = new CustomGroup(userCustomGroup.CustomGroupId); if (userId == userCustomGroup.CreatorUserId && !join) { var packsAvailableToWithdraw = AdPackManager.GetUsersActiveAdPacksForGroups(userId, customGroup, userCustomGroup.Id).Count - customGroup.CreatorsMinNumberOfAdPacks; if (numberOfAdPacks > packsAvailableToWithdraw) { throw new MsgException(U4200.NOTENOUGHADPACKSAVAILABLEFORGROUPS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural)); } } List <AdPack> allAdPacksList; if (join) { allAdPacksList = AdPackManager.GetUsersActiveAdPacksForGroups(userId, customGroup, -1); } else { allAdPacksList = AdPackManager.GetUsersActiveAdPacksForGroups(userId, customGroup, userCustomGroup.Id); } //HAS ENOUGH ADPACKS? if (allAdPacksList.Count < numberOfAdPacks) { throw new MsgException(U4200.NOTENOUGHADPACKSAVAILABLEFORGROUPS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural)); } IEnumerable <AdPack> adPacksList = (from a in allAdPacksList select a).Take(numberOfAdPacks); //NUMBER OF PACKS TO CLOSE if (join) { if (customGroup.AdPacksLimit - userCustomGroup.AdPacksAdded < numberOfAdPacks) { throw new MsgException(U4200.TOOMANYPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + " " + (customGroup.AdPacksLimit - userCustomGroup.AdPacksAdded)); } //Max number of creator/user adpack limit check var myCurrentAdPacksInThisGroupCount = AdPackManager.GetUsersActiveAdPacksForGroups(userId, customGroup, userCustomGroup.Id).Count; bool IsGroupCreator = userId == userCustomGroup.CreatorUserId; if (IsGroupCreator && myCurrentAdPacksInThisGroupCount + numberOfAdPacks > customGroup.CreatorsMaxNumberOfAdPacks) { throw new MsgException(U4200.TOOMANYPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + " " + (customGroup.CreatorsMaxNumberOfAdPacks - myCurrentAdPacksInThisGroupCount)); } if (!IsGroupCreator && myCurrentAdPacksInThisGroupCount + numberOfAdPacks > customGroup.UsersMaxNumberOfAdPacks) { throw new MsgException(U4200.TOOMANYPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + " " + (customGroup.UsersMaxNumberOfAdPacks - myCurrentAdPacksInThisGroupCount)); } } else { if (customGroup.AdPacksLimit == userCustomGroup.AdPacksAdded) { throw new MsgException("Can't leave closed group"); } } if (join) { userCustomGroup.AdPacksAdded += numberOfAdPacks; foreach (AdPack adpack in adPacksList) { adpack.UserCustomGroupId = userCustomGroup.Id; adpack.Save(); } } else { userCustomGroup.AdPacksAdded -= numberOfAdPacks; foreach (AdPack adpack in adPacksList) { adpack.UserCustomGroupId = -1; adpack.Save(); } } userCustomGroup.Save(); }