Exemplo n.º 1
0
        public Money CreditFromPostback(Money Input, CreditAs As, string NetworkName, int offerId, string OfferTitle, int CpaOfferId,
                                        bool RequiresConversion = false, int CPACompletedIncreasedBy = 1)
        {
            Money Calculated = CalculatePostback(Input, RequiresConversion, base.User, As);

            return(Credit(Calculated, As, offerId, OfferTitle, CPACompletedIncreasedBy, false, NetworkName));
        }
Exemplo n.º 2
0
        public Money ReverseCreditFromPostback(Money Input, CreditAs As, string NetworkName, int offerId,
                                               string OfferTitle, bool RequiresConversion = false)
        {
            Money Calculated = CalculatePostback(Input, RequiresConversion, base.User, As);

            return(Reverse(Calculated.Negatify(), As, offerId, "<b>REVERSAL -</b> " + OfferTitle, NetworkName));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Fired when reversed
        /// </summary>
        /// <param name="Input"></param>
        /// <param name="As"></param>
        /// <param name="OfferwallName"></param>
        /// <param name="RequiresConversion"></param>
        /// <returns></returns>
        public Money ReverseCredit(Money Input, CreditAs creditAs, string OfferwallName, bool RequiresConversion = false)
        {
            Money Calculated = Credit(Input.Negatify(), creditAs, OfferwallName + " - REVERSAL", RequiresConversion);

            User.CompletedOffersFromOfferwallsToday -= 1;

            if (Calculated.GetRealTotals() <= -100)
            {
                User.CompletedOffersMoreThan100pFromOfferwallsToday -= 1;
            }

            if (OfferwallName.Contains("Wannads"))
            {
                User.CompletedDailyOffersFromOfferwallsToday -= 1;
            }

            User.Save();

            ContestManager.IMadeAnAction(ContestType.Offerwalls, User.Name, null, -1);

            //Offerwalls included in Clicks Contest
            Offerwall currentOfferWall = new Offerwall(OfferwallName);

            if (currentOfferWall.IsIncludedInPTCContest)
            {
                ContestManager.IMadeAnAction(ContestType.Click, User.Name, null, -1);
            }

            return(Calculated);
        }
Exemplo n.º 4
0
        private Money CreditGeneral(Money Input, CreditAs As, string OfferwallName, bool RequiresConversion = false, bool IsReversal = false)
        {
            Money Calculated = Money.MultiplyPercent(Input, base.User.Membership.OfferwallsProfitPercent);

            //Conversion?
            if (RequiresConversion)
            {
                if (As == CreditAs.Points)
                {
                    Calculated = new Money(PointsConverter.ToPoints(Calculated));
                }
                if (As == CreditAs.MainBalance)
                {
                    Calculated = PointsConverter.ToMoney(Calculated.ToDecimal());
                }
            }

            if (As == CreditAs.Points)
            {
                base.CreditPoints(Calculated.GetRealTotals(), "CrowdFlower", BalanceLogType.Other);
                base.CreditReferersPoints(Calculated.GetRealTotals(), "CrowdFlower /ref/ " + User.Name, BalanceLogType.Other);
            }
            if (As == CreditAs.MainBalance)
            {
                base.CreditMainBalance(Calculated, "CrowdFlower", BalanceLogType.Other);
                base.CreditReferersMainBalance(Calculated, "CrowdFlower /ref/ " + User.Name, BalanceLogType.Other);
            }

            History.AddOfferwalCompleted(User.Name, OfferwallName, Calculated, As);

            return(Calculated);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Fired when credited
        /// </summary>
        /// <param name="Input"></param>
        /// <param name="As"></param>
        /// <param name="OfferwallName"></param>
        /// <param name="RequiresConversion"></param>
        /// <returns></returns>
        public Money Credit(Money Input, CreditAs As, string OfferwallName, bool RequiresConversion = false)
        {
            Money Calculated = CreditGeneral(Input, As, OfferwallName, RequiresConversion);

            User.Save();

            //Contests
            Prem.PTC.Contests.ContestManager.IMadeAnAction(Prem.PTC.Contests.ContestType.CrowdFlower, User.Name, null, 1);

            return(Calculated);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Fired when reversed
        /// </summary>
        /// <param name="Input"></param>
        /// <param name="As"></param>
        /// <param name="OfferwallName"></param>
        /// <param name="RequiresConversion"></param>
        /// <returns></returns>
        public Money Reverse(Money Input, CreditAs As, string OfferwallName, bool RequiresConversion = false)
        {
            OfferwallName = OfferwallName + " - REVERSAL";

            Money Calculated = CreditGeneral(Input.Negatify(), As, OfferwallName, RequiresConversion);

            User.Save();

            //Contests
            Prem.PTC.Contests.ContestManager.IMadeAnAction(Prem.PTC.Contests.ContestType.CrowdFlower, User.Name, null, -1);

            return(Calculated);
        }
Exemplo n.º 7
0
        private Money Credit(Money Input, CreditAs creditAs, string OfferwallName, bool RequiresConversion = false, bool IsReversal = false)
        {
            Money Calculated = CalculatedAndConversion(Input, base.User, Wall);

            if (creditAs == CreditAs.Points)
            {
                Calculated = CLP.CLPManager.ProceedWithOfferwall(Calculated.GetRealTotals(), User);
                base.CreditPoints(Calculated.GetRealTotals(), "Offer Wall: " + OfferwallName, BalanceLogType.Other);
                base.CreditReferersPoints(Calculated.GetRealTotals(), "Offer Wall /ref/ " + User.Name, BalanceLogType.Other);
            }
            if (creditAs == CreditAs.MainBalance)
            {
                Calculated = CLP.CLPManager.ProceedWithOfferwall(Calculated, User);
                base.CreditMainBalance(Calculated, "Offer Wall: " + OfferwallName, BalanceLogType.Other);
                base.CreditReferersMainBalance(Calculated, "Offer Wall /ref/ " + User.Name, BalanceLogType.Other);
            }
            return(Calculated);
        }
Exemplo n.º 8
0
    private static bool ShouldBeLocked(Money money, CreditAs creditAs, Member member, bool RequiresConversion)
    {
        int Points = 0;

        if (creditAs == CreditAs.MainBalance)
        {
            Points = money.ConvertToPoints();
        }
        else
        {
            Points = money.AsPoints();
        }

        if (Points > AppSettings.Points.LockPoints && AppSettings.Points.IsLock)
        {
            return(true);
        }

        return(false);
    }
Exemplo n.º 9
0
        public static void AddOfferLocked(string username, string networkName, string offerName, Money value, CreditAs As)
        {
            string amount = value.ToString();

            if (As == CreditAs.Points)
            {
                amount = value.GetRealTotals().ToString() + " " + AppSettings.PointsName;
            }


            if (!string.IsNullOrWhiteSpace(offerName))
            {
                networkName = networkName + ": ";
            }

            AddEntry(username, HistoryType.LockedFunds, " (" + networkName + offerName + "), " + amount);
        }
Exemplo n.º 10
0
        public static void AddOfferwalRevereseCompleted(string username, string offerwallname, Money value, CreditAs As)
        {
            string amount = value.ToString();

            if (As == CreditAs.Points)
            {
                amount = value.GetRealTotals().ToString() + " " + AppSettings.PointsName;
            }


            AddEntry(username, HistoryType.OfferwallRevers, " " + amount + " (" + offerwallname + ")");
        }
Exemplo n.º 11
0
        public Money Credit(Money Calculated, CreditAs As, int offerId, string OfferTitle, int CPACompletedIncreasedBy = 1, bool isReversal = false,
                            string NetworkName = "")
        {
            string balanceLogsNote    = "CPA offer (" + (NetworkName != "" ? NetworkName + ": " : "") + OfferTitle + ") ";
            string balanceLogsNoteRef = "CPA offer " + "/ref/" + User.Name + " (" + (NetworkName != "" ? NetworkName + ": " : "") + OfferTitle + ") ";


            if (As == CreditAs.Points)
            {
                Calculated = CLP.CLPManager.ProceedWithCPA(Calculated.GetRealTotals(), User, isReversal);
                base.CreditPoints(Calculated.GetRealTotals(), balanceLogsNote, BalanceLogType.Other);
                base.CreditReferersPoints(Calculated.GetRealTotals(), balanceLogsNoteRef, BalanceLogType.Other);

                if (isReversal == false)
                {
                    History.AddCPAOfferCompleted(User.Name, OfferTitle, Calculated.GetRealTotals().ToString() + " " + AppSettings.PointsName, NetworkName, offerId);
                }

                Mailer.TryToSendCPACreditedMessage(User, Resources.L1.HISTORY_10 + ": " + OfferTitle + "(" + Calculated.GetRealTotals().ToString() + " " + AppSettings.PointsName + ")");
            }
            if (As == CreditAs.MainBalance)
            {
                Calculated = CLP.CLPManager.ProceedWithCPA(Calculated, User, isReversal);
                base.CreditMainBalance(Calculated, balanceLogsNote, BalanceLogType.Other);
                base.CreditReferersMainBalance(Calculated, balanceLogsNoteRef, BalanceLogType.Other, 1, null, true);

                if (isReversal == false)
                {
                    History.AddCPAOfferCompleted(User.Name, OfferTitle, Calculated.ToString(), NetworkName, offerId);
                }

                Mailer.TryToSendCPACreditedMessage(User, Resources.L1.HISTORY_10 + ": " + OfferTitle + "(" + Calculated.ToString() + ")");
            }

            //Slot machine chances
            SlotMachine.SlotMachine.TryAddChances(User);

            //Achievements trial
            User.TryToAddAchievements(
                Prem.PTC.Achievements.Achievement.GetProperAchievements(
                    Prem.PTC.Achievements.AchievementType.AfterCPAOffersCompleted, User.TotalCPACompleted));

            User.Save();

            if (!isReversal)
            {
                if (CPAOfferContestManager.IsIncludedInContest(offerId))
                {
                    ContestManager.IMadeAnAction(Prem.PTC.Contests.ContestType.Offer, User.Name, null, 1);
                }
            }
            else
            {
                if (CPAOfferContestManager.IsIncludedInContest(offerId))
                {
                    ContestManager.IMadeAnAction(Prem.PTC.Contests.ContestType.Offer, User.Name, null, -1);
                }
            }

            return(Calculated);
        }
Exemplo n.º 12
0
 public Money Reverse(Money Calculated, CreditAs As, int offerId, string OfferTitle, string NetworkName = "")
 {
     return(Credit(Calculated, As, offerId, OfferTitle, -1, true, NetworkName));
 }
Exemplo n.º 13
0
        public UserControl CreateCPAOfferBox(string TargetURL, string OfferImageURL, string Title, string Description, DateTime DateAdded,
                                             string Category, Money Amount, int Rating, int CompletedTimes, int OfferId, string AVGCreditingTime,
                                             string lastcredited, bool RequireLoginBox, bool RequireEmailBox, CreditAs creditAs, string RightText = null, bool ShowReturnButton = false,
                                             string sender = "")
        {
            UserControl objControl    = (UserControl)(HttpContext.Current.Handler as Page).LoadControl("~/Controls/Advertisements/CPAOffer.ascx");
            var         parsedControl = objControl as ICPAOfferObjectControl;

            parsedControl.Object           = this;
            parsedControl.Text             = RightText;
            parsedControl.ShowReturnButton = ShowReturnButton;
            parsedControl.Sender           = sender;

            parsedControl.DataBind();

            return((UserControl)parsedControl);
        }
Exemplo n.º 14
0
        public static void ProcessRequest(HttpContext context)
        {
            try
            {
                string RequestIP = IP.Current;

                //Log
                string LogMessage = context.Request.Params.ToRawString();
                ErrorLogger.Log(LogMessage, LogType.CPAGPTNetworks);

                AppSettings.Points.Reload();

                //Get proper Network
                string Hash = CPAFileManager.GetHashFromClientHandlerHit(context);

                AffiliateNetwork Network = TableHelper.SelectRows <AffiliateNetwork>(TableHelper.MakeDictionary("Hash", Hash))[0];

                //All OK
                string Username = GetFromRequest(context, Network.VariableNameOfUsername);
                //string _Balance = GetFromRequest(context, Network.VariableNameOfBalance);
                string OfferID    = GetFromRequest(context, Network.VariableNameOfOfferId);
                string _WebsiteId = GetFromRequest(context, Network.VariableNameOfWebsiteId); //Can be null

                string OfferTitle = GetFromRequest(context, Network.VariableNameOfOfferName); //Can be null

                string _CreditVal = GetFromRequest(context, Network.VariableNameOfType);      //Can be null
                string Signature  = GetFromRequest(context, Network.VariableNameOfSignature); //Can be null
                string UserIP     = GetFromRequest(context, Network.VariableNameOfMemberIP);  //Can be null

                string ShortOfferTitle = OfferTitle != null ? ": " + ShortenString(OfferTitle, 8) + "..." : "";
                string TrackingInfo    = OfferID;

                bool isLocked = false;  //Points Locking feature

                Money Balance = new Money(0);
                //try
                //{
                //    Balance = Money.Parse(_Balance);
                //}
                //catch (Exception ex) { }

                //Check Status and IP restrictions
                bool ActiveRestriction = Network.Status == NetworkStatus.Active;
                bool IPRestriction     = !Network.HasRestrictedIPs || (Network.HasRestrictedIPs && Network.RestrictedIPs.Contains(RequestIP));

                if (ActiveRestriction && IPRestriction)
                {
                    //Check condition
                    if (Signature == null || Signature.Trim() == CPAParser.ParseSignatureCondition(Network.SIgnatureCondition, context).Trim())
                    {
                        //All OK, Verified
                        CPAPostBackLogStatus Status = CPAPostBackLogStatus.Null;
                        Money Calculated            = new Money(0);

                        //Let's get our offer
                        CPAOffer OurOffer = null;
                        try
                        {
                            var where = TableHelper.MakeDictionary("NetworkOfferIdInt", OfferID);
                            where.Add("AdvertiserUsername", Network.Name);
                            where.Add("Status", (int)AdvertStatus.Active);

                            OurOffer = TableHelper.SelectRows <CPAOffer>(where)[0];
                            Balance  = OurOffer.BaseValue;
                        }
                        catch (Exception ex)
                        { ErrorLogger.Log(ex); }


                        if (OurOffer != null)
                        {
                            //Lets find submission
                            try
                            {
                                Member             User       = new Member(Username);
                                CreditAs           As         = GetCreditAs(OurOffer, Network);
                                PostbackActionType ActionType = CPAHandler.GetActionType(Network, Balance, _CreditVal);

                                var conditions = TableHelper.MakeDictionary("Username", Username);
                                conditions.Add("OfferId", OurOffer.Id);
                                conditions.Add("OfferStatus", (int)OfferStatus.Pending);

                                int IsSubmissionPresent = TableHelper.CountOf <OfferRegisterEntry>(conditions);

                                //Add submission automatically if credit and not found
                                if (IsSubmissionPresent == 0 && ActionType == PostbackActionType.Credit)
                                {
                                    OfferRegisterEntry.CheckDuplicateAndStatus(User.Name, OurOffer, true);
                                    OfferRegisterEntry.AddNew(OurOffer, User.Name, OfferStatus.Pending, String.Empty, String.Empty);

                                    IsSubmissionPresent = TableHelper.CountOf <OfferRegisterEntry>(conditions);
                                }

                                if (IsSubmissionPresent > 0)
                                {
                                    OfferRegisterEntry ThisEntry = TableHelper.SelectRows <OfferRegisterEntry>(conditions)[0];

                                    if (ActionType == PostbackActionType.Reverse)
                                    {
                                        CPAPostbackLog oldLog = PointsLockingHelper.FindSimilarCpaLog(User.Name, Network.Name, TrackingInfo);

                                        if (oldLog == null)
                                        {
                                            Calculated = CPAManager.DenyEntryFromPostback(ThisEntry, Balance, As, OurOffer.Id,
                                                                                          Network.Name, OfferTitle, Network.RequiresConversion);
                                            Status = CPAPostBackLogStatus.ReversedByNetwork;
                                        }
                                        else
                                        {
                                            Status        = CPAPostBackLogStatus.ReversedByNetwork;
                                            oldLog.Status = Status;
                                            CPAManager.DenyEntry(ThisEntry, User, OfferTitle);
                                        }
                                    }

                                    if (ActionType == PostbackActionType.Credit)
                                    {
                                        if (PointsLockingManager.CPAGPTShouldBeLocked(Balance, As, User, Network.RequiresConversion))
                                        {
                                            ThisEntry.HasBeenLocked = true;
                                            ThisEntry.Save();

                                            Calculated = CPAGPTCrediter.CalculatePostback(Balance, Network.RequiresConversion, User, As);
                                            Status     = CPAPostBackLogStatus.CreditedAndPointsLocked;
                                            History.AddOfferLocked(User.Name, Network.Name, OfferTitle, Calculated, As);
                                        }
                                        else
                                        {
                                            var where = TableHelper.MakeDictionary("Id", ThisEntry._OfferId);
                                            var CpaOffer_entryId = TableHelper.SelectRows <CPAOffer>(where);
                                            Calculated = CPAManager.AcceptEntryFromPostback(ThisEntry, Balance, As, OurOffer.Id,
                                                                                            Network.Name, CpaOffer_entryId[0].Title, Network.RequiresConversion, out isLocked);
                                            Status = CPAPostBackLogStatus.CreditedByNetwork;
                                        }
                                    }

                                    //Add CPAPostbackLog
                                    CPAPostbackLog.Create(Network, Username, Balance, Calculated, TrackingInfo, Status);

                                    //If All was handled OK, than succResponse
                                    context.Response.Write(Network.ValueOfSuccessfulResponse);
                                }
                                else
                                {
                                    CPAPostbackLog.Create(Network, Username, Balance, Calculated, TrackingInfo, CPAPostBackLogStatus.SubmissionNotFound);
                                }
                            }
                            catch (MsgException ex)
                            {
                                //Offer has been already submited and it's not daily
                                //Offer is daily, but was submited today
                                //Offer is daly and can be submited X times a day, but was submited >= X today
                                CPAPostbackLog.Create(Network, Username, Balance, Calculated, TrackingInfo, CPAPostBackLogStatus.ExceededSubmissionLimitForThisOffer);
                                context.Response.Write(Network.ValueOfSuccessfulResponse);
                            }
                            catch (Exception ex)
                            {
                                ErrorLogger.Log(ex);
                                CPAPostbackLog.Create(Network, Username, Balance, Calculated, TrackingInfo, CPAPostBackLogStatus.Null);
                            }
                        }
                        else
                        {
                            CPAPostbackLog.Create(Network, Username, Balance, null, TrackingInfo, CPAPostBackLogStatus.OfferNotFoundByOfferId);
                        }
                    }
                    else
                    {
                        CPAPostbackLog.Create(Network, Username, Balance, null, TrackingInfo, CPAPostBackLogStatus.WrongSignature);
                    }
                }
                else if (IPRestriction)
                {
                    CPAPostbackLog.Create(Network, Username, Balance, null, TrackingInfo, CPAPostBackLogStatus.NetworkInactive);
                }
                else if (ActiveRestriction)
                {
                    CPAPostbackLog.Create(Network, Username, Balance, null, TrackingInfo, CPAPostBackLogStatus.SentFromUnallowedIP);
                }
            }
            catch (Exception ex) { Prem.PTC.ErrorLogger.Log(ex); }
        }
Exemplo n.º 15
0
 public static bool CPAGPTShouldBeLocked(Money money, CreditAs creditAs, Member member, bool RequiresConversion)
 {
     money = CPAGPTCrediter.CalculatePostback(money, RequiresConversion, member, creditAs);
     return(PointsLockingManager.ShouldBeLocked(money, creditAs, member, RequiresConversion));
 }
Exemplo n.º 16
0
        //From Postback
        public static Money AcceptEntryFromPostback(OfferRegisterEntry entry, Money balance, CreditAs creditAs, int offerId,
                                                    string networkName, string offerTitle, bool requiresConversion, out bool isLocked)
        {
            Money  Calculated = new Money(0);
            Member User       = new Member(entry.Username);

            CPAManager.AcceptEntry(entry, User);
            CPAGPTCrediter Crediter = (CPAGPTCrediter)CrediterFactory.Acquire(User.Name, CreditType.CPAGPTOffer);

            Calculated = Crediter.CreditFromPostback(balance, creditAs, networkName, offerId, offerTitle, entry._OfferId, requiresConversion);

            //isLocked = Crediter.isLocked;
            isLocked = false; //TODO

            return(Calculated);
        }
Exemplo n.º 17
0
        //From Postback
        public static Money DenyEntryFromPostback(OfferRegisterEntry entry, Money balance, CreditAs creditAs, int offerId,
                                                  string networkName, string offerTitle, bool requiresConversion)
        {
            Money  Calculated = new Money(0);
            Member User       = new Member(entry.Username);

            CPAManager.DenyEntry(entry, User, offerTitle);

            User.TotalCPACompleted -= 1;

            CPAGPTCrediter Crediter = (CPAGPTCrediter)CrediterFactory.Acquire(User.Name, CreditType.CPAGPTOffer);

            Calculated = Crediter.ReverseCreditFromPostback(balance, creditAs, networkName, offerId, offerTitle, requiresConversion);

            return(Calculated);
        }
Exemplo n.º 18
0
        public static Money CalculatePostback(Money Input, bool RequiresConversion, Member member, CreditAs As)
        {
            Money Calculated = Money.MultiplyPercent(Input, member.Membership.CPAProfitPercent);

            if (RequiresConversion)
            {
                if (As == CreditAs.Points)
                {
                    Calculated = new Money(PointsConverter.ToPoints(Calculated));
                }

                if (As == CreditAs.MainBalance)
                {
                    Calculated = PointsConverter.ToMoney(Calculated.GetRealTotals());
                }
            }

            return(Calculated);
        }