Example #1
0
        public int GetLeaderBonusPercent()
        {
            int closedGroup = CustomGroupManager.GetUsersHighestExpiredGroupNumber(this.Id);

            if (closedGroup == 1)
            {
                return(6);
            }

            if (closedGroup == 2)
            {
                return(7);
            }

            if (closedGroup == 3)
            {
                return(8);
            }

            if (closedGroup == 4)
            {
                return(9);
            }

            if (closedGroup == 5)
            {
                return(10);
            }

            return(5); //default
        }
Example #2
0
        public string GetLeaderColor()
        {
            int closedGroup = CustomGroupManager.GetUsersHighestExpiredGroupNumber(this.Id);

            if (closedGroup == 1)
            {
                return("#70981a");
            }

            if (closedGroup == 2)
            {
                return("#1fa5d7");
            }

            if (closedGroup == 3)
            {
                return("#cfaf1a");
            }

            if (closedGroup == 4)
            {
                return("#c63522");
            }

            if (closedGroup == 5)
            {
                return("#b123c1");
            }

            return("white"); //default
        }
Example #3
0
    private void BindToGroupsAvailableToOpenRadio()
    {
        GroupsAvailableToOpen.Items.Clear();

        var groups = CustomGroupManager.GetAvailableGroups(User.Id);
        var usersHighestClosedGroup = CustomGroupManager.GetUsersHighestClosedGroup(User);

        for (int i = 0; i < groups.Count; i++)
        {
            var    itemKey      = groups[i].Id.ToString();
            string profitString = "";

            if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Accelerate)
            {
                profitString = U4200.DAILYPROFITRAISEDBY;
            }

            else if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase)
            {
                profitString = U5001.PROFITRAISEDBY;
            }

            var itemString = " " + profitString + ": " + "<b>"
                             + ((AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase ?
                                 ("+" + (groups[i].AcceleratedProfitPercentage).ToString()) : groups[i].AcceleratedProfitPercentage.ToString()))
                             + "%</b>, "
                             + U5001.PACKSREQUIREDTOOPENCLOSE.Replace("%n%", AppSettings.RevShare.AdPack.AdPackNamePlural) + ": <b>"
                             + groups[i].CreatorsMinNumberOfAdPacks.ToString() + "/" + groups[i].AdPacksLimit.ToString() + "</b> "
                             + ", "
                             + U5001.OPENINSTANCES + ": <b>" + CustomGroupManager.GetNumberOfUsersCustomGroupInstances(User.Id, groups[i].Id) + "/" + groups[i].NumberOfGroupsLimit + "</b>";
            var isEnabled = true;

            if (CustomGroupManager.GetNumberOfUsersCustomGroupInstances(User.Id, groups[i].Id) >= groups[i].NumberOfGroupsLimit)
            {
                isEnabled = false;
            }

            if (groups[i].Number > usersHighestClosedGroup + 1)
            {
                isEnabled = false;
            }

            ListItem item = new ListItem(itemString, itemKey, isEnabled);

            GroupsAvailableToOpen.Items.Add(item);
        }
        if (GroupsAvailableToOpen.Items.Count <= 0)
        {
            ListItem item = new ListItem(U4200.YOUMUSTCLOSEGROUPS, "-1", false);
            GroupsAvailableToOpen.Items.Add(item);
        }
        GroupsAvailableToOpen.SelectedIndex = 0;
    }
Example #4
0
    private string GetParticipants()
    {
        StringBuilder sb = new StringBuilder();

        var participants = CustomGroupManager.GetParticipantNamesAndAdPackCount(userCustomGroup);

        foreach (var participant in participants)
        {
            sb.Append(MemberManager.getUsersProfileURL(participant.Key) + "(" + participant.Value + "), ");
        }

        string final = sb.ToString();

        if (!string.IsNullOrWhiteSpace(final))
        {
            final = final.Remove(final.Length - 2);
        }

        return(final);
    }
Example #5
0
    protected void JoinLeaveGroupButton_Click(object sender, EventArgs e)
    {
        SPanel.Visible = false;
        EPanel.Visible = false;

        try
        {
            int numberOfAdPacks = Convert.ToInt32(AdPacksTextBox.Text);

            if (numberOfAdPacks <= 0)
            {
                throw new MsgException(U4200.CANTBUYZEROADPACKS.Replace("%n%", AppSettings.RevShare.AdPack.AdPackName));
            }

            var TheButton = (Button)sender;

            if (TheButton.CommandArgument == "true")
            {
                CustomGroupManager.AddRemoveUsersAdPacksToCustomGroup(User.Id, numberOfAdPacks, userCustomGroup, true);
            }
            else if (TheButton.CommandArgument == "false")
            {
                CustomGroupManager.AddRemoveUsersAdPacksToCustomGroup(User.Id, numberOfAdPacks, userCustomGroup, false);
            }

            SPanel.Visible = true;
            if (TheButton.CommandArgument == "true")
            {
                SText.Text = U4200.JOINGROUPSUCCESS.Replace("%n%", userCustomGroup.Name).Replace("%p%", numberOfAdPacks + " " + AppSettings.RevShare.AdPack.AdPackNamePlural);
            }
            else if (TheButton.CommandArgument == "false")
            {
                SText.Text = U4200.LEAVEGROUPSUCCESS.Replace("%n%", numberOfAdPacks.ToString()).Replace("%p%", AppSettings.RevShare.AdPack.AdPackNamePlural);
            }

            CustomGroup customGroup = new CustomGroup(userCustomGroup.CustomGroupId);
            if (userCustomGroup.AdPacksAdded >= customGroup.AdPacksLimit)
            {
                if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Increase)
                {
                    CustomGroupManager.IncreaseAdPacksReturnAmountInClosedGroup(customGroup, userCustomGroup);
                }
                userCustomGroup.Status = CustomGroupStatus.Active;

                if (AppSettings.RevShare.AdPack.RevShareCustomGroupRewardsEnabled)
                {
                    GroupRewardManager.Apply(customGroup, userCustomGroup);
                }
            }
            else
            {
                userCustomGroup.Status = CustomGroupStatus.InProgress;
            }

            userCustomGroup.Save();

            UpdateAvailableAdPacks();
            DataBind();
        }
        catch (MsgException ex)
        {
            EPanel.Visible = true;
            EText.Text     = ex.Message;
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
        }
    }
    private static void DailyDistribution(bool HourDistribution = false, bool FinalDistributionButHourly = false)
    {
        DailyPool Pool = DailyPool.GetYesterdayPool(PoolsHelper.GetBuiltInProfitPoolId(Pools.AdPackRevenueReturn));

        String RaportMessage    = String.Empty;
        Int32  ActiveAdPacks    = 0;
        Money  TotalDistributed = Money.Zero;
        Money  PerUnit          = Money.Zero;
        Money  InThePool        = Pool.SumAmount;

        using (var bridge = ParserPool.Acquire(Database.Client))
        {
            DistributionSQLHelper DistributionHelper = new DistributionSQLHelper(bridge.Instance);
            DistributionHelper.SetStartingDistributionPriority();
            ActiveAdPacks = DistributionHelper.GetSumOfActiveAdPacks();

            try
            {
                if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.Classic)
                {
                    //Classic
                    //Nothing to change
                }
                if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.CustomGroups ||
                    AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticAndCustomGroups)
                {
                    //CustomGrups
                    if (AppSettings.RevShare.AdPack.CustomReturnOption == CustomReturnOption.Accelerate)
                    {
                        DistributionHelper.UpdatePrioritiesCustomGroups();
                    }
                }
                if (AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticGroups ||
                    AppSettings.RevShare.AdPack.GroupPolicy == GroupPolicy.AutomaticAndCustomGroups)
                {
                    //AutomaticGroups
                    DistributionHelper.UpdatePrioritiesAutomaticGroups();
                }

                Decimal priorities = DistributionHelper.GetSumOfPriorities();

                if (ActiveAdPacks == 0)
                {
                    throw new MsgException("No active AdPacks with active members. " + GetNoDistributionMessage(HourDistribution));
                }

                //Make the distribution
                var adPackTypes = AdPackTypeManager.GetAllTypes();

                foreach (var adPackType in adPackTypes)
                {
                    var returnedPercentage = 0.0m;

                    if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Fixed)
                    {
                        PerUnit            = GetMoneyPerUnit(GetMoneyPerUnitFixed(adPackType), HourDistribution, FinalDistributionButHourly, adPackType);
                        returnedPercentage = adPackType.FixedDistributionValuePercent;
                    }
                    else if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Pools)
                    {
                        PerUnit            = GetMoneyPerUnit(GetMoneyPerUnitPools(InThePool, priorities), HourDistribution, FinalDistributionButHourly, adPackType);
                        returnedPercentage = PerUnit.ToDecimal() / adPackType.Price.ToDecimal();
                    }

                    RaportMessage += "<b>" + adPackType.Name + "</b> for priority 1.00 (no acceleration): <b>" + PerUnit.ToClearString() + "</b>. <br/>";

                    if (PerUnit > Money.Zero)
                    {
                        TotalDistributed += DistributionHelper.DistributeUsingPriority(PerUnit, adPackType.Id);
                    }

                    RevShareManager.AddAdPackTypePercentageHistory(adPackType.Id, returnedPercentage);
                }
                if (TitanFeatures.isAri)
                {
                    AriRevShareDistribution.CreditAriRevShareDistribution();
                }
            }
            catch (MsgException ex)
            {
                RaportMessage += ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
            }

            Pool.SumAmount -= TotalDistributed;

            if (HourDistribution == false)
            {
                if (AppSettings.RevShare.AdPack.DistributionPolicy == DistributionPolicy.Pools)
                {
                    RaportMessage += "Money moved to the next day pool: " + Pool.SumAmount.ToClearString() + ". ";
                }

                Pool.MoveMoneyForTomorrow();
            }

            Pool.Save();

            Report.Add(ActiveAdPacks, InThePool, TotalDistributed, RaportMessage);

            CustomGroupManager.TrySetGroupsAsExpired();
        }
    }
Example #7
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);
        }
    }
Example #8
0
 protected void ClosedGroupsGridView2DataSource_Init(object sender, EventArgs e)
 {
     ClosedGroupsGridView2DataSource.SelectCommand = CustomGroupManager.GroupSqlCommand(CustomGroupStatus.Expired);
 }
Example #9
0
 protected void OpenGroupsGridView_Init(object sender, EventArgs e)
 {
     OpenGridViewDataSource.SelectCommand = CustomGroupManager.GroupSqlCommand(CustomGroupStatus.InProgress);
 }