private void ValidateAdPacksForReferrals() { var boughtAdPacks = AdPacksForOtherUsers.GetListByBuyer(Member.CurrentId); var targetUserId = Convert.ToInt32(CustomReferralsDropDownList.SelectedValue); var adPacksForUser = boughtAdPacks.FirstOrDefault(x => x.OwnerId == targetUserId); var maxAdPacks = AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser; if (adPacksForUser != null) { maxAdPacks = maxAdPacks - adPacksForUser.Count; } if (NumberOfPacks > maxAdPacks) { throw new MsgException(string.Format(U5008.CANTBUYADPACKFORTHISUSER, maxAdPacks, AppSettings.RevShare.AdPack.AdPackNamePlural)); } }
public static void AddOrUpdate(AdPacksForOtherUsers record, int buyerId, int ownerId, int count) { if (record != null) { record.Count += count; } else { record = new AdPacksForOtherUsers() { BuyerId = buyerId, OwnerId = ownerId, Count = count } }; record.Save(); }
public static void Validate(int buyerId, int ownerId, int count, out AdPacksForOtherUsers record) { record = Get(buyerId, ownerId).FirstOrDefault(); if (record != null) { if (record.Count + count > AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser) { throw new MsgException(string.Format(U5008.CANTBUYADPACKFORTHISUSER, AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser - record.Count, AppSettings.RevShare.AdPack.AdPackNamePlural)); } } else { if (count > AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser) { throw new MsgException(string.Format(U5008.CANTBUYADPACKFORTHISUSER, AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser, AppSettings.RevShare.AdPack.AdPackNamePlural)); } } }
private void BindDataToReferralsDDL() { CustomReferralsDropDownList.Items.Clear(); var referrals = Member.CurrentInCache.GetDirectReferralsList(); var boughtAdPacks = AdPacksForOtherUsers.GetListByBuyer(Member.CurrentId); for (int i = 0; i < referrals.Count; i++) { string itemValue = referrals[i].Id.ToString(); int boughtForUser = 0; var adPacksForUser = boughtAdPacks.FirstOrDefault(x => x.OwnerId == referrals[i].Id); if (adPacksForUser != null) { boughtForUser = adPacksForUser.Count; } string itemString = string.Format("{0} (max {1})", referrals[i].Name, AppSettings.RevShare.AdPack.MaxAdPacksForOtherUser - boughtForUser); ListItem item = new ListItem(itemString, itemValue); CustomReferralsDropDownList.Items.Insert(i, item); } CustomReferralsDropDownList.DataBind(); }
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); }