Пример #1
0
    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;
        }
    }
Пример #2
0
    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);
        }
    }
Пример #3
0
    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);
        }
    }
Пример #4
0
    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();
        }
    }
Пример #5
0
    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());
    }
Пример #6
0
    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";
        }
    }
Пример #7
0
    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;
            }
        }
    }
Пример #8
0
    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");
            }
        }
    }
Пример #10
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);
        }
    }
Пример #11
0
    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();
        }
    }
Пример #12
0
    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;
        }
    }
Пример #13
0
    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);
        }
    }
Пример #14
0
    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);
        }
    }
Пример #15
0
    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;
        }
    }
Пример #16
0
    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();
    }
Пример #17
0
        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());
        }
Пример #18
0
    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;
    }
Пример #19
0
    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;
        }
    }
Пример #20
0
    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;
    }
Пример #21
0
    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);
                }
            }
        }
    }
Пример #22
0
    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");
        }
    }
Пример #23
0
    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 == "&nbsp;" || 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();
            }
        }
    }
Пример #24
0
    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);
        }
    }
Пример #25
0
    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);
        }
    }
Пример #26
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();
    }