コード例 #1
0
    public static void ReleaseCPA(CPAPostbackLog log)
    {
        try
        {
            var where = TableHelper.MakeDictionary("NetworkOfferIdInt", log.OfferId);
            where.Add("AdvertiserUsername", log.NetworkName);
            CPAOffer OurOffer = TableHelper.SelectRows <CPAOffer>(where)[0]; //TODO (What if offer has been deleted in the meantime?)

            //Credit
            CPAGPTCrediter Crediter   = (CPAGPTCrediter)CrediterFactory.Acquire(log.Username, CreditType.CPAGPTOffer);
            var            conditions = TableHelper.MakeDictionary("Username", log.Username);
            conditions.Add("OfferId", OurOffer.Id);
            conditions.Add("OfferStatus", (int)OfferStatus.Pending);

            OfferRegisterEntry entry = TableHelper.SelectRows <OfferRegisterEntry>(conditions)[0];

            CPAManager.AcceptEntryManually(entry, new Member(entry.Username));

            //Update log
            log.Status = CPAPostBackLogStatus.CreditedByNetworkPointsUnlocked;
            log.Save();
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
        }
    }
コード例 #2
0
        public static void AwardMember(Member Winner, PrizeType Type, Money Value, int place)
        {
            //Go with the Crediter
            ContestCrediter Crediter = (ContestCrediter)CrediterFactory.Acquire(Winner, CreditType.Contest);

            Crediter.Credit(Type, Value, place);
        }
コード例 #3
0
ファイル: Cryptocurrency.cs プロジェクト: dovanduy/titan
        private void DepositCryptocurrency(Member user, decimal amountInCryptocurrency)
        {
            Money   moneyAmount = ConvertToMoney(amountInCryptocurrency);
            LogType LogType     = ErrorLoggerHelper.GetTypeFromProcessor(DepositApiProcessor);

            user.Reload();

            if (DepositTarget == DepositTargetBalance.PurchaseBalance)
            {
                user.AddToPurchaseBalance(moneyAmount, Code + " deposit", BalanceLogType.Other);
                user.SaveBalances();
            }
            if (DepositTarget == DepositTargetBalance.CashBalance)
            {
                user.AddToCashBalance(moneyAmount, Code + " deposit", BalanceLogType.Other);
                user.SaveBalances();

                //Referral commission for sponsors when user does Cash Balance deposit
                CashBalanceCrediter Crediter = (CashBalanceCrediter)CrediterFactory.Acquire(user, CreditType.CashBalanceDeposit);
                Crediter.TryCreditReferer(moneyAmount);
            }
            if (DepositTarget == DepositTargetBalance.Wallet)
            {
                user.AddToCryptocurrencyBalance(Type, amountInCryptocurrency, Code + " Wallet deposit", BalanceLogType.WalletDeposit);
            }

            PaymentProportionsManager.MemberPaidIn(moneyAmount, CryptocurrencyTypeHelper.ConvertToPaymentProcessor(Type), user);
            History.AddTransfer(user.Name, moneyAmount, Code + " deposit", DepositTarget.ToString());

            ContestManager.IMadeAnAction(ContestType.Transfer, user.Name, moneyAmount, 0);
        }
コード例 #4
0
    protected void ProcceedWithCredit(int Id)
    {
        //Stats
        var targetStatValue = new Prem.PTC.Statistics.Statistics(Prem.PTC.Statistics.StatisticsType.PTCClicks);

        targetStatValue.AddToData1(1);
        targetStatValue.Save();

        if (Member.IsLogged)
        {
            RegisterUserValidationSummary.Visible = true;
            //Anti-cheat: Check if ad is not already watched
            var User = Member.GetLoggedMember(Context);
            if (User.AdsViewed.Contains(Id))
            {
                DisplayInfo(L1.ALREADYWATCHED, false);
            }
            else
            {
                CaptchaPanel.Visible = false;

                var ad = new PtcAdvert(Id);

                //Use Crediter
                PtcCrediter Crediter   = (PtcCrediter)CrediterFactory.Acquire(User, Titan.CreditType.PTC);
                Money       Calculated = Crediter.CreditMember(ad);

                DisplayInfo(L1.YOUVEBEENCREDITED + " <b>" + Calculated.ToString() + "</b> " +
                            L1.AND + " <b>" + User.Membership.AdvertPointsEarnings.ToString() + "</b> " + AppSettings.PointsName + " " + L1.FORTHISAD, true);

                //Display "Feel free with Ad URL" text
                FeelFreeLiteral.Text = ": <a href=\"" + ad.TargetUrl + "\" target=\"_blank\">" + ad.TargetUrl + "</a>";

                //Force notifiaction refresh (Ads)
                NotificationManager.RefreshWithMember(NotificationType.NewAds, User);

                //Modify the ad info
                ad.Click();
                if (ad.ShouldBeFinished)
                {
                    ad.Status = AdvertStatus.Finished;
                    ad.Save();
                }
                else
                {
                    ad.SaveClicks();
                }

                AnimatedHeight = 90;
            }
        }
        else
        {
            //Non-logged in member
            //Just display 'you must login' message
            DisplayInfo(L1.YOUMUSTBELOGGED, false);
        }
        AdInfoContainer.Text = "";
    }
コード例 #5
0
    protected void payViaCashBalanceButton_Click(object sender, EventArgs e)
    {
        User.SubtractFromCashBalance(AppSettings.Registration.AccountActivationFee, "Account activation fee", BalanceLogType.AccountActivationFee);
        User.IsAccountActivationFeePaid = true;
        User.Save();

        AccountActivationFeeCrediter Crediter = (AccountActivationFeeCrediter)CrediterFactory.Acquire(User, CreditType.AccountActivationFee);

        Crediter.CreditReferer(AppSettings.Registration.AccountActivationFee);

        SuccessInfoLiteral.Text = U6011.ACTIVATIONFEEPAID;
        SuccessInfoLiteralPlaceHolder.Visible = true;
        Response.AddHeader("REFRESH", "5;URL=/user/default.aspx");
    }
コード例 #6
0
    public static void TryMarkAccountActivationFeeAsPaid(Member user, Money amount, string from, string transId, string cryptoCurrencyInfo)
    {
        bool Successful = false;

        try
        {
            String Message = String.Format(" {0} money for account activation. ", amount);

            if (amount < AppSettings.Registration.AccountActivationFee)
            {
                Message += "Amount is lower than expected! Account not activated.";
                History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message);

                PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, amount);
                throw new Exception(String.Format("Account activation fee is lower than expected! ({0})", amount));
            }

            AccountActivationFeeCrediter Crediter = (AccountActivationFeeCrediter)CrediterFactory.Acquire(user, CreditType.AccountActivationFee);
            var moneyLeftForPools = Crediter.CreditReferer(amount);

            //Pools
            PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, moneyLeftForPools);

            user.IsAccountActivationFeePaid = true;
            user.Save();

            Message += "Account activated.";
            History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message);

            Successful = true;
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
        }

        PaymentProcessor PP = PaymentAccountDetails.GetFromStringType(from);

        CompletedPaymentLog.Create(PP, "Activation Fee", transId, false, user.Name, amount, Money.Zero, Successful, cryptoCurrencyInfo);
    }
コード例 #7
0
ファイル: facebook.aspx.cs プロジェクト: dovanduy/titan
    public static string LikeUnlike(string adId, bool credit)
    {
        string succMsg = string.Empty;

        if (FacebookMember.Logged() != null)
        {
            Member         User = Member.Current;
            FacebookMember FbUser;
            FacebookAdvert Ad = new FacebookAdvert(Convert.ToInt32(adId));

            FbUser = new FacebookMember(FacebookMember.Logged());

            //Facebook security (banning multiple accounts instantly)
            User.FacebookName = FbUser.Name;
            User.Save();

            AntiCheatSystem.AfterFacebookLogin(User);

            if (FbUser == null)
            {
                return(U5008.MUSTCONNECTFB);
            }

            if (!HasUserMeetRequirements(Ad, FbUser))
            {
                return(L1.NOTMEETREQUIREMENTS);
            }

            var userLikes = User.FbLikesToday;
            var maxLikes  = User.Membership.MaxFacebookLikesPerDay;
            if (userLikes >= maxLikes)
            {
                return(string.Format(U6004.REACHEDMAXLIKESPERDAY, maxLikes));
            }

            HttpContext.Current.Session["fbcookie"] = "notok";

            if (credit)
            {
                Ad.Click();
                succMsg = U3501.YOUHAVEBEENCREDITED + " (" + AppSettings.Facebook.PointsPerLike + " " + AppSettings.PointsName + ")";
            }
            else
            {
                Ad.Unclick();
                succMsg = string.Format(U5008.POINTSREVERSED, AppSettings.Facebook.PointsPerLike + " " + AppSettings.PointsName);
            }

            if (Ad.ShouldBeFinished)
            {
                Ad.Status = AdvertStatus.Finished;
            }

            Ad.SaveClicks();
            Ad.Save();

            //Use Crediter
            FacebookCrediter Crediter = (FacebookCrediter)CrediterFactory.Acquire(User, CreditType.FacebookLike);
            Crediter.CreditMember(Ad, credit);

            NotificationManager.RefreshWithMember(NotificationType.NewFacebookAds, User);
            return(succMsg);
        }
        else
        {
            return(U5008.MUSTCONNECTFB);
        }
    }
コード例 #8
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);
                }

                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;
            }
        }
    }