Esempio n. 1
0
        /// <summary>
        /// This code should be executed when the item ENDED.
        /// </summary>
        /// <param name="snipe">Snipe associated to the ENDED item</param>
        /// <returns></returns>
        private void CheckSnipeResult(Snipe snipe)
        {
            // We reload the snipe from the database... Maybe something changed!
            snipe = SL_Scheduler.otherService.GetSnipe((int)snipe.SnipeID);

            if (snipe.ResultInProgress)
                return;

            Logger.CreateLog("Beginning__CheckingSnipeResult", snipe.SnipeID.ToString(), null, EnumLogLevel.INFO);

            try
            {
                snipe.ResultInProgress = true;

                User user = SL_Scheduler.otherService.GetUserForSnipe(snipe);

                if (user == null)
                {
                    snipe.SnipeStatus = EnumSnipeStatus.ERROR;
                    snipe.SnipeErrorReason = "The user assocated to the snipe couldn't be loaded properly.";
                    Logger.CreateLog("Error__CheckingSnipeResult", snipe.SnipeID.ToString(), new Exception("The user assocated to the snipe couldn't be loaded properly."), EnumLogLevel.WARN);
                }
                else
                {
                    if (snipe.SnipeStatus == EnumSnipeStatus.EXECUTED || (snipe.SnipeStatus == EnumSnipeStatus.ACTIVE && snipe.SnipeStyle == EnumSnipeStyle.BidOptimizer))
                    {
                        SL_Scheduler.eBayService.User = user;

                        eBayItemData item = SL_Scheduler.eBayService.GetItemDetails(snipe.ItemID, true);
                        item.ItemCurrentHighestBidUserCurrency = this.ConvertBidCurrency(item.ItemCurrentHighestBid, item.ItemCurrencyCode, user.UserCurrency);
                        snipe.ItemLastKnownPrice = item.ItemCurrentHighestBidUserCurrency;

                        if (SL_Scheduler.eBayService.UserWonTheItem(snipe.ItemID))
                            snipe.SnipeStatus = EnumSnipeStatus.SUCCEED;
                        else
                            snipe.SnipeStatus = EnumSnipeStatus.FAILED;
                    }

                    if (snipe.SnipeStatus == EnumSnipeStatus.FAILED || snipe.SnipeStatus == EnumSnipeStatus.OVERBID)
                        this.CreateFollowingSnipe(snipe);

                    if (snipe.SnipeStatus == EnumSnipeStatus.ACTIVE)
                        snipe.SnipeStatus = EnumSnipeStatus.UNKNOW;

                    snipe.CancelSnipesInCaseOfSuccess = true;
                }
                SL_Scheduler.myDataConnection.Save<Snipe>((object)snipe, snipe);
                Logger.CreateLog("SnipeSave__PlaceSnipe", snipe.SnipeID.ToString() + "_" + snipe.SnipeStatus.ToString(), null, EnumLogLevel.INFO);

            }
            catch (ControlObjectException ex)
            {
                foreach (UserMessage error in ex.ErrorList)
                    Logger.CreateLog("Error__CheckingSnipeResult_" + error.MessageCode.ToString() + error.Severity.ToString(), snipe.SnipeID.ToString(), ex, EnumLogLevel.ERROR);
            }
            catch (Exception ex)
            {
                Logger.CreateLog("Error__CheckingSnipeResult", snipe.SnipeID.ToString(), ex, EnumLogLevel.ERROR);
            }

            Logger.CreateLog("Ending__CheckingSnipeResult", snipe.SnipeID.ToString(), null, EnumLogLevel.INFO);

            snipe.ResultInProgress = false;

            // Delete object
            ListSnipesToSurvey.Remove(snipe);

            foreach (Snipe currSnipe in ListSnipesToSurvey)
            {
                if (currSnipe.SnipeID == snipe.SnipeID)
                {
                    ListSnipesToSurvey.Remove(currSnipe);
                    break;
                }
            }

            // Cleaning
            UltimateSniper_BusinessObjects.Snipe.CheckTimeEventHandler ctHandler = new Snipe.CheckTimeEventHandler(snipe.CheckTime);
            this.CheckTimeEvent -= ctHandler;
            snipe = null;
            //System.GC.Collect();
        }
Esempio n. 2
0
        public string Timer_UpdateEndingSnipes(bool ActiveSnipe)
        {
            try
            {
                Logger.CreateLog("Beginning__UpdateEndingSnipes", EnumLogLevel.INFO);

                IList<Snipe> ListNewSnipes = new List<Snipe>();

                Query q = new Query();

                Criterion critDateSup = new Criterion();
                critDateSup.Operator = CriteriaOperator.LessThan;
                critDateSup.PropertyName = "ItemEndDate";
                DateTime nowPlusOne = SL_Scheduler.GeteBayOfficialTime().AddHours(1);
                critDateSup.Value = "#DateParse#" + nowPlusOne.ToString() + "#EndDateParse#";

                q.Criteria.Add(critDateSup);

                Criterion critStatus = new Criterion();
                critStatus.Operator = CriteriaOperator.Equal;
                critStatus.PropertyName = "SnipeStatusID";
                critStatus.Value = 1;

                q.Criteria.Add(critStatus);

                q.Members.Add("*");

                try
                {
                    Logger.CreateLog("Snipe_UpdateEndingSnipes", "Number in memory: " + this.ListSnipesToSurvey.Count.ToString(), null, EnumLogLevel.INFO);

                    ListNewSnipes = SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(q);

                    Logger.CreateLog("Snipe_UpdateEndingSnipes", "Number found: " + ListNewSnipes.Count.ToString(), null, EnumLogLevel.INFO);
                }
                catch (ControlObjectException ex)
                {
                    foreach (UserMessage error in ex.ErrorList)
                        Logger.CreateLog("Error__UpdateEndingSnipes_" + error.MessageCode.ToString() + error.Severity.ToString(), null, ex, EnumLogLevel.ERROR);
                }
                catch (Exception ex)
                {
                    Logger.CreateLog("Error__UpdateEndingSnipes", null, ex, EnumLogLevel.ERROR);
                }

                foreach (Snipe snipe in ListNewSnipes)
                {
                    bool found = false;
                    foreach (Snipe currSnipe in ListSnipesToSurvey)
                    {
                        if (currSnipe.SnipeID == snipe.SnipeID)
                        {
                            found = true;
                            break;
                        }
                    }

                    if (!found)
                    {
                        snipe.CheckTimeActive = true;
                        snipe.ActiveSnipe = ActiveSnipe;

                        this.ListSnipesToSurvey.Add(snipe);
                        UltimateSniper_BusinessObjects.Snipe.CheckTimeEventHandler ctHandler = new Snipe.CheckTimeEventHandler(snipe.CheckTime);
                        this.CheckTimeEvent += ctHandler;

                        UltimateSniper_BusinessObjects.PlaceSnipeEventHandler pseHandler = new PlaceSnipeEventHandler(this.PlaceSnipe);
                        snipe.PlaceSnipeEvent += pseHandler;

                        UltimateSniper_BusinessObjects.CheckSnipeResultEventHandler csrHandler = new CheckSnipeResultEventHandler(this.CheckSnipeResult);
                        snipe.CheckSnipeResultEvent += csrHandler;
                    }
                }

                Logger.CreateLog("Ending__UpdateEndingSnipes", EnumLogLevel.INFO);

                // Cleaning
                ListNewSnipes.Clear();
                //System.GC.Collect();
            }
            catch (Exception ex)
            {
                Logger.CreateLog("Error__UpdateEndingSnipes", string.Empty, ex, EnumLogLevel.INFO);
            }

            return DateTime.Now.ToString();
        }