Beispiel #1
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);
        }
Beispiel #2
0
        /// <summary>
        /// Fired when credited
        /// </summary>
        /// <param name="Input"></param>
        /// <param name="As"></param>
        /// <param name="OfferwallName"></param>
        /// <param name="RequiresConversion"></param>
        /// <returns></returns>               //Wall.CreditAs, Wall.DisplayName, Wall.RequiresConversion
        public Money CreditMember(Money Input, Offerwall Wall)
        {
            Money Calculated = Credit(Input, Wall.CreditAs, Wall.DisplayName, Wall.RequiresConversion);

            User.CompletedOffersFromOfferwallsToday += 1;

            if (Calculated.GetRealTotals() >= 100)
            {
                User.CompletedOffersMoreThan100pFromOfferwallsToday += 1;
            }

            if (Wall.DisplayName.Contains("Wannads"))
            {
                User.CompletedDailyOffersFromOfferwallsToday += 1;
            }

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

            User.Save();

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

            //Offerwalls included in Clicks Contest
            if (Wall.IsIncludedInPTCContest)
            {
                ContestManager.IMadeAnAction(ContestType.Click, User.Name, null, 1);
            }

            return(Calculated);
        }
Beispiel #3
0
        public static Money CalculatedAndConversion(Money Input, Member member, Offerwall Wall)
        {
            Money Calculated = new Money(Input.ToDecimal());

            //Money to Money in diffrent Currency
            if (Wall.WhatIsSent == WhatIsSent.Money && Wall.CreditAs == CreditAs.MainBalance && AppSettings.Site.CurrencyCode != Wall.CurrencyCode)
            {
                Calculated = Calculated.ExchangeFrom(Wall.CurrencyCode);
            }
            //Poinst to Money
            else if (Wall.WhatIsSent == WhatIsSent.Points && Wall.CreditAs == CreditAs.MainBalance)
            {
                if (AppSettings.Points.PointsEnabled && Wall.UseVirtualCurrencySetting)
                {
                    Calculated = PointsConverter.ToMoney(Calculated.ToDecimal());
                    Calculated = Calculated.ExchangeFrom(Wall.CurrencyCode);
                }
                else
                {
                    Calculated = PointsConverter.ToMoney(Calculated.ToDecimal(), Wall.MoneyToPointsRate.ToDecimal());
                    Calculated = Calculated.ExchangeFrom(Wall.CurrencyCode);
                }
            }
            //Money to Points
            else if (Wall.WhatIsSent == WhatIsSent.Money && Wall.CreditAs == CreditAs.Points)
            {
                Calculated = Calculated.ExchangeFrom(Wall.CurrencyCode);
                Calculated = new Money(PointsConverter.ToPoints(Calculated));
            }
            //Points to Points in diffrent Currency
            else if (Wall.WhatIsSent == WhatIsSent.Points && Wall.CreditAs == CreditAs.Points && AppSettings.Site.CurrencyCode != Wall.CurrencyCode)
            {
                Calculated = PointsConverter.ToMoney(Calculated.ToDecimal(), Wall.MoneyToPointsRate.ToDecimal());
                Calculated = Calculated.ExchangeFrom(Wall.CurrencyCode);
                Calculated = new Money(PointsConverter.ToPoints(Calculated));
            }
            //No conversion

            //Modify by credit percentage
            Calculated = Money.MultiplyPercent(Calculated, Wall.CreditPercentage);

            ///Membership fee
            Calculated = Money.MultiplyPercent(Calculated, member.Membership.OfferwallsProfitPercent);

            return(Calculated);
        }
Beispiel #4
0
        public static void ProcessRequest(HttpContext context)
        {
            try
            {
                string RequestIP = IP.Current;

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

                //Force refresh
                AppSettings.Offerwalls.Reload();
                AppSettings.Points.Reload();

                //Get proper Offerwall
                string Hash = OfferwallFileManager.GetHashFromClientHandlerHit(context);

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

                //All OK
                string Username     = GetFromRequest(context, Wall.VariableNameOfUsername);
                string _Balance     = GetFromRequest(context, Wall.VariableNameOfBalance);
                string TrackingInfo = GetFromRequest(context, Wall.VariableNameOfTrackingInfo); //Can be null
                string _CreditVal   = GetFromRequest(context, Wall.VariableNameOfType);         //Can be null
                string Signature    = GetFromRequest(context, Wall.VariableNameOfSignature);    //Can be null
                Money  Balance      = Money.Parse(_Balance);

                Member member = null;

                //Check Status and IP restrictions
                bool ActiveRestriction = Wall.Status == OfferwallStatus.Active;
                bool IPRestriction     = !Wall.HasRestrictedIPs || (Wall.HasRestrictedIPs && IpRangeHelper.isOK(Wall.RestrictedIPs, RequestIP));

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

                        //Check if member exists
                        try
                        {
                            member = new Member(Username);

                            if ((_CreditVal != null && _CreditVal == Wall.VariableValueOfTypeReversed) ||
                                (_CreditVal == null && Balance < Money.Zero))
                            {
                                //Reverse
                                OfferwallsLog oldLog = PointsLockingHelper.FindSimilarLog(member.Name, Wall.DisplayName, TrackingInfo);

                                if (oldLog == null)
                                {
                                    OfferwallCrediter Crediter = new OfferwallCrediter(member, Wall);
                                    Calculated = Crediter.ReverseCredit(Balance, Wall.CreditAs, Wall.DisplayName, Wall.RequiresConversion);

                                    History.AddOfferwalRevereseCompleted(Username, Wall.DisplayName, Calculated, Wall.CreditAs);
                                    Status = OfferwallsLogStatus.ReversedByOfferwall;
                                }
                                //change old log status
                                else
                                {
                                    Status        = OfferwallsLogStatus.ReversedByOfferwall;
                                    oldLog.Status = Status;
                                }
                            }

                            if ((_CreditVal != null && _CreditVal == Wall.VariableValueOfTypeCredited) ||
                                (_CreditVal == null && Balance >= Money.Zero))
                            {
                                //Credit
                                if (PointsLockingManager.OfferwallShouldBeLocked(Balance, member, Wall))
                                {
                                    Calculated = OfferwallCrediter.CalculatedAndConversion(Balance, member, Wall);
                                    History.AddOfferLocked(Username, Wall.DisplayName, null, Calculated, Wall.CreditAs);

                                    Status = OfferwallsLogStatus.CreditedAndPointsLocked;
                                }
                                else
                                {
                                    OfferwallCrediter Crediter = new OfferwallCrediter(member, Wall);
                                    Calculated = Crediter.CreditMember(Balance, Wall);
                                    History.AddOfferwalCompleted(Username, Wall.DisplayName, Calculated, Wall.CreditAs);
                                    Status = OfferwallsLogStatus.CreditedByOfferwall;
                                }
                            }

                            if ((_CreditVal != null && (_CreditVal != Wall.VariableValueOfTypeCredited && _CreditVal != Wall.VariableValueOfTypeReversed)))
                            {
                                Status = OfferwallsLogStatus.WrongCreditVariable;
                            }

                            //Add OfferwallsLog
                            OfferwallsLog.Create(Wall, member.Name, Balance, Calculated, TrackingInfo, Status);

                            //If All was handled OK, than succResponse
                            context.Response.Write(Wall.ValueOfSuccessfulResponse);
                        }
                        catch (MsgException ex)
                        {
                            Status = OfferwallsLogStatus.MemberNotFoundByUsername;
                            OfferwallsLog.Create(Wall, Username, Balance, Calculated, TrackingInfo, Status);
                        }
                    }
                    else
                    {
                        OfferwallsLog.Create(Wall, Username, Balance, null, TrackingInfo, OfferwallsLogStatus.WrongSignature);
                    }
                }
                else if (IPRestriction)
                {
                    OfferwallsLog.Create(Wall, Username, Balance, null, TrackingInfo, OfferwallsLogStatus.OfferwallInactive);
                }
                else if (ActiveRestriction)
                {
                    OfferwallsLog.Create(Wall, Username, Balance, null, TrackingInfo, OfferwallsLogStatus.SentFromUnallowedIP);
                }
            }
            catch (Exception ex) { Prem.PTC.ErrorLogger.Log(ex); }
        }
Beispiel #5
0
 public OfferwallCrediter(Member User, Offerwall offerwall)
     : base(User)
 {
     Wall = offerwall;
 }