protected override ApiResultMessage HandleRequest(object args) { var token = ((JObject)args)["token"].ToString(); var membershipPackId = Convert.ToInt32(((JObject)args)["membershipPackId"]); var htmlResponse = false; var balance = (PurchaseBalances)Convert.ToInt32(((JObject)args)["balance"]); var userId = ApiAccessToken.ValidateAndGetUserId(token); var pack = new MembershipPack(membershipPackId); var User = new Member(userId); var ResultMessage = U3501.UPGRADEOK; if (balance == PurchaseBalances.PaymentProcessor) { var PackPrice = pack.GetPrice(User); var bg = new UpgradeMembershipButtonGenerator(User, PackPrice, pack); ResultMessage = GenerateHTMLButtons.GetPaymentButtons(bg); htmlResponse = true; } else { Membership.BuyPack(User, pack, balance); } return(new ApiResultMessage { success = true, message = ResultMessage, messageIsHtml = htmlResponse, data = null }); }
protected void BuyTicketsViaPaymentProcessor_Click(object sender, EventArgs e) { EPanel.Visible = SPanel.Visible = false; try { int numberOfTickets; if (!Int32.TryParse(NumberOfTicketsTextBox.Text, out numberOfTickets) || numberOfTickets <= 0) { throw new MsgException(U5003.INVALIDNUMBEROFTICKETS); } Member User = Member.Current; PaymentProcessorsButtonPlaceholder.Visible = true; BuyTicketsPlaceholder.Visible = false; Money PackPrice = Jackpot.TicketPrice * numberOfTickets; // Buy tickets directly via Paypal, etc. var bg = new BuyJackpotTicketsButtonGenerator(User, Jackpot, PackPrice, numberOfTickets); PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(bg); } catch (Exception ex) { if (ex is MsgException) { EPanel.Visible = true; EText.Text = ex.Message; } else { ErrorLogger.Log(ex); } } }
protected void upgradeViaPaymentProcessor_Click(object sender, EventArgs e) { UpgradeViaPaymentProcessorPlaceHolder.Visible = false; PaymentProcessorsButtonPlaceholder.Visible = true; PriceLiteral.Text = AppSettings.Registration.AccountActivationFee.ToString(); // Buy membership directly via Paypal, etc. var bg = new ActivateAccountButtonGenerator(User); PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(bg); }
protected void upgradeViaPaymentProcessor_Click(object sender, EventArgs e) { User = Member.Current; PaymentProcessorsButtonPlaceholder.Visible = true; BuyUpgradePlaceHolder.Visible = false; MembershipPack pack = new MembershipPack(Int32.Parse(ddlOptions.SelectedValue)); Money PackPrice = pack.GetPrice(User); PriceLiteral.Text = PackPrice.ToString(); // Buy membership directly via Paypal, etc. var bg = new UpgradeMembershipButtonGenerator(User, PackPrice, pack); PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(bg); }
protected void BuyViaPaymentProcessorButton_Click(object sender, EventArgs e) { try { var selectedPlan = new InvestmentPlatformPlan(int.Parse(PlansDropDownList.SelectedValue)); var targetPrice = selectedPlan.Price; if (AppSettings.InvestmentPlatform.LevelsEnabled) { InvestmentLevelsManager.CanUserDepositOnLevel(selectedPlan, User); } if (selectedPlan.MaxPrice > Money.Zero) { if (AppSettings.InvestmentPlatform.InvestmentPlatformPlansPolicy == PlansPolicy.OneUpgradedPlan) { throw new MsgException(U6012.CANTUPGRADERANGEPLAN); } targetPrice = Money.Parse(RangePriceTextBox.Text); if (!selectedPlan.CheckPlanPrice(targetPrice)) { throw new MsgException(U6012.TYPECORRECTPRICE); } } var bg = new BuyInvestmentPlanButtonGenerator(User, selectedPlan, targetPrice); var buttonsText = string.Empty; if (CurrentMode == InvestmentPlatformMode.Levels) { if (selectedPlan.PaymentProcessor == PaymentProcessor.Null) { throw new MsgException(U6013.NOPAYMENTPROCESSORSCONNECTEDWITHLEVEL); } /* TODO - Add options to pay with cryptocurrency(?) * if(selectedPlan.PaymentProcessor == PaymentProcessor.Coinbase || selectedPlan.PaymentProcessor == PaymentProcessor.CoinPayments) * buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, CryptocurrencyType); */ var type = PaymentAccountDetails.GetGatewayType(selectedPlan.PaymentProcessor.ToString()); buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, type); } else { buttonsText = GenerateHTMLButtons.GetPaymentButtons(bg); } PaymentButtons.Text = buttonsText; PaymentProcessorsButtonPlaceHolder.Visible = true; BuyControlsPlaceHolder.Visible = false; } catch (Exception ex) { ErrorPanel.Visible = true; ErrorTextLiteral.Text = ex.Message; if (ex is MsgException == false) { ErrorLogger.Log(ex); } } }
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; } } }
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); } if (URL.Enabled) { throw new MsgException(U4200.CHECKURL); } TrafficGridAdvert Ad = new TrafficGridAdvert(); TrafficGridAdvertPack Pack = new TrafficGridAdvertPack(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 (Member.IsLogged) { //Take money and save the user var targetBalance = TargetBalanceRadioButtonList.TargetBalance; PurchaseOption.ChargeBalance(User, AdCost, TargetBalanceRadioButtonList.Feature, targetBalance, "TrafficGrid advertising"); Ad.TargetBalance = targetBalance; Ad.Advertiser = Advertiser.AsMember(User.Name); Ad.Status = AdvertStatusExtensions.GetStartingStatus(); } else { Ad.Advertiser = Advertiser.AsStranger(OutEmail.Text); Ad.Status = AdvertStatus.Null; } //Add the ad to the db (for approval) Ad.Price = AdCost; Ad.Pack = Pack; Ad.Save(); if (Member.IsLogged) { if (Ad.Status == AdvertStatus.Active || Ad.Status == AdvertStatus.Paused) { var Crediter = (TrafficGridCrediter)CrediterFactory.Acquire(User, Titan.CreditType.TrafficGrid); Crediter.CreditReferer(AdCost); } //Achievements trial int UserCurrentCampaigns = TableHelper.CountOf <TrafficGridAdvert>(TableHelper.MakeDictionary("CreatorUsername", User.Name)); bool ShouldBeSaved = User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterAdvertisingTrafficGridCampaigns, UserCurrentCampaigns)); if (ShouldBeSaved) { User.Save(); } //Add history entry 1 History.AddPurchase(User.Name, AdCost, "TrafficGrid campaign"); //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; MatrixBase.TryAddMemberAndCredit(User, Ad.Price, AdvertType.TrafficGrid); } else { //Show buttons CreateAdButton.Visible = false; PaymentButtons.Visible = true; PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(new BuyAdvertButtonGenerator <ITrafficGridAdvertPack>(Ad)); } } catch (MsgException ex) { ErrorMessagePanel.Visible = true; ErrorMessage.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); throw ex; } } }
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); } if (ddlOptions.SelectedItem == null) { throw new MsgException(U6002.BANNERPACKERROR); } BannerAdvertPack Pack = new BannerAdvertPack(Int32.Parse(ddlOptions.SelectedValue)); Money AdCost = Pack.Price; if (chbGeolocation.Checked) { AdCost += AppSettings.BannerAdverts.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)) { NewBannerAdvert.BannedCountries.Add(s); } } } if (Member.IsLogged) { var targetBalance = TargetBalanceRadioButtonList.TargetBalance; PurchaseOption.ChargeBalance(User, AdCost, TargetBalanceRadioButtonList.Feature, targetBalance, "Banner campaign"); NewBannerAdvert.Advertiser = Advertiser.AsMember(User.Name); NewBannerAdvert.Status = AdvertStatusExtensions.GetStartingStatus(); NewBannerAdvert.TargetBalance = targetBalance; } else { NewBannerAdvert.Advertiser = Advertiser.AsStranger(OutEmail.Text); NewBannerAdvert.Status = AdvertStatus.Null; } //Set basics - add to db NewBannerAdvert.TargetUrl = URL.Text; NewBannerAdvert.Pack = Pack; NewBannerAdvert.Price = AdCost; NewBannerAdvert.Save(); if (Member.IsLogged) { if (AppSettings.BannerAdverts.AdvertisingPolicy != BannerPolicy.BannerBidding && (NewBannerAdvert.Status == AdvertStatus.Active || NewBannerAdvert.Status == AdvertStatus.Paused)) { BannerCrediter crediter = new BannerCrediter(User); Money moneyLeftForPools = crediter.CreditReferer(NewBannerAdvert.Price); PoolDistributionManager.AddProfit(ProfitSource.Banners, moneyLeftForPools); } //Achievements trial int UserCurrentCampaigns = TableHelper.CountOf <BannerAdvert>(TableHelper.MakeDictionary("CreatorUsername", User.Name)); bool ShouldBeSaved = User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterAdvertisingBannerCampaigns, UserCurrentCampaigns)); if (ShouldBeSaved) { User.Save(); } //Add history entry 1 History.AddPurchase(User.Name, AdCost, "Banner campaign"); SuccMessagePanel.Visible = true; SuccMessage.Text = U3501.ADCREATED; //Earning stats EarningsStatsManager.Add(EarningsStatsType.Banner, AdCost); MatrixBase.TryAddMemberAndCredit(User, AdCost, AdvertType.Banner); Response.Redirect("banners.aspx"); } else { //Show buttons PaymentButtons.Visible = true; CreateAdButton.Visible = false; PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons( new BuyAdvertButtonGenerator <IBannerAdvertPack>(NewBannerAdvert)); } Session["YourCampaigns_NewBannerAdvert"] = null; } catch (MsgException ex) { ErrorMessagePanel.Visible = true; ErrorMessage.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); throw ex; } } }
protected void CreateAdButton_Click(object sender, EventArgs e) { ErrorMessagePanel.Visible = false; SuccMessagePanel.Visible = false; if (Page.IsValid) { try { AppSettings.DemoCheck(); Member User = null; int oldPackId = 0; if (Member.IsLogged) { User = Member.Logged(Context); } if (URL.Enabled) { throw new MsgException(U4200.CHECKURL); } PtcAdvert Ad; if (PageRequest == RequestType.Edit) { int adId = Convert.ToInt32(ViewState["editid"]); Ad = new PtcAdvert(adId); oldPackId = Ad.Pack.Id; } else { Ad = new PtcAdvert(); } Money AdCost = Money.Zero; PtcAdvertPack Pack = new PtcAdvertPack(); GetAdWithPrice(ref Ad, ref AdCost, ref Pack); //Add the ad to the db (for approval) Ad.Price = AdCost; if (Pack != null) { Ad.Pack = Pack; } if (Member.IsLogged) { //Take money and save the user int adViews = 0; if (AppSettings.PtcAdverts.PTCCreditsEnabled && UseExtraViewsCheckBox.Checked) { adViews = Convert.ToInt32(PTCCreditsTextBox.Text); if (adViews < 0) { throw new MsgException("Input cannot be negative."); } decimal adCreditsSpent = 0; var creditsPerDayOrClick = 0m; if (Pack == null) { if (TitanFeatures.isSatvetErturkmen) { PtcAdvertPack advertPack = TableHelper.GetListFromRawQuery <PtcAdvertPack>("SELECT TOP 1 * FROM PtcAdvertPacks")[0]; Ad.Pack = advertPack; Ad.Ends = End.FromClicks(adViews); creditsPerDayOrClick = advertPack.PTCCreditsPerDayOrClick; } } else { Ad.Ends = Ad.Ends.AddValue(adViews); creditsPerDayOrClick = Pack.PTCCreditsPerDayOrClick; } if (PageRequest == RequestType.Edit && Ad.ExtraViews != -1) { adCreditsSpent = (adViews - Ad.ExtraViews) * creditsPerDayOrClick; if (adCreditsSpent < 0) { adCreditsSpent = 0; } } else { adCreditsSpent = adViews * creditsPerDayOrClick; } Ad.ExtraViews = adViews; if (adCreditsSpent > Member.Current.PTCCredits) { throw new MsgException(U5006.NOTENOUGHADCREDITS); } else { User.SubstractFromPTCCredits(adCreditsSpent, "PTC advert"); } } else { Ad.ExtraViews = -1; } if (PageRequest == RequestType.Edit) { Ad.IsEdited = true; } Ad.TargetBalance = TargetBalanceRadioButtonList.TargetBalance; PurchaseOption.ChargeBalance(User, AdCost, TargetBalanceRadioButtonList.Feature, Ad.TargetBalance, PageRequest == RequestType.Edit ? "PTC update" : "PTC advert"); Ad.Advertiser = Advertiser.AsMember(User.Name); Ad.AdvertiserUserId = User.Id; Ad.Status = AdvertStatusExtensions.GetStartingStatus(); if (AppSettings.PtcAdverts.AdvertPTCPackCashbackEnabled && Pack.PTCPackCashBackPercent != 0) { Money CashBack = new Money(Double.Parse(AdCost.ToClearString()) * ((Double)Pack.PTCPackCashBackPercent / 100.0)); User.AddToTrafficBalance(CashBack, U6010.PTCCASHBACK); User.Save(); } } else { Ad.Advertiser = Advertiser.AsStranger(OutEmail.Text); Ad.TargetBalance = PurchaseBalances.PaymentProcessor; Ad.Status = AdvertStatus.Null; } if (oldPackId != 0 && oldPackId != Ad.Pack.Id) { Ad.ResetClicks(); } Ad.Save(); if (Member.IsLogged) { //Achievements trial int UserCurrentCampaigns = TableHelper.CountOf <PtcAdvert>(TableHelper.MakeDictionary("CreatorUsername", User.Name)); bool ShouldBeSaved = User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterAdvertisingPtcCampaigns, UserCurrentCampaigns)); if (ShouldBeSaved) { User.Save(); } if (PageRequest == RequestType.Edit) { History.AddEdit(User.Name, AdCost, "Advert campaign"); } else { History.AddPurchase(User.Name, AdCost, "Advert campaign"); MatrixBase.TryAddMemberAndCredit(User, AdCost, AdvertType.PTC); } if (Ad.Status != AdvertStatus.WaitingForAcceptance) { PtcCrediter.TryToCreditReferrerAfterPurchase(User, AdCost, PageRequest == RequestType.Edit ? "PTC update" : "PTC advert"); } Title.Text = ""; URL.Text = ""; chbDescription.Checked = false; chbGeolocation.Checked = false; chbBold.Checked = false; BackgroundColorCheckBox.Checked = false; StarredAdCheckBox.Checked = false; SuccMessagePanel.Visible = true; if (PageRequest == RequestType.Edit) { SuccMessage.Text = Ad.Status == AdvertStatus.WaitingForAcceptance ? U6012.EDITEDADAWAITSAPPROVAL : U6012.ADUPDATED; } else { SuccMessage.Text = Ad.Status == AdvertStatus.WaitingForAcceptance ? U4200.ADAWAITSAPPROVAL : U3501.ADCREATED; } } else { //Show buttons PaymentButtons.Visible = true; CreateAdButton.Visible = false; PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(new BuyAdvertButtonGenerator <IPtcAdvertPack>(Ad)); } ViewState["editid"] = null; } catch (MsgException ex) { ErrorMessagePanel.Visible = true; ErrorMessage.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); } } }
protected void BuyProduct_Click(object sender, EventArgs e) { ErrorMessage.Text = string.Empty; ErrorMessagePanel.Visible = false; try { int productId = Convert.ToInt32(((Button)sender).CommandArgument); int quantity = Convert.ToInt32(ProductInfoBuyCount.Text); string deliveryAddress = InputChecker.HtmlEncode(DeliveryAddressTextBox.Text, DeliveryAddressTextBox.MaxLength, U6005.DELIVERYADDRESS); string email = EmailTextBox.Text.Trim(); int? promotorId = (int?)Session["MarketplacePromotorId"]; MarketplaceProduct product = new MarketplaceProduct(productId); if (Member.IsLogged) { Member buyer = user; if (!product.IsGeolocationMeet(buyer)) { throw new MsgException("You don't meet Geolocation constraints for this product."); } if (buyer.Id == product.SellerId) { throw new MsgException(U5006.BUYFROMYOURSELF); } } if (quantity > product.Quantity) { throw new MsgException(U5006.SELLERDOESNTHAVEENOUGHT); } if (AppSettings.Marketplace.MarketplaceAllowPurchaseFromPaymentProcessors) { string username = Member.IsLogged ? user.Name : MarketplaceMember.AnonymousUsername; PaymentProcessorButtonsPlaceHolder.Visible = true; var bg = new BuyMarketplaceProductButtonGenerator(username, productId, quantity, deliveryAddress, email, promotorId); PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons(bg); } if (Member.IsLogged && AppSettings.Marketplace.MarketplaceAllowPurchaseFromAdBalance) { BuyProductFromAdBalance.Visible = true; } if (Member.IsLogged && AppSettings.Marketplace.AllowPurchaseFromMarketplaceBalance) { BuyProductFromMarketplaceBalance.Visible = true; } BuyProductButton.Visible = false; } catch (MsgException ex) { ErrorMessage.Text = ex.Message; ErrorMessagePanel.Visible = true; } catch (Exception ex) { ErrorLogger.Log(ex); } }