Esempio n. 1
0
        public bool CanMemberParticipate(Member User, bool obeyParticipateCheck = false)
        {
            int numberOfReferrals = 0;

            //1. check if he is not already participating

            if (obeyParticipateCheck == false && IsMemberParticipating(User.Name, true))
            {
                return(false);
            }

            //2. Check requirements
            if (User.TotalClicks < this.ClicksRestriction)
            {
                return(false);
            }

            if (User.Registered > DateTime.Now.AddDays(-this.RegisteredDaysRestriction))
            {
                return(false);
            }

            if (this.DirectRefRestriction > 0 && User.GetDirectReferralsCount() < this.DirectRefRestriction)
            {
                return(false);
            }

            if (this.RentedRefRestriction > 0)
            {
                var rrm = new RentReferralsSystem(User.Name, User.Membership);
                if (rrm.GetUserRentedReferralsCount() < this.RentedRefRestriction)
                {
                    return(false);
                }
            }

            //3. Check blacklist
            var BlockedContestsForMember = TableHelper.SelectRows <ContestsBlocked>(TableHelper.MakeDictionary("UserId", User.Id));

            foreach (var elem in BlockedContestsForMember)
            {
                if (elem.ContestId == this.Id)
                {
                    return(false);
                }
            }

            if (UsersBannedFromContestsType.IsBannedFromContestType(this.Id, this.Type))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
    private bool HasValidRequirements(Member User, ReferralPackage pack, RentReferralsSystem rrs, bool throwsMsgException)
    {
        bool isValid = true;

        try
        {
            //Limit
            if (AppSettings.Referrals.Renting != AppSettings.Referrals.RentingOption.DirectReferrals &&
                (pack.RefsInPackage + rrs.GetUserRentedReferralsCount() > User.Membership.RentedReferralsLimit))
            {
                throw new MsgException(L1.ER_RENT_LIMIT);
            }

            if (AppSettings.Referrals.Renting == AppSettings.Referrals.RentingOption.DirectReferrals &&
                (pack.RefsInPackage + User.GetDirectReferralsCount() > User.Membership.DirectReferralsLimit))
            {
                throw new MsgException(L1.ER_RENT_LIMIT);
            }

            //Min clicks
            if (AppSettings.Referrals.MinTotalClicksToRentRefs > User.TotalClicks)
            {
                throw new MsgException(L1.ER_RENT_CLICKS);
            }

            //Renting interval
            if (User.LastRentDate != null && ((DateTime)User.LastRentDate).AddDays(User.Membership.MinRentingInterval.Days) > DateTime.Now)
            {
                throw new MsgException(L1.ER_RENT_INTERVAL);
            }

            //Lets validate the money
            Money totalCost = CalculatePackCost(User, pack);
            if (totalCost > User.PurchaseBalance)
            {
                throw new MsgException(L1.NOTENOUGHFUNDS);
            }

            //Max ref package
            if (pack.RefsInPackage > User.Membership.MaxRefPackageCount)
            {
                throw new MsgException(U2502.ER_EXCEEDPACKAGE);
            }
        }
        catch (MsgException ex)
        {
            isValid = false;
            if (throwsMsgException)
            {
                throw ex;
            }
        }
        return(isValid);
    }
Esempio n. 3
0
        public void CreditUser(Money amount, string what, TrafficGridPrizeType type, int?points = null)
        {
            switch (type)
            {
            case TrafficGridPrizeType.PurchaseBalance:
                User.AddToPurchaseBalance(amount, "TrafficGrid win", BalanceLogType.Other);
                User.SaveBalances();
                History.AddTrafficGridWin(User.Name, what);
                break;

            case TrafficGridPrizeType.MainBalance:
                CreditMainBalance(amount, "TrafficGrid win", BalanceLogType.Other);
                History.AddTrafficGridWin(User.Name, what);
                break;

            case TrafficGridPrizeType.TrafficBalance:
                User.AddToTrafficBalance(amount, "TrafficGrid win", BalanceLogType.Other);
                User.SaveBalances();
                History.AddTrafficGridWin(User.Name, what);
                break;

            case TrafficGridPrizeType.DirectReferralLimit:
                User.DirectReferralLimitEnlargedBy++;
                User.Save();
                History.AddTrafficGridWin(User.Name, what);
                break;

            case TrafficGridPrizeType.RentedReferrals:
                var rrm = new RentReferralsSystem(User.Name, User.Membership);
                if (rrm.GetUserRentedReferralsCount() >= User.Membership.RentedReferralsLimit)
                {
                    throw new MsgException(L1.WONERROR);
                }
                rrm.RentReferrals(1);
                History.AddTrafficGridWin(User.Name, what);
                break;

            case TrafficGridPrizeType.Points:
                CreditPoints(points.Value, "TrafficGrid win", BalanceLogType.Other);
                History.AddTrafficGridWin(User.Name, what);
                break;
            }
        }
Esempio n. 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.ReferralsRentedEnabled);

        Member User = Member.Current;
        RentReferralsSystem rrs;

        //For Chrome compatibility
        Context.Response.AppendHeader("X-XSS-Protection", "0");

        //Lets check if user clicked the pack and want to make a purchase
        if (Request.Params.Get("__PACKID") != null && IsParameterANumber() && !AppSettings.Site.TrafficExchangeMod)
        {
            SuccMessagePanel.Visible  = false;
            ErrorMessagePanel.Visible = false;

            int packID = Int32.Parse(Request.Params.Get("__PACKID"));
            rrs = new RentReferralsSystem(User.Name, User.Membership);

            try
            {
                AppSettings.DemoCheck();

                ReferralPackage pack = new ReferralPackage(packID);

                // Check if all valid
                HasValidRequirements(User, pack, rrs, true);

                //Purchase the pack and save the user
                rrs.RentReferrals(pack.RefsInPackage); //throws MsgException if no ref available

                Money totalPrice = CalculatePackCost(User, pack);
                User.SubtractFromPurchaseBalance(totalPrice, "Ref: rent");
                User.LastRentDate = DateTime.Now;

                //Check if achievement should be applied
                rrs = new RentReferralsSystem(User.Name, User.Membership);
                User.TryToAddAchievements(
                    Prem.PTC.Achievements.Achievement.GetProperAchievements(
                        Prem.PTC.Achievements.AchievementType.AfterHavingRentedReferrals, rrs.GetUserRentedReferralsCount()));

                User.Save();

                // 4. Write success info
                SuccMessagePanel.Visible = true;
                SuccMessage.Text         = U3501.REFSUCC;

                //Ad history entry
                History.AddPurchase(User.Name, totalPrice, pack.RefsInPackage.ToString() + " rented referrals");
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
        }

        //Lang
        DirectRefsGridView.EmptyDataText = L1.NORENTEDREFERRALS;
        LangAdder.Add(Button1, L1.MANAGE);
        LangAdder.Add(Button2, L1.RENTNEW);
        UserName.Text            = Member.CurrentName;
        RemoveButton.Text        = L1.REMOVE;
        RecycleButton.Text       = string.Format("{0} ({1} {2})", L1.RECYCLE, User.Membership.RentedReferralRecycleCost, U6011.PERONE);
        AutopayAllOnButton.Text  = AutopayOnButton.Text = U6004.AUTOPAYON;
        AutopayAllOffButton.Text = AutopayOffButton.Text = U6004.AUTOPAYOFF;
        RenewButton.Text         = L1.RENEW;
        //Data
        rrs                    = new RentReferralsSystem(User.Name, User.Membership);
        RefLimit.Text          = User.Membership.RentedReferralsLimit.ToString();
        MaxRefPack.Text        = User.Membership.MaxRefPackageCount.ToString();
        RefCount.Text          = rrs.GetUserRentedReferralsCount().ToString();
        RentalTimeLabel.Text   = AppSettings.RentedReferrals.CanBeRentedFor.Days.ToString();
        RefGauranteeLabel.Text = (AppSettings.RentedReferrals.MinLastClickingActivity == TimeSpan.MinValue) ?
                                 L1.NONE : L1.CLICKEDINLAST + " " + AppSettings.RentedReferrals.MinLastClickingActivity.Days.ToString() + " " + L1.DAYS;
        MinClicksLabel.Text     = AppSettings.Referrals.MinTotalClicksToRentRefs.ToString();
        LastRentedLiteral.Text  = (User.LastRentDate == null) ? L1.NEVER : User.LastRentDate.ToString();
        MinRentInterval.Text    = User.Membership.MinRentingInterval.Days.ToString();
        TotalClicksLiteral.Text = User.TotalClicks.ToString();

        //Autopay available?
        AutopayOnButton.Visible = AutopayOffButton.Visible =
            User.Membership.CanAutoPay && AppSettings.Referrals.RentedRefAutopayPolicy == AppSettings.Referrals.AutopayPolicy.UserChooses;

        AutopayAllPlaceHolder.Visible =
            User.Membership.CanAutoPay && AppSettings.Referrals.RentedRefAutopayPolicy == AppSettings.Referrals.AutopayPolicy.AllReferrals;

        //Generate pack images
        RefBoxesLiteral.Text = string.Empty;
        var packList = TableHelper.SelectAllRows <ReferralPackage>();

        packList.Sort(Comparison);

        for (int i = 0; i < packList.Count; ++i)
        {
            bool  isActive  = HasValidRequirements(User, packList[i], rrs, false);
            Money packPrice = CalculatePackCost(User, packList[i]);

            RefBoxesLiteral.Text += HtmlCreator.GenerateRentRefBox(packList[i].RefsInPackage, packPrice, isActive, packList[i].Id);
        }

        if (AppSettings.Referrals.Renting == AppSettings.Referrals.RentingOption.DirectReferrals)
        {
            InfoPlaceHolder.Visible       = false;
            Button1.Visible               = false;
            Button2.CssClass              = "ViewSelected";
            MenuMultiView.ActiveViewIndex = 1;
        }

        //Warning displays
        if (!User.HasClickedEnoughToProfitFromReferrals() && DirectRefsGridView.Rows.Count != 0)
        {
            WarningPanel.Visible = true;
            WarningLiteral.Text  = L1.REFNOPROFITS;
            WarningLiteral.Text  = WarningLiteral.Text.Replace("%n%", AppSettings.Referrals.MinDailyClicksToEarnFromRefs.ToString());
        }

        RemoveButton.Visible  = AppSettings.RentedReferrals.IsDeletingEnabled;
        RecycleButton.Visible = AppSettings.RentedReferrals.IsRecyclingEnabled;

        RegisterStartupGridViewCode(DirectRefsGridView, SelectedPanel, ref jsSelectAllCode);
    }