示例#1
0
    public void AddPrize(ref LevelNotification notification)
    {
        Random random            = new Random();
        int    RandomBetween1100 = random.Next(1, 101);

        if (RandomBetween1100 <= membership.LevelChanceToWinAnyAward)
        {
            RandomBetween1100 = random.Next(1, 101);
            int PercentHelper = 0;

            if (membership.LevelPointsPrizeChance > 0 && RandomBetween1100 <= PercentHelper + membership.LevelPointsPrizeChance)
            {
                int amount = random.Next(membership.LevelPointsPrizeMin, membership.LevelPointsPrizeMax);
                if (amount > 0)
                {
                    History.Add(user.Name, "Levelup Reward: " + amount + " " + AppSettings.PointsName);
                    user.AddToPointsBalance(amount, "Levelup Reward", triggerActions: false);
                    user.SaveBalances();
                    notification.PointsReward = amount;
                }
            }
            PercentHelper += membership.LevelPointsPrizeChance;

            if (membership.LevelAdCreditsChance > 0 && RandomBetween1100 <= PercentHelper + membership.LevelAdCreditsChance)
            {
                int amount = random.Next(membership.LevelAdCreditsMin, membership.LevelAdCreditsMax);
                if (amount > 0)
                {
                    History.Add(user.Name, "Levelup Reward: " + amount + " " + U5006.ADCREDITS);
                    user.AddToPTCCredits((decimal)amount, "Levelup Reward");
                    user.SaveBalances();
                    notification.PTCCreditsReward = amount;
                }
            }
            PercentHelper += membership.LevelAdCreditsChance;

            if (membership.LevelDRLimitIncreasedChance > 0 && RandomBetween1100 <= PercentHelper + membership.LevelDRLimitIncreasedChance)
            {
                int amount = random.Next(membership.LevelDRLimitIncreasedMin, membership.LevelDRLimitIncreasedMax);
                if (amount > 0)
                {
                    History.Add(user.Name, "Levelup Reward: " + U5008.DRLIMITENLARGEDBY + " " + amount);
                    user.DirectReferralLimitEnlargedBy += amount;
                    user.Save();
                    notification.DRLimitReward = amount;
                }
            }
        }
    }
示例#2
0
    public static void TryDisplay(LevelNotification notification)
    {
        if (notification == null || notification.IsDisplayed)
        {
            return;
        }

        string title          = U5006.GRATZ;
        string membershipName = notification.MembershipName;

        StringBuilder sb = new StringBuilder();

        sb.Append("<img src=\"Images/Misc/newlevel.png\"/><br/>");

        if (notification.IsUpgrade)
        {
            sb.Append(U5006.REACHED);
            sb.AppendFormat(" <b>{0}</b>.", membershipName);
            if (notification.HasRewards)
            {
                sb.Append("<br>" + U5008.REWARDS + ":");
                if (notification.PTCCreditsReward.HasValue)
                {
                    sb.Append("<br>" + notification.PTCCreditsReward.Value + " " + U5006.ADCREDITS);
                }
                if (notification.PointsReward.HasValue)
                {
                    sb.Append("<br>" + notification.PointsReward.Value + " " + AppSettings.PointsName);
                }
                if (notification.DRLimitReward.HasValue)
                {
                    sb.Append("<br>" + U5008.DRLIMITENLARGEDBY + " " + notification.DRLimitReward.Value);
                }
            }
        }
        else
        {
            title = U5008.SORRYDOWNGRADE;
            sb.Append(U5008.SORRYDOWNGRADETO);
            sb.AppendFormat(" <b>{0}</b>.", membershipName);
        }
        notification.IsDisplayed = true;
        notification.Save();

        NotificationUtils.DisplayCenteredNotification(title, sb.ToString());
    }
示例#3
0
    public static void PointsChanged(Member user, bool setMinPoints = true, bool triggerActions = true)
    {
        if (AppSettings.Points.LevelMembershipPolicyEnabled)
        {
            var properMembership = LevelMemberships.Get(user.PointsBalance);

            if (user.MembershipId != properMembership.Id)
            {
                string oldMembershipName = user.Membership.Name;

                var notification = new LevelNotification
                {
                    UserId = user.Id
                };

                if (user.Membership.MinPointsToHaveThisLevel <= user.PointsBalance)
                {
                    user.Upgrade(properMembership);
                    History.AddLevelUp(user.Name, user.Membership.Name);
                    if (triggerActions)
                    {
                        //Add random levelup prize
                        LevelupManager manager = new LevelupManager(user);
                        manager.AddPrize(ref notification);
                    }

                    notification.IsUpgrade = true;
                }
                else
                {
                    user.Downgrade(properMembership, setMinPoints);

                    var membershipName = user.Membership.Name;
                    History.AddLevelExpiration(user.Name, membershipName);
                    notification.IsUpgrade = false;
                }

                notification.MembershipName = properMembership.Name;
                notification.IsDisplayed    = false;
                notification.Save();
            }
        }
    }
示例#4
0
    public void PageLoad()
    {
        HttpContext context = HttpContext.Current;
        Page        page    = (Page)context.Handler;

        if (Member.IsLogged)
        {
            if (!page.IsPostBack)
            {
                Member User = Member.CurrentInCache;

                //Member status check
                if (User.LastLogged != null && User.LastLogged.Value < DateTime.Now.AddDays(-3))
                {
                    //Member was logged but the data hasn't been updated
                    //E.g. long cookie time expiration
                    User.Login();
                    User.Save();
                }

                //Redeirect if account activation fee is turned on and is not paid for current user
                if (AppSettings.Registration.IsAccountActivationFeeEnabled && !User.IsAccountActivationFeePaid && !AppSettings.Authentication.AnonymousMemberEnabled)
                {
                    if (AppSettings.Registration.AccountActivationFeeVia == AccountActivationFeeVia.MainSite)
                    {
                        HttpContext.Current.Response.Redirect("~/sites/activation.aspx");
                    }

                    if (!HttpContext.Current.Request.Url.AbsolutePath.StartsWith("/user/transfer.aspx") && !HttpContext.Current.Request.Url.AbsolutePath.StartsWith("/user/default.aspx"))
                    {
                        HttpContext.Current.Response.Redirect("~/user/default.aspx");
                    }
                }

                //Notifications
                HasNotifications = (bool)context.Application["HasNotifications"];

                if (HasNotifications && (User.CPAOfferCompletedBehavior == CPACompletedBehavior.PopupOnScreen ||
                                         User.CPAOfferCompletedBehavior == CPACompletedBehavior.PopupAndSendEmail))
                {
                    DisplayNotifications = true;
                }

                if (LastLastActivityRefreshTime < DateTime.Now.AddMinutes(-5))
                {
                    LastLastActivityRefreshTime = DateTime.Now;
                    User.UpdateLastActivityTime();
                }

                if (AppSettings.Points.LevelMembershipPolicyEnabled)
                {
                    var levelNotifications = LevelNotification.Get(User.Id, false);
                    foreach (var n in levelNotifications)
                    {
                        LevelNotification.TryDisplay(n);
                    }
                }
            }

            //Disable cache for all User.master inner pages
            //So when you logout, you can't click Browser Back button and see all private content
            HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
            HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
            HttpContext.Current.Response.AddHeader("Expires", "0");
        }
    }