Beispiel #1
0
    protected void BuyButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        try
        {
            var user = Member.Current;

            PurchaseOption.ChargeBalance(user, Price, TargetBalanceRadioButtonList.Feature, TargetBalanceRadioButtonList.TargetBalance, "Mini Video Bought");

            var boughtVideo = new UsersMiniVideoCampaign
            {
                BoughtDate = DateTime.Now,
                VideoId    = Id,
                Username   = user.Name
            };
            boughtVideo.Save();

            SuccMessagePanel.Visible = true;
            SuccMessage.Text         = U6008.MINIVIDEOCREATED;
        }
        catch (MsgException ex)
        {
            ErrorMessagePanel.Visible = true;
            ErrorMessage.Text         = ex.Message;
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
        }
    }
Beispiel #2
0
    public static void BuySurfAds(int adPacksAdvertId, Member user, SurfAdsPack surfAdsPack, PurchaseBalances targetBalance)
    {
        var availablePacks = SurfAdsPack.GetAllActivePacks();

        if (surfAdsPack.Status != SurfAdsPackStatus.Active)
        {
            throw new MsgException("Selected Surf Ads Pack is unavailable");
        }

        //BUY ADPACKS
        var totalPrice = surfAdsPack.Price;

        PurchaseOption.ChargeBalance(user, totalPrice, PurchaseOption.Features.SurfAd.ToString(), targetBalance, string.Format("{0} purchase", U5004.SURFADS));

        AdPacksAdvert ad = new AdPacksAdvert(adPacksAdvertId);

        AdPack pack = new AdPack();

        pack.MoneyReturned   = new Money(0);
        pack.AdPacksAdvertId = adPacksAdvertId;
        pack.TotalConstantBannerImpressions = pack.ConstantBannerImpressionsBought = 0;
        pack.NormalBannerImpressionsBought  = pack.TotalNormalBannerImpressions = 0;
        pack.ClicksBought         = surfAdsPack.Clicks;
        pack.PurchaseDate         = DateTime.Now;
        pack.MoneyToReturn        = pack.MoneyReturned = new Money(0);
        pack.UserCustomGroupId    = -1;
        pack.UserId               = user.Id;
        pack.DistributionPriority = new Decimal(0);
        pack.AdPackTypeId         = -1;
        pack.DisplayTime          = surfAdsPack.DisplayTime;
        pack.Save();

        //Pools
        PoolDistributionManager.AddProfit(ProfitSource.SurfAds, totalPrice);
    }
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token     = ((JObject)args)["token"].ToString();
            int    featureId = (int)((JObject)args)["feature"];

            int userId         = ApiAccessToken.ValidateAndGetUserId(token);
            var purchaseOption = PurchaseOption.Get((PurchaseOption.Features)featureId);

            List <int> availableBalances = new List <int>();

            if (purchaseOption.PurchaseBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Purchase);
            }

            if (purchaseOption.CashBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Cash);
            }

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = availableBalances
            });
        }
Beispiel #4
0
        public static void Buy(Member user, PTCOfferWallPack pack, PurchaseBalances targetBalance, List <UserUrl> userUrls,
                               string title, string description, GeolocationUnit geoUnit, bool pcAllowed, bool mobileAllowed,
                               bool autosurfEnabled, int maxSingleUserDailyViews)
        {
            if (pack.Adverts != userUrls.Count)
            {
                throw new MsgException(string.Format(U6002.NUMBEROFURLSERROR, pack.Adverts));
            }

            if (userUrls.Any(u => u.Status != AdvertStatus.Active))
            {
                throw new MsgException("Fraud! Only active urls are permitted.");
            }

            PurchaseOption.ChargeBalance(user, pack.Price, PurchaseOption.Features.PtcOfferWall.ToString(), targetBalance, "PTC OfferWall");

            var offerWall = new PTCOfferWall(user.Id, pack, title, description, pcAllowed, mobileAllowed, autosurfEnabled, maxSingleUserDailyViews);

            if (geoUnit != null)
            {
                offerWall.AddGeolocation(geoUnit);
            }

            offerWall.Save();
            offerWall.MapWithUrls(userUrls);

            MatrixBase.TryAddMemberAndCredit(user, pack.Price, AdvertType.PTCOfferWall);
        }
Beispiel #5
0
        public static void BuyPack(Member user, MembershipPack pack, PurchaseBalances targetBalance)
        {
            Money packPrice = pack.Price;

            PurchaseOption.ChargeBalance(user, pack.GetPrice(user), PurchaseOption.Features.Upgrade.ToString(), targetBalance, "Upgrade");

            AddPack(user, pack);
        }
Beispiel #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        var purchaseOption = PurchaseOption.Get(PurchaseOption.Features.Jackpot);

        BuyTicketsFromAdBalancePlaceHolder.Visible       = purchaseOption.PurchaseBalanceEnabled;
        BuyTicketsFromCashBalancePlaceHolder.Visible     = purchaseOption.CashBalanceEnabled;
        BuyTicketsViaPaymentProcessorPlaceHolder.Visible = purchaseOption.PaymentProcessorEnabled;
    }
 // Here we serialize our UserData object of myData
 public string SerializeObject(PurchaseOption pObject)
 {
     string XmlizedString = null;
     MemoryStream memoryStream = new MemoryStream();
     XmlSerializer xs = new XmlSerializer(typeof(PurchaseOption));
     XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
     xs.Serialize(xmlTextWriter, pObject);
     memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
     XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
     return XmlizedString;
 }
Beispiel #8
0
    public static void Buy(Member user, string url, int categoryId, Banner image, ExternalBannerAdvertPack pack, PurchaseBalances targetBalance)
    {
        PurchaseOption.ChargeBalance(user, pack.Price, PurchaseOption.Features.ExternalBanner.ToString(), targetBalance, "External Banner advertisement");

        var banner = new ExternalBannerAdvert(user.Id, url, categoryId, pack, image, targetBalance);

        banner.Save();

        History.AddPurchase(user.Name, pack.Price, "Banner campaign");

        MatrixBase.TryAddMemberAndCredit(user, pack.Price, AdvertType.ExternalBanner);
    }
    protected void CreateAdButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;

        if (Page.IsValid)
        {
            try
            {
                AppSettings.DemoCheck();

                if (Ad.Status == AdvertStatus.Finished)
                {
                    Member User = Member.Current;
                    TrafficExchangeAdvertPack Pack = new TrafficExchangeAdvertPack(Int32.Parse(ddlOptions.SelectedValue));

                    PurchaseOption.ChargeBalance(User, Pack.Price, PurchaseBalances.Traffic, U6012.TECREDITS);

                    //Modify
                    Ad.Prolong(Pack);
                    Ad.Status = AdvertStatus.Paused;
                    Ad.SaveStatus();
                    Ad.Save();

                    //Add history entry
                    string entryText = "";
                    if (Pack.Ends.EndMode == End.Mode.Clicks)
                    {
                        entryText = (Convert.ToInt32(Pack.Ends.Value)).ToString() + " ad clicks";
                    }
                    else if (Pack.Ends.EndMode == End.Mode.Days)
                    {
                        entryText = (Convert.ToInt32(Pack.Ends.Value)).ToString() + " ad days";
                    }
                    History.AddPurchase(User.Name, Pack.Price, entryText);

                    Response.Redirect("trafficexchange.aspx");
                }
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                throw ex;
            }
        }
    }
Beispiel #10
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            PurchaseOption Option = (PurchaseOption)value;

            switch (Option)
            {
            case PurchaseOption.ON_DEMAND:
            {
                writer.WriteValue("OnDemand");
                break;
            }

            case PurchaseOption.ALL_UPFRONT:
            {
                writer.WriteValue("All Upfront");
                break;
            }

            case PurchaseOption.PARTIAL_UPFRONT:
            {
                writer.WriteValue("Partial Upfront");
                break;
            }

            case PurchaseOption.NO_UPFRONT:
            {
                writer.WriteValue("No Upfront");
                break;
            }

            case PurchaseOption.HEAVY_UTILIZATION:
            {
                writer.WriteValue("Heavy Utilization");
                break;
            }

            case PurchaseOption.MEDIUM_UTILIZATION:
            {
                writer.WriteValue("Medium Utilization");
                break;
            }

            case PurchaseOption.LIGHT_UTILIZATION:
            {
                writer.WriteValue("Light Utilization");
                break;
            }
            }
        }
Beispiel #11
0
        public TermAttributes(
            int leaseContractLength,
            PurchaseOption purchaseOption,
            OfferingClass offeringClass
            )
        {
            if (leaseContractLength < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(leaseContractLength), "The lease contract length cannot be less than zero.");
            }

            this.LeaseContractLength = leaseContractLength;
            this.PurchaseOption      = purchaseOption;
            this.OfferingClass       = offeringClass;
        }
Beispiel #12
0
    protected void TargetBalances_Init(object sender, EventArgs e)
    {
        PurchaseOption.Features targetFeature = (PurchaseOption.Features)Enum.Parse(typeof(PurchaseOption.Features), Feature, true);
        var purchaseOption = PurchaseOption.Get(targetFeature);

        if (purchaseOption.PurchaseBalanceEnabled)
        {
            TargetBalances.Items.Add(new ListItem(U6012.PURCHASEBALANCE, PurchaseBalances.Purchase.ToString()));
        }
        if (AppSettings.Payments.CashBalanceEnabled && purchaseOption.CashBalanceEnabled)
        {
            TargetBalances.Items.Add(new ListItem(U5008.CASHBALANCE, PurchaseBalances.Cash.ToString()));
        }
        TargetBalances.SelectedIndex = 0;
    }
Beispiel #13
0
        private static void AddPaymentOptions(StringBuilder sb, PurchaseOption purchaseOpt, List <MonthlyPayment> monthlyPayments)
        {
            var paymentOptions = monthlyPayments.Where(mp => mp.PurchaseOption.Equals(purchaseOpt.PurchaseOptionDesc));

            EmailBuilder.AddNewline(sb);
            foreach (var paymentOption in paymentOptions)
            {
                // logic to determine singular or plural verbiage for advanced payment(s)
                string ap = (paymentOption.AdvancementPayment == 1 ? "Advanced Payment" : "Advanced Payments");

                EmailBuilder.AddBoldedHeader(sb, purchaseOpt.PurchaseOptionDesc);
                EmailBuilder.AddRegularText(sb, paymentOption.Term + " months at " + String.Format("{0:C}", Convert.ToInt32(paymentOption.Payment)) + " with " + paymentOption.AdvancementPayment + " " + ap);

                EmailBuilder.AddNewline(sb);
            }
        }
Beispiel #14
0
        private static void AddSms(Quote quote, StringBuilder sb, PurchaseOption purchaseOpt, List <MonthlyPayment> monthlyPayments)
        {
            var paymentOptions = monthlyPayments.Where(mp => mp.PurchaseOption.Equals(purchaseOpt.PurchaseOptionDesc));

            for (int x = 0; x < paymentOptions.Count(); x++)
            {
                var paymentOption = paymentOptions.ElementAt(x);

                // logic to determine singular or plural verbiage for advanced payment(s)
                string ap = (paymentOption.AdvancementPayment == 1 ? "Adv Pymt" : "Adv Pymts");

                string comma = (x < paymentOptions.Count() - 1 ? ", " : "");

                sb.Append(purchaseOpt.PurchaseOptionDesc + " - " + paymentOption.Term + " mos at " + String.Format("{0:C}", paymentOption.Payment) + " with " + paymentOption.AdvancementPayment + " " + ap + comma);
            }
        }
Beispiel #15
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject obj = JObject.Load(reader);

            if (reader.TokenType == JsonToken.Null)
            {
                return(new TermAttributes(0, PurchaseOption.ON_DEMAND, OfferingClass.STANDARD));
            }

            if (reader.TokenType != JsonToken.Null)
            {
                if (!obj.HasValues)
                {
                    return(new TermAttributes(0, PurchaseOption.ON_DEMAND, OfferingClass.STANDARD));
                }
            }

            obj.TryGetValue("LeaseContractLength", StringComparison.OrdinalIgnoreCase, out JToken leaseToken);
            obj.TryGetValue("OfferingClass", StringComparison.OrdinalIgnoreCase, out JToken offeringClassToken);
            obj.TryGetValue("PurchaseOption", StringComparison.OrdinalIgnoreCase, out JToken purchaseOptionToken);

            OfferingClass  offeringClass = OfferingClass.STANDARD;
            PurchaseOption option        = PurchaseOption.ON_DEMAND;
            int            lease         = 0;

            if (offeringClassToken != null)
            {
                offeringClass = serializer.Deserialize <OfferingClass>(offeringClassToken.CreateReader());
            }

            if (purchaseOptionToken != null)
            {
                option = serializer.Deserialize <PurchaseOption>(purchaseOptionToken.CreateReader());
            }

            if (leaseToken != null)
            {
                JsonSerializer jsonSerializer = new JsonSerializer()
                {
                    Converters = { new LeaseContractLengthConverter() }
                };

                lease = jsonSerializer.Deserialize <int>(leaseToken.CreateReader());
            }

            return(new TermAttributes(lease, option, offeringClass));
        }
Beispiel #16
0
    protected void CreateVideoButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        if (Page.IsValid)
        {
            try
            {
                var user  = Member.Current;
                var price = user.Membership.MiniVideoUploadPrice;

                if (!MiniVideoCampaign.GetTitleAvability(TitleTextBox.Text))
                {
                    throw new MsgException(U6008.VIDEOWITHTITLEEXIST);
                }

                var miniVideoCampaign = new MiniVideoCampaign
                {
                    Title         = TitleTextBox.Text,
                    Username      = user.Name,
                    Status        = MiniVideoStatus.Active,
                    Description   = DescriptionTextBox.Text,
                    ImageURL      = VideoImage.DescriptionUrl,
                    VideoURL      = VideoURLHiddenLabel.Text,
                    VideoCategory = Convert.ToInt32(VideoCategoriesList.SelectedValue),
                    AddedDate     = DateTime.Now
                };

                PurchaseOption.ChargeBalance(user, price, TargetBalanceRadioButtonList.Feature, TargetBalanceRadioButtonList.TargetBalance, "Mini Video Upload");

                miniVideoCampaign.Save();

                SuccMessagePanel.Visible = true;
                SuccMessage.Text         = U6008.MINIVIDEOCREATED;
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
            }
        }
    }
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();
            ApiJackpotTicketPurchaseData data = ((JObject)args).ToObject <ApiJackpotTicketPurchaseData>();

            int userId = ApiAccessToken.ValidateAndGetUserId(token);

            if (!AppSettings.TitanFeatures.MoneyJackpotEnabled)
            {
                throw new MsgException("Jackpot are disabled.");
            }

            Member  user    = new Member(userId);
            Jackpot jackpot = new Jackpot(data.jackpotId);

            if (data.tickets <= 0)
            {
                throw new MsgException(U5003.INVALIDNUMBEROFTICKETS);
            }

            PurchaseBalances balance       = (PurchaseBalances)data.balance;
            BalanceType      targetBalance = PurchaseOption.GetBalanceType(balance);

            var purchaseOption = PurchaseOption.Get(PurchaseOption.Features.Jackpot);

            if (balance == PurchaseBalances.Purchase && !purchaseOption.PurchaseBalanceEnabled)
            {
                throw new MsgException("You can't purchase with that balance.");
            }

            if (balance == PurchaseBalances.Cash && !purchaseOption.CashBalanceEnabled)
            {
                throw new MsgException("You can't purchase with that balance.");
            }

            JackpotManager.BuyTickets(jackpot, user, data.tickets, targetBalance);

            return(new ApiResultMessage
            {
                success = true,
                message = U5003.TICKETPURCHASESUCCESS.Replace("%n%", data.tickets.ToString()),
                data = null
            });
        }
Beispiel #18
0
    protected void Page_Load(object sender, EventArgs e)
    {
        TokenCryptocurrency      = CryptocurrencyFactory.Get <BitcoinCryptocurrency>();
        ERC20TokenCryptocurrency = CryptocurrencyFactory.Get <ERC20TokenCryptocurrency>();


        if (!IsPostBack)
        {
            HideMessages();

            var PurchaseOptions = PurchaseOption.Get(PurchaseOption.Features.AdPack);

            BindDataToTypesDDL();
            CustomCampaignsDropDownManagement();

            CustomPurchaseViaTokenPlaceHolder.Visible             = false;
            CustomPurchaseViaMainBalancePlaceHolder.Visible       = TitanFeatures.IsTrafficThunder;
            CustomPurchaseViaCommissionBalancePlaceHolder.Visible = AppSettings.RevShare.AdPackPurchasesViaCommissionBalanceEnabled;
            CustomPurchaseViaPurchaseBalancePlaceHolder.Visible   = PurchaseOptions.PurchaseBalanceEnabled && !TitanFeatures.PurchaseBalanceDisabled;
            CustomPurchaseViaCashBalancePlaceHolder.Visible       = PurchaseOptions.CashBalanceEnabled;
            CustomPurchaseForReferralPlaceHolder.Visible          = AppSettings.RevShare.AdPack.BuyAdPacksForReferralsEnabled;

            CustomPurchaseViaERC20TokensButton.Enabled       = false;
            CustomPurchaseViaCommissionBalanceButton.Enabled = false;
            CustomPurchaseViaCashBalanceButton.Enabled       = false;
            CustomPurchaseViaPurchaseBalanceButton.Enabled   = false;
            CustomPurchaseViaMainBalanceButton.Enabled       = false;

            TOSAgreement.Checked = false;

            if (TitanFeatures.IsTrafficThunder)
            {
                CustomTypesDDLPlaceHolder.Visible = false;
            }

            LangAdders();
        }

        var adPackType = new AdPackType(Convert.ToInt32(CustomTypesDropDown.SelectedValue));

        CustomPackPriceLabel.Text = adPackType.Price.ToClearString();

        ScriptManager.RegisterStartupScript(CustomAdPackPurchaseUpdatePanel, GetType(), "AdPacksTBChanged", "AdPacksTBChanged();", true);
    }
Beispiel #19
0
        public CsvRowItem(
            string sku,
            string offerTermCode,
            Term termType,
            int leaseContractLength,
            double pricePerUnit,
            int vcpu,
            double memory,
            PurchaseOption purchaseOption,
            OfferingClass offeringClass,
            string tenancy,
            string instanceType,
            string platform,
            string operatingSystem,
            string operation,
            string usageType,
            string serviceCode,
            string region,
            string description
            )
        {
            this.Sku                 = sku;
            this.OfferTermCode       = offerTermCode;
            this.TermType            = termType;
            this.LeaseContractLength = leaseContractLength;
            this.PricePerUnit        = pricePerUnit;
            this.vCPU                = vcpu;
            this.Memory              = memory;
            this.PurchaseOption      = purchaseOption;
            this.OfferingClass       = offeringClass;
            this.Tenancy             = tenancy;
            this.InstanceType        = instanceType;
            this.Platform            = platform;
            this.OperatingSystem     = operatingSystem;
            this.Operation           = operation;
            this.UsageType           = usageType;
            this.ServiceCode         = serviceCode;
            this.Region              = region;
            this.Description         = description;

            this.Key = $"{this.LeaseContractLength}::{this.PurchaseOption}::{this.OfferingClass}";
        }
Beispiel #20
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token  = ((JObject)args)["token"].ToString();
            int    userId = ApiAccessToken.ValidateAndGetUserId(token);

            Member User           = new Member(userId);
            Money  FirstPackPrice = Money.Zero;

            //Available Balances
            PurchaseOption purchaseOption    = PurchaseOption.Get(PurchaseOption.Features.Upgrade);
            List <int>     availableBalances = new List <int>();

            if (purchaseOption.PurchaseBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Purchase);
            }

            if (purchaseOption.CashBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Cash);
            }

            //Always allow to upgrade via payment processor
            availableBalances.Add((int)PurchaseBalances.PaymentProcessor);

            //List of memberships
            var activeMemberships = Membership.GetActiveMembershipsDataTables();

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = new ApiUpgradeData
                {
                    warningMessage = UpgradePageHelper.GetWarningMessage(User),
                    availableMembershipPacks = MembershipPack.AllPurchaseablePacks.Select(elem => new ApiMembershipPack(User, elem)).ToList(),
                    availableBalances = availableBalances,
                    memberships = activeMemberships.Rows.Cast <DataRow>().Select(elem => new ApiMembership(elem)).ToList(),
                    balances = ApiMember.GetBalances(User)
                }
            });
        }
Beispiel #21
0
    private void InitBuyViewControls()
    {
        WithdrawAllMoneyFromSystem.Text = L1.TRANSFERMONEY;
        PlansButton.Text           = CurrentMode == InvestmentPlatformMode.Standard ? U6006.PLANS : U5007.LEVELS;
        ManageButton.Text          = L1.MANAGE;
        MainDescriptionP.InnerText = CurrentMode == InvestmentPlatformMode.Standard ? U6006.PLANSDESCRIPTION : U6012.LEVELSDESCRIPTION;

        PlansDropDownList.Items.Clear();

        foreach (var plan in availablePlans)
        {
            PlansDropDownList.Items.Add(new ListItem(plan.Name, plan.Id.ToString()));
        }

        //TMP ??
        //if (CurrentMode == InvestmentPlatformMode.Standard)
        {
            var targetFeature  = PurchaseOption.Features.InvestmentPlatform;
            var purchaseOption = PurchaseOption.Get(targetFeature);

            PurchaseBalanceLabel.Text = string.Format("{0}: {1}", U6012.PURCHASEBALANCE, User.PurchaseBalance.ToString());
            CashBalanceLabel.Text     = string.Format("{0}: {1}", U5008.CASHBALANCE, User.CashBalance.ToString());

            BuyFromPurchaseBalanceButton.Visible = PurchaseBalanceInfoPlaceHolder.Visible = purchaseOption.PurchaseBalanceEnabled;
            BuyFromCashBalanceButton.Visible     = CashBalanceInfoPlaceHolder.Visible = AppSettings.Payments.CashBalanceEnabled && purchaseOption.CashBalanceEnabled;

            LangAdder.Add(BuyFromPurchaseBalanceButton, U6012.PAYVIAPURCHASEBALANCE);
            LangAdder.Add(BuyFromCashBalanceButton, U6005.PAYVIACASHBALANCE);
        }
        //else
        //    BuyFromPurchaseBalanceButton.Visible = BuyFromCashBalanceButton.Visible = PurchaseBalanceInfoPlaceHolder.Visible = CashBalanceInfoPlaceHolder.Visible = true; ///tmp

        LangAdder.Add(BuyViaPaymentProcessorButton, U6005.PAYVIAPAYMENTPROCESSOR);
        PlansDropDownList_SelectedIndexChanged(null, null);
        PurchaseDescriptionLabel.Text = U6011.PLANBUY;


        ///TMP
        //BuyFromPurchaseBalanceButton.Visible = true;
        ///TMP
    }
Beispiel #22
0
        public static void Buy(Member user, InTextAdvertPack pack, string title, string description, string url, PurchaseBalances targetBalance, List <string> tags)
        {
            if (tags.Count > pack.MaxNumberOfTags)
            {
                throw new MsgException(string.Format(U6002.TOOMANYTAGS, pack.MaxNumberOfTags));
            }

            if (tags.Count == 0)
            {
                throw new MsgException(U6002.MUSTADDTAGS);
            }

            PurchaseOption.ChargeBalance(user, pack.Price, PurchaseOption.Features.InTextAds.ToString(), targetBalance, "InText Ad");
            var ad = new InTextAdvert(user.Id, pack, title, description, url, targetBalance);

            ad.Save();

            MapTags(ad.Id, tags);

            MatrixBase.TryAddMemberAndCredit(user, pack.Price, AdvertType.InText);
        }
Beispiel #23
0
        public static void BuyPack(DirectReferralPack pack, Member user, PurchaseBalances targetBalance)
        {
            if (user.DirectReferralLimit < user.GetDirectReferralsCount() + pack.NumberOfRefs)
            {
                throw new MsgException(L1.ER_RENT_LIMIT);
            }

            var membersWithoutRefs = GetUsersWithoutReferer(pack.NumberOfRefs, user.Id, pack.MembershipId);

            if (membersWithoutRefs.Count < pack.NumberOfRefs)
            {
                throw new MsgException(U5007.NOTENOUGHREFSAVAILABLE);
            }

            PurchaseOption.ChargeBalance(user, pack.Price, PurchaseOption.Features.DirectReferral.ToString(),
                                         targetBalance, "Direct ref purchase", BalanceLogType.DirectRefPurchase);

            foreach (Member member in membersWithoutRefs)
            {
                member.TryAddReferer(user, true, AppSettings.ServerTime.AddDays(pack.Days));
                member.CameFromUrl = "Purchase";
                member.Save();
            }
        }
Beispiel #24
0
        public SavingsPlanProductAttributes(
            PurchaseOption purchaseOption,
            string granularity,
            string instanceType,
            int purchaseTerm,
            string locationType,
            string location
            )
        {
            if (purchaseTerm < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(purchaseTerm));
            }

            if (String.IsNullOrEmpty(granularity))
            {
                throw new ArgumentNullException(nameof(granularity));
            }

            if (String.IsNullOrEmpty(locationType))
            {
                throw new ArgumentNullException(nameof(locationType));
            }

            if (String.IsNullOrEmpty(location))
            {
                throw new ArgumentNullException(nameof(location));
            }

            this.PurchaseOption = purchaseOption;
            this.Granularity    = granularity;
            this.InstanceType   = instanceType;
            this.PurchaseTerm   = purchaseTerm;
            this.LocationType   = locationType;
            this.Location       = location;
        }
Beispiel #25
0
    public static void BuyPacks(int numberOfPacks, int adPacksAdvertId, Member user, AdPackType adPackType, PurchaseBalances targetBalance,
                                int?userGroupIdNullable = null, int?groupIdNullable = null, bool forcePurchaseWithoutDeducingFunds = false, Member adPackOwner = null)
    {
        if (!TitanFeatures.IsClickmyad && !AppSettings.RevShare.AdPack.EnableAdvertChange && adPacksAdvertId == -1 && AppSettings.RevShare.AdPacksPolicy != AppSettings.AdPacksPolicy.HYIP)
        {
            throw new MsgException(U6000.CANNOTBUYADPACKS);
        }

        AdPacksForOtherUsers record = null;
        string note = string.Format("{0} purchase", AppSettings.RevShare.AdPack.AdPackName);

        //Buying AdPacks for oneself
        if (adPackOwner == null)
        {
            if (!user.HasThisMembershipOrHigher(adPackType.RequiredMembership))
            {
                throw new MsgException(String.Format(U5006.YOUNEEDMEMBERSHIP, Membership.SelectName(adPackType.RequiredMembership)));
            }

            int numberOfUsersAdPacks = GetNumberOfUsersAdPacks(user.Id, true, adPackType.Id);

            if (numberOfUsersAdPacks + numberOfPacks > adPackType.MaxInstances)
            {
                throw new MsgException(U5004.TOOMANYADPACKOFTYPE.Replace("%a%", AppSettings.RevShare.AdPack.AdPackNamePlural)
                                       .Replace("%b%", (adPackType.MaxInstances - numberOfUsersAdPacks).ToString()));
            }

            int numberOfAllUsersAdpacks = GetNumberOfAllUsersAdPacks(user.Id, adPackType.Id);

            if (numberOfAllUsersAdpacks + numberOfPacks > adPackType.MaxInstancesOfAllAdpacks)
            {
                throw new MsgException(U5004.TOOMANYADPACKOFTYPE.Replace("%a%", AppSettings.RevShare.AdPack.AdPackNamePlural)
                                       .Replace("%b%", (adPackType.MaxInstancesOfAllAdpacks - numberOfAllUsersAdpacks).ToString()));
            }

            var availableTypes = AdPackTypeManager.GetAllActiveTypesForUser(user);

            if (!availableTypes.Any(el => el.Id == adPackType.Id) || adPackType.Status != AdPackTypeStatus.Active)
            {
                throw new MsgException("You cannot buy AdPacks of selected type.");
            }

            adPackOwner = user;
        }
        else
        {
            AdPacksForOtherUsers.Validate(user.Id, adPackOwner.Id, numberOfPacks, out record);
            note += " for " + adPackOwner.Name;
        }

        //BUY ADPACKS
        var totalPrice = GetAdPacksPrice(adPackType, numberOfPacks);

        if (!forcePurchaseWithoutDeducingFunds)
        {
            PurchaseOption.ChargeBalance(user, totalPrice, PurchaseOption.Features.AdPack.ToString(), targetBalance, note, BalanceLogType.AdPackPurchase);
        }

        if (user != adPackOwner)
        {
            AdPacksForOtherUsers.AddOrUpdate(record, user.Id, adPackOwner.Id, numberOfPacks);
        }


        Money totalTrafficExchangeSurfCredits = Money.Zero;
        int   totalLoginAdsCredits            = 0;

        for (int i = 0; i < numberOfPacks; i++)
        {
            AdPack pack = new AdPack();
            pack.MoneyReturned   = new Money(0);
            pack.AdPacksAdvertId = adPacksAdvertId;
            pack.TotalConstantBannerImpressions  = 0;
            pack.TotalNormalBannerImpressions    = 0;
            pack.ConstantBannerImpressionsBought = adPackType.ConstantBannerImpressions;
            pack.NormalBannerImpressionsBought   = adPackType.NormalBannerImpressions;
            pack.ClicksBought         = adPackType.Clicks;
            pack.PurchaseDate         = DateTime.Now;
            pack.MoneyReturned        = new Money(0);
            pack.MoneyToReturn        = Money.MultiplyPercent(adPackType.Price, adPackType.PackReturnValuePercentage + adPackOwner.Membership.ROIEnlargedByPercentage);
            pack.UserCustomGroupId    = -1;
            pack.UserId               = adPackOwner.Id;
            pack.DistributionPriority = new Decimal(1);
            pack.AdPackTypeId         = adPackType.Id;
            pack.DisplayTime          = adPackType.DisplayTime;
            pack.BalanceBoughtType    = targetBalance;
            pack.Save();

            totalTrafficExchangeSurfCredits += adPackType.TrafficExchangeSurfCredits;
            totalLoginAdsCredits            += adPackType.LoginAdsCredits;
        }

        if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled)
        {
            adPackOwner.AddToTrafficBalance(totalTrafficExchangeSurfCredits, "Traffic Exchange Surf Credits", BalanceLogType.Other);
        }

        adPackOwner.AddToLoginAdsCredits(totalLoginAdsCredits, note);
        adPackOwner.SaveBalances();

        Money moneyLeftForPools;

        if (TitanFeatures.isAri)
        {
            AriRevShareDistribution.AdPackAriCrediter crediter = new AriRevShareDistribution.AdPackAriCrediter(user);
            moneyLeftForPools = crediter.CreditReferer(totalPrice, targetBalance);
        }
        else
        {
            AdPackCrediter crediter = new AdPackCrediter(user);
            moneyLeftForPools = crediter.CreditReferer(totalPrice);
        }

        //Pools
        if (TitanFeatures.StringSawSundayPool.HasValue && AppSettings.ServerTime.DayOfWeek == DayOfWeek.Sunday)
        {
            PoolDistributionManager.AddProfitToSundayPool(moneyLeftForPools);
        }
        else
        {
            PoolDistributionManager.AddProfit(ProfitSource.AdPacks, moneyLeftForPools);
        }

        //Matrix
        MatrixBase.TryAddMemberAndCredit(user, totalPrice, AdvertType.AdPack);

        var purchasedItem = PurchasedItem.Create(user.Id, adPackType.Price, numberOfPacks,
                                                 adPackType.Name + " " + AppSettings.RevShare.AdPack.AdPackName, PurchasedItemType.AdPack);

        if (TitanFeatures.isAri)
        {
            HtmlInvoiceGenerator generator = new HtmlInvoiceGenerator(purchasedItem);
            generator.SendPdfViaEmail();
        }

        //LeadershipSystem
        var list = new List <RestrictionKind>();

        list.Add(RestrictionKind.ActiveAdPacks);
        list.Add(RestrictionKind.ActiveAdPacksPrice);
        list.Add(RestrictionKind.DirectReferralsActiveAdPacks);
        list.Add(RestrictionKind.DirectReferralsActiveAdPacksPrice);
        LeadershipSystem.CheckSystem(list, user, 1);
    }
Beispiel #26
0
    protected void CreateAdButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        if (Page.IsValid)
        {
            try
            {
                AppSettings.DemoCheck();
                AppSettings.Misc.Reload();

                Member User = Member.Current;

                int   HowManyNeeded = Convert.ToInt32(HowMany.Text);
                Money PPA, AdCost;

                try
                {
                    PPA = Money.Parse(Amount.Text);

                    Decimal CalculatedPercent = (Decimal)(AppSettings.CPAGPT.MoneyTakenFromCPAOffersPercent + 100) / (Decimal)100;
                    CalculatedPercent = CalculatedPercent * HowManyNeeded;

                    AdCost = CalculatedPercent * PPA;

                    if (PPA == new Money(0))
                    {
                        throw new MsgException(L1.ERCPA);
                    }
                }
                catch (Exception ex)
                {
                    throw new MsgException(L1.ERCPA);
                }

                if (PPA < AppSettings.CPAGPT.MinimalCPAPrice)
                {
                    throw new MsgException("Your PPA can't be less than minimum: " + AppSettings.CPAGPT.MinimalCPAPrice.ToString());
                }

                if (chbGeolocation.Checked)
                {
                    //AdCost += AppSettings.BannerAdverts.GeolocationCost;

                    //Now get it from client-state
                    var             countriesSelectedDelimited = Request.Form[GeoCountriesValues.Name].Substring(1);
                    GeolocationUnit unit = GeolocationUnit.ParseFromCountries(countriesSelectedDelimited);

                    //Cities
                    unit.Cities = GeoCities.Text;
                    unit.MinAge = Convert.ToInt32(GeoAgeMin.Text);
                    unit.MaxAge = Convert.ToInt32(GeoAgeMax.Text);
                    unit.Gender = (Gender)Convert.ToInt32(GeoGenderList.SelectedValue);

                    NewCPAAdvert.AddGeolocation(unit);
                }

                NewCPAAdvert.Title       = InputChecker.HtmlEncode(Title.Text, 50, L1.TITLE);
                NewCPAAdvert.Description = InputChecker.HtmlEncode(Description.Text, 3800, L1.DESCRIPTION);
                NewCPAAdvert.Category    = new CPACategory(Convert.ToInt32(CategoriesList.SelectedValue));

                //Take money and save the user
                var targetBalance = TargetBalanceRadioButtonList.TargetBalance;
                PurchaseOption.ChargeBalance(User, AdCost, TargetBalanceRadioButtonList.Feature, targetBalance, "CPA/GPT advertising");

                NewCPAAdvert.TargetBalance      = targetBalance;
                NewCPAAdvert.AdvertiserUsername = (User.Name);
                NewCPAAdvert.Status             = AdvertStatusExtensions.GetStartingStatus();

                if (Member.CurrentName == "admin")
                {
                    NewCPAAdvert.Status = AdvertStatus.Paused;
                }

                //Set basics - add to db
                NewCPAAdvert.TargetURL = URL.Text;
                //NewBannerAdvert.Pack = Pack;
                NewCPAAdvert.LoginBoxRequired       = LoginIDBox.Checked;
                NewCPAAdvert.EmailBoxRequired       = EmailIDBox.Checked;
                NewCPAAdvert.IsDaily                = IsDaily.Checked;
                NewCPAAdvert.MaxDailyCredits        = 1;
                NewCPAAdvert.CreditsBought          = HowManyNeeded;
                NewCPAAdvert.IsFromAutomaticNetwork = false;
                NewCPAAdvert.BaseValue              = PPA;
                NewCPAAdvert.DateAdded              = DateTime.Now;
                NewCPAAdvert.LastCredited           = OffersManager.DateTimeZero;
                NewCPAAdvert.RequiredMembership     = Membership.Standard.Id;

                if (AppSettings.Site.Mode == WebsiteMode.GPTWithPointsOnly)
                {
                    NewCPAAdvert.CreditOfferAs = CreditOfferAs.NonCash;
                }
                else
                {
                    NewCPAAdvert.CreditOfferAs = CreditOfferAs.Cash;
                }

                NewCPAAdvert.Save();

                //Add history entry 1
                History.AddPurchase(User.Name, AdCost, "CPA/GPT campaign");

                SuccMessagePanel.Visible = true;
                SuccMessage.Text         = U3501.ADCREATED;

                Session["YourCampaigns_NewAAABannerAdvert"] = null;

                Response.Redirect("cpaoffers.aspx");
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                throw ex;
            }
        }
    }
Beispiel #27
0
    protected void CreateAdButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        if (Page.IsValid)
        {
            try
            {
                User = Member.Current;

                AppSettings.DemoCheck();

                if (URL.Enabled)
                {
                    throw new MsgException(U4200.CHECKURL);
                }

                var Ad = new LoginAd
                {
                    TargetUrl = URL.Text,
                };

                if (AppSettings.LoginAds.LoginAdsCreditsEnabled && LoginAdsCreditsCheckBox.Checked)
                {
                    //Login Ads Credits
                    Ad.PricePaid = new Money((int)LoginAdCreditsPrice);
                }
                else
                {
                    Ad.PricePaid = AppSettings.LoginAds.Price;
                }

                if (chbGeolocation.Checked && AppSettings.LoginAds.IsGeolocationEnabled)
                {
                    //Now get it from client-state
                    var             countriesSelectedDelimited = Request.Form[GeoCountriesValues.Name].Substring(1);
                    GeolocationUnit unit = GeolocationUnit.ParseFromCountries(countriesSelectedDelimited);

                    //Cities
                    unit.Cities = GeoCities.Text;
                    unit.MinAge = Convert.ToInt32(GeoAgeMin.Text);
                    unit.MaxAge = Convert.ToInt32(GeoAgeMax.Text);
                    unit.Gender = (Gender)Convert.ToInt32(GeoGenderList.SelectedValue);

                    Ad.AddGeolocation(unit);
                }

                Ad.CreatorUserId = User.Id;
                Ad.Status        = AdvertStatusExtensions.GetStartingStatus();

                var displayDate = AdDisplayDateCalendar.SelectedDate;

                if (displayDate <= DateTime.Now.Date)
                {
                    throw new MsgException(U4200.SELECTDIFFERENTDISPLAYDATE);
                }

                if (LoginManager.GetNumberOfAdsPurchasedForDay(displayDate) >= AppSettings.LoginAds.AdsPerDay)
                {
                    throw new MsgException(U4200.SELECTDIFFERENTDISPLAYDATE);
                }

                Ad.DisplayDate  = displayDate;
                Ad.PurchaseDate = DateTime.Now;

                if (AppSettings.LoginAds.LoginAdsCreditsEnabled && LoginAdsCreditsCheckBox.Checked)
                {
                    Ad.TargetBalance = PurchaseBalances.LoginAdsCredits;
                    PurchaseOption.ChargeBalance(User, Ad.PricePaid, PurchaseBalances.LoginAdsCredits, U5001.LOGINAD);

                    string extraViews = string.Format(@"({0} {1})", User.LoginAdsCredits, U4200.AVAILABLE);
                    AvailableLoginAdsCreditsLiteral.Text = extraViews;
                    History.AddPurchase(User.Name, Ad.PricePaid.AsPoints(), U5001.LOGINAD);
                }
                else
                {
                    Ad.TargetBalance = TargetBalanceRadioButtonList.TargetBalance;
                    PurchaseOption.ChargeBalance(User, Ad.PricePaid, TargetBalanceRadioButtonList.Feature, TargetBalanceRadioButtonList.TargetBalance, U5001.LOGINAD);

                    //Pools
                    PoolDistributionManager.AddProfit(ProfitSource.LoginAds, Ad.PricePaid);
                    //Add history entry 1
                    History.AddPurchase(User.Name, Ad.PricePaid, U5001.LOGINAD);
                    MatrixBase.TryAddMemberAndCredit(User, Ad.PricePaid, AdvertType.Login);
                }

                //Save advert
                Ad.Save();

                SuccMessagePanel.Visible = true;
                SuccMessage.Text         = U4200.ADAWAITSAPPROVAL;

                URL.Text               = "http://";
                URL.Enabled            = true;
                CheckURLButton.Visible = true;
            }
            catch (MsgException ex)
            {
                SuccMessagePanel.Visible  = false;
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                throw ex;
            }
        }
    }
Beispiel #28
0
    protected void CreateAdButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        if (Page.IsValid)
        {
            try
            {
                string InURL = URL.Text;

                //Check fanpage in database
                if (FacebookAdvert.IsFanpageInDatabase(InURL))
                {
                    throw new MsgException(U6003.FANPAGEEXISTS);
                }

                //Validate Facebook URL
                if (!FacebookManager.IsFanpageURLValid(InURL))
                {
                    throw new MsgException(L1.ER_BADFBURL);
                }

                AppSettings.DemoCheck();

                FacebookAdvertPack Pack = new FacebookAdvertPack(Int32.Parse(ddlOptions.SelectedValue));
                FacebookAdvert     Ad   = new FacebookAdvert();
                Ad.TargetUrl = InURL;

                Money TotalCost = Pack.Price;
                if (chbFriends.Checked)
                {
                    Ad.MinFriends = Convert.ToInt32(ddlFriends.SelectedValue);
                    TotalCost    += AppSettings.Facebook.FriendsRestrictionsCost;
                }
                else
                {
                    Ad.MinFriends = 0;
                }

                if (chbProfilePicture.Checked)
                {
                    Ad.HasProfilePicRestrictions = true;
                    TotalCost += AppSettings.Facebook.ProfilePicRestrictionsCost;
                }
                else
                {
                    Ad.HasProfilePicRestrictions = false;
                }

                Member User = null;
                if (Member.IsLogged)
                {
                    User = Member.Current;

                    var targetBalance = TargetBalanceRadioButtonList.TargetBalance;
                    PurchaseOption.ChargeBalance(User, TotalCost, TargetBalanceRadioButtonList.Feature, targetBalance, "Facebook Ad credits");
                    Ad.TargetBalance = targetBalance;

                    Ad.Advertiser = Advertiser.AsMember(User.Name);
                    Ad.Status     = AdvertStatusExtensions.GetStartingStatus();
                }
                else
                {
                    Ad.Advertiser = Advertiser.AsStranger(OutEmail.Text);
                    Ad.Status     = AdvertStatus.Null;
                }

                Ad.Price = TotalCost;
                Ad.Pack  = Pack;
                Ad.Save();

                if (Member.IsLogged)
                {
                    //Add history entry 1
                    History.AddPurchase(User.Name, Ad.Price, "Facebook campaign");
                    //Add history entry 2
                    History.AddPurchase(User.Name, Pack.Price, Pack.Ends.Value + " Facebook likes");

                    //Achievements trial
                    int  UserCurrentCampaigns = TableHelper.CountOf <FacebookAdvert>(TableHelper.MakeDictionary("CreatorUsername", User.Name));
                    bool ShouldBeSaved        = User.TryToAddAchievements(
                        Prem.PTC.Achievements.Achievement.GetProperAchievements(
                            Prem.PTC.Achievements.AchievementType.AfterAdvertisingFacebookCampaigns, UserCurrentCampaigns));

                    if (ShouldBeSaved)
                    {
                        User.Save();
                    }

                    //Show success panel
                    SuccMessagePanel.Visible = true;
                    SuccMessage.Text         = Ad.Status == AdvertStatus.WaitingForAcceptance ? U4200.ADAWAITSAPPROVAL : U3501.ADCREATED;

                    MatrixBase.TryAddMemberAndCredit(User, Ad.Price, AdvertType.Facebook);
                }
                else
                {
                    //Show buttons
                    PaymentButtons.Visible = true;
                    CreateAdButton.Visible = false;

                    PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(new BuyAdvertButtonGenerator <IFacebookAdvertPack>(Ad));
                }
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                throw ex;
            }
        }
    }
Beispiel #29
0
        public ReservedInstancePricingTerm(
            string sku,
            string offerTermCode,
            string service,
            string platform,
            string operatingSystem,
            string instanceType,
            string operation,
            string usageType,
            string tenancy,
            string region,
            int vcpus,
            double memory,
            double onDemandHourlyCost,
            double adjustedPricePerUnit,
            double upfrontFee,
            int leaseTerm,
            PurchaseOption purchaseOption,
            OfferingClass offeringClass,
            Term termType
            )
        {
            this.Sku                  = sku;
            this.OfferTermCode        = offerTermCode;
            this.Service              = service;
            this.Platform             = platform;
            this.OperatingSystem      = operatingSystem;
            this.InstanceType         = instanceType;
            this.Operation            = operation;
            this.UsageType            = usageType;
            this.Tenancy              = tenancy;
            this.Region               = region;
            this.vCPU                 = vcpus;
            this.Memory               = memory;
            this.OnDemandHourlyCost   = onDemandHourlyCost;
            this.AdjustedPricePerUnit = adjustedPricePerUnit;
            this.UpfrontFee           = upfrontFee;
            this.LeaseTerm            = leaseTerm;
            this.PurchaseOption       = purchaseOption;
            this.OfferingClass        = offeringClass;
            this.TermType             = termType;

            this.BreakevenPercentage = (this.UpfrontFee + (365 * this.LeaseTerm * 24 * this.AdjustedPricePerUnit)) / (365 * this.LeaseTerm * 24 * this.OnDemandHourlyCost);

            if (termType == Term.ON_DEMAND)
            {
                this.Key = "OnDemand";
            }
            else
            {
                this.Key = $"{this.LeaseTerm}::{this.PurchaseOption.ToString()}::{this.OfferingClass.ToString()}";
            }

            // Calculated properties

            this.ReservedInstanceCost = this.UpfrontFee + (this.AdjustedPricePerUnit * 24 * 365 * this.LeaseTerm);
            this.OnDemandCostForTerm  = this.OnDemandHourlyCost * 24 * 365 * this.LeaseTerm;
            this.CostSavings          = OnDemandCostForTerm - ReservedInstanceCost;

            if (this.OnDemandCostForTerm > 0)
            {
                this.PercentSavings = Math.Round(((1 - (ReservedInstanceCost / OnDemandCostForTerm)) * 100), 3);
            }
            else
            {
                this.PercentSavings = 0;
            }
        }
Beispiel #30
0
    protected void Page_Load(object sender, EventArgs e)
    {
        var targetFeature  = PurchaseOption.Features.Upgrade;
        var purchaseOption = PurchaseOption.Get(targetFeature);

        if (purchaseOption.PurchaseBalanceEnabled)
        {
            UpgradeFromAdBalance.Visible = true;
        }
        else
        {
            UpgradeFromAdBalance.Visible = false;
            adBalanceInfo.Visible        = false;
        }

        if (AppSettings.Payments.CashBalanceEnabled && purchaseOption.CashBalanceEnabled)
        {
            UpgradeFromCashBalance.Visible = true;
        }
        else
        {
            UpgradeFromCashBalance.Visible = false;
            cashBalanceInfo.Visible        = false;
        }

        AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.UpgradeEnabled);

        User = Member.CurrentInCache;

        if (!Page.IsPostBack)
        {
            //Lang
            LangAdder.Add(UpgradeFromAdBalance, U6012.PAYVIAPURCHASEBALANCE);
            LangAdder.Add(UpgradeFromCashBalance, U6005.PAYVIACASHBALANCE);
            LangAdder.Add(UpgradeViaPaymentProcessor, U6005.PAYVIAPAYMENTPROCESSOR);

            //Bind the data dor DDL
            BindDataToDDL();

            //Visibility
            UpgradeViaPaymentProcessorPlaceHolder.Visible = PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable();
        }

        if (TitanFeatures.IsRofriqueWorkMines)
        {
            UpgradeFromAdBalancePlaceHolder.Visible       = false;
            UpgradeViaPaymentProcessorPlaceHolder.Visible = false;
        }

        HideCashBalanceDepositCommissionColumn = AreAllCashBalanceDepositCommissionsZero();

        ddlOptions.Attributes.Add("onchange", "updatePrice();");
        autopayHelpArray = new Dictionary <string, bool>();

        Label10.Text  = AppSettings.Memberships.TenPointsValue.ToClearString();
        LabelIle.Text = AppSettings.Memberships.UpgradePointsDiscount.ToString();

        //Display warning
        string WarningMessage = UpgradePageHelper.GetWarningMessage(User);

        WarningPanel.Visible = !String.IsNullOrEmpty(WarningMessage);
        WarningLiteral.Text  = WarningMessage;

        AdBalanceLiteral.Text   = User.PurchaseBalance.ToString();
        CashBalanceLiteral.Text = User.CashBalance.ToString();

        if (AppSettings.Points.LevelMembershipPolicyEnabled)
        {
            BuyUpgradePlaceHolder.Visible = false;
        }

        hiddenProperties = MembershipProperty.GetPropsToHideForClient();
        TypesMembershipProperties.Text = AdPackTypeMembershipMapper.Mapper.GetHtmlFromCache();
        AdPackPropsPlaceHolder.Visible = AppSettings.TitanFeatures.AdvertAdPacksEnabled;

        PaymentProcessorsButtonPlaceholder.Visible = false;
    }
Beispiel #31
0
    protected void CreateAdButton_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        SuccMessagePanel.Visible  = false;

        if (Page.IsValid)
        {
            try
            {
                AppSettings.DemoCheck();
                Member User = null;

                if (Member.IsLogged)
                {
                    User = Member.Logged(Context);
                }
                else
                {
                    Response.Redirect("~/default.aspx");
                }

                if (URL.Enabled)
                {
                    throw new MsgException(U4200.CHECKURL);
                }

                TrafficExchangeAdvert     Ad   = new TrafficExchangeAdvert();
                TrafficExchangeAdvertPack Pack = new TrafficExchangeAdvertPack(Int32.Parse(ddlOptions.SelectedValue));
                Money AdCost = Pack.Price;

                //Set basics
                Ad.Title     = InputChecker.HtmlEncode(Title.Text, Title.MaxLength, L1.TITLE);
                Ad.TargetUrl = URL.Text;

                if (TrafficSourceList.SelectedValue == "Anon")
                {
                    Ad.Description = TrafficSource.Anonymous;
                }
                else
                {
                    Ad.Description = TrafficSource.ThisWebsite;
                }

                if (chbGeolocation.Checked)
                {
                    AdCost += AppSettings.PtcAdverts.GeolocationCost;

                    //Now get it from client-state
                    var CTable   = Request.Form[GeoCountriesValues.Name].Substring(1).Split('#');
                    var geoUList = GeolocationUtils.GeoCountData.Keys;

                    foreach (string s in CTable)
                    {
                        if (geoUList.Contains <string>(s))
                        {
                            Ad.GeolocatedCountries += CountryManager.GetCountryCode(s) + ",";
                        }
                    }
                }

                if (Member.IsLogged)
                {
                    //Take money and save the user
                    var note = TitanFeatures.IsAhmed ? "Flash Traffic advertising" : "Traffic Exchange advertising";
                    PurchaseOption.ChargeBalance(User, AdCost, PurchaseBalances.Traffic, note);

                    Ad.Advertiser = Advertiser.AsMember(User.Name);
                    Ad.Status     = AdvertStatusExtensions.GetStartingStatus();
                }

                //Add the ad to the db (for approval)
                Ad.Price = AdCost;
                Ad.Pack  = Pack;
                Ad.Save();

                if (Member.IsLogged)
                {
                    //Add history entry 1
                    if (TitanFeatures.IsAhmed)
                    {
                        History.AddPurchase(User.Name, AdCost, "Flash Traffic advertising");
                    }
                    else
                    {
                        History.AddPurchase(User.Name, AdCost, "Traffic Exchange advertising");
                    }

                    //Add history entry 2
                    string entryText = "";
                    if (Pack.Ends.EndMode == End.Mode.Clicks)
                    {
                        entryText = (Convert.ToInt32(Pack.Ends.Value)).ToString() + " ad clicks";
                    }
                    else if (Pack.Ends.EndMode == End.Mode.Days)
                    {
                        entryText = (Convert.ToInt32(Pack.Ends.Value)).ToString() + " ad days";
                    }

                    History.AddPurchase(User.Name, Pack.Price, entryText);

                    Title.Text             = "";
                    URL.Text               = "";
                    URL.Enabled            = true;
                    CheckURLButton.Visible = true;

                    SuccMessagePanel.Visible = true;
                    SuccMessage.Text         = Ad.Status == AdvertStatus.WaitingForAcceptance ? U4200.ADAWAITSAPPROVAL : U3501.ADCREATED;
                }
                UsersTrafficBalanceLabel.Text = string.Format(U6008.YOURTRAFFICBALANCE, Member.CurrentInCache.TrafficBalance);
            }
            catch (MsgException ex)
            {
                ErrorMessagePanel.Visible = true;
                ErrorMessage.Text         = ex.Message;
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                throw ex;
            }
        }
    }