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)); }
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)); }
/// <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); }
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); }
/// <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); }
/// <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); }
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); }
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); }
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); }
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 + ")"); }
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); }
public Money Reverse(Money Calculated, CreditAs As, int offerId, string OfferTitle, string NetworkName = "") { return(Credit(Calculated, As, offerId, OfferTitle, -1, true, NetworkName)); }
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); }
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); } }
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)); }
//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); }
//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); }
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); }