示例#1
0
    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));
        }
    }
示例#2
0
    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();
    }
示例#3
0
 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));
         }
     }
 }
示例#4
0
    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();
    }
示例#5
0
    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);
    }