public string TranslateQuery(Query query, string from)
        {
            string q = "SELECT ";

            for (int i = 0; i < query.Members.Count; i++)
            {
                q += query.Members[i];

                if (i < query.Members.Count -1) q += ",";
            }

            q += " FROM " + from + " WHERE 1=1 ";

            foreach (Criterion criter in query.Criteria)
            {
                q += " AND " + criter.PropertyName;

                switch (criter.Operator)
                {
                    case CriteriaOperator.Equal:
                        q += " = ";
                        break;

                    case CriteriaOperator.GreaterThan:
                        q += " > ";
                        break;

                    case CriteriaOperator.LessThan:
                        q += " < ";
                        break;

                    case CriteriaOperator.Like:
                        q += " LIKE ";
                        break;

                    case CriteriaOperator.NotEqual:
                        q += " <> ";
                        break;
                }

                q += SafeSqlLiteral(criter.Value, 2);
            }

            return q;
        }
Exemple #2
0
        /// <summary>
        /// Reload user data from the DB
        /// </summary>
        public void UserRefreshInfo()
        {
            if (!this._isUserLoggedIn)
                throw new ControlObjectException(EnumSeverity.Bug, EnumMessageCode.UserNotLoggedIn);

            Query q = new Query();

            Criterion c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserID";
            c.Value = this._userLoggedIn.UserID;

            q.Criteria.Add(c);

            q.Members.Add("*");

            IList<User> users = this._myDataConnection.GetByCriteria<User>(q);

            if (users.Count == 1)
            {
                double hoursDiffStdTime = this._userLoggedIn.HoursDiffStdTime;

                this._userLoggedIn = users[0];
                this._userLoggedIn.HoursDiffStdTime = hoursDiffStdTime;
            }
            else
                throw new ControlObjectException(EnumSeverity.Warning, EnumMessageCode.UserCouldNotBeLoaded);
        }
Exemple #3
0
        /// <summary>
        /// Send the password to the user
        /// </summary>
        public void UserSendPassword(string emailOrUserName)
        {
            Query q = new Query();

            Criterion c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserName";
            c.Value = "'" + emailOrUserName + "'";

            q.Criteria.Add(c);

            c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserActive";
            c.Value = "1";

            q.Criteria.Add(c);

            q.Members.Add("*");

            IList<User> users = this._myDataConnection.GetByCriteria<User>(q);

            if (users.Count == 1)
            {
                ServiceEmail.SendEmail(users[0], "[SnipeAgent] Your password", "Here is your password: "******"UserEmailAddress";
            c.Value = "'" + emailOrUserName + "'";

            q.Criteria.Add(c);

            c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserActive";
            c.Value = "1";

            q.Criteria.Add(c);

            q.Members.Add("*");

            users = this._myDataConnection.GetByCriteria<User>(q);

            if (users.Count == 1)
            {
                ServiceEmail.SendEmail(users[0], "[SnipeAgent] Your password", "Here is your password: " + users[0].UserPassword);
                return;
            }
            else
                throw new ControlObjectException(EnumSeverity.Warning, EnumMessageCode.UserEmailOrUserNameNotFound);
        }
Exemple #4
0
        /// <summary>
        /// Fetch the token from eBay and assign it to the user currently logged in
        /// </summary>
        public bool SetUserToken(TokenFetcher fetcher)
        {
            if (_serviceEBay.User == null)
            {
                User user = new User();
                user.EBayUserToken = _serviceOther.DefaultToken();
                user.EBayUserTokenExpirationDate = _serviceOther.DefaultTokenExpirationDate();
                _serviceEBay.User = user;
            }

            try
            {
                TokenData token = _serviceEBay.FetchToken(fetcher);

                Query q = new Query();

                Criterion c = new Criterion();
                c.Operator = CriteriaOperator.Equal;
                c.PropertyName = "UserID";
                c.Value = fetcher.UserID;

                q.Criteria.Add(c);

                q.Members.Add("*");

                IList<User> users = this._myDataConnection.GetByCriteria<User>(q);

                if (users.Count == 1)
                {
                    User user = users[0];

                    this._userLoggedIn.EBayUserToken = token.Token;
                    this._userLoggedIn.EBayUserTokenExpirationDate = token.ExpirationDate;
                    this.UserSave(user);
                }
                else
                    throw new ControlObjectException(EnumSeverity.Bug, EnumMessageCode.UserCouldNotBeLoaded);

                return true;
            }
            catch
            {
                return false;
            }
        }
Exemple #5
0
        /// <summary>
        /// Use this function to log in
        /// </summary>
        /// <param name="userName">User name</param>
        /// <param name="userPassword">Password</param>
        public void UserLogin(string userName, string userPassword, bool mobile, double hoursDiffStdTime)
        {
            Query q = new Query();

            Criterion c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserName";
            c.Value = "'" + userName + "'";

            q.Criteria.Add(c);

            c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserPassword";
            c.Value = "'" + userPassword + "'";

            q.Criteria.Add(c);

            c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserActive";
            c.Value = "1";

            q.Criteria.Add(c);

            q.Members.Add("*");

            IList<User> users = this._myDataConnection.GetByCriteria<User>(q);

            if (users.Count == 1)
            {
                if (mobile && !users[0].HasOptions() && UltimateSniper_ServiceLayer.UserSettings.Default.isMobileInOptionPackage)
                    throw new ControlObjectException(EnumSeverity.Warning, EnumMessageCode.UserMobileAccessDenied);

                this._isUserLoggedIn = true;
                this._userLoggedIn = users[0];
                this._userLoggedIn.HoursDiffStdTime = hoursDiffStdTime;

                Random random = new Random();
                int num = random.Next();
                this.subscriptionRandomHex = num.ToString("X");

                this.isMobile = mobile;

                // We assign the user for the token!!
                this._serviceEBay.User = this._userLoggedIn;

                //Thread myThread = new Thread(new ThreadStart(UpdateSnipeValidity));

                //myThread.Start();
            }
            else
                throw new ControlObjectException(EnumSeverity.Warning, EnumMessageCode.UserPasswordAndLoginNotMatching);
        }
Exemple #6
0
        /// <summary>
        /// Returns the list of snipes placed by the user over the last month
        /// </summary>
        /// <returns></returns>
        public List<Snipe> GetRecentSnipes()
        {
            if (!this._isUserLoggedIn)
                throw new ControlObjectException(EnumSeverity.Bug, EnumMessageCode.UserNotLoggedIn);

            Query q = new Query();

            Criterion crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "UserID";
            crit.Value = this._userLoggedIn.UserID;

            q.Criteria.Add(crit);

            crit = new Criterion();
            crit.Operator = CriteriaOperator.GreaterThan;
            crit.PropertyName = "ItemEndDate";
            DateTime nowMin1Month = this.GeteBayOfficialTime().AddMonths(-1);
            crit.Value = "#DateParse#" + nowMin1Month.ToString() + "#EndDateParse#";

            q.Criteria.Add(crit);

            q.Members.Add("*");

            return this._myDataConnection.GetByCriteria<Snipe>(q).ToList();
        }
Exemple #7
0
        /// <summary>
        /// Return the list of snipes that the user placed and won
        /// </summary>
        /// <returns></returns>
        public List<Snipe> GetWonSnipes()
        {
            if (!this._isUserLoggedIn)
                throw new ControlObjectException(EnumSeverity.Bug, EnumMessageCode.UserNotLoggedIn);

            Query q = new Query();

            Criterion crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "UserID";
            crit.Value = this._userLoggedIn.UserID;

            q.Criteria.Add(crit);

            crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "SnipeStatusID";
            crit.Value = 4;

            q.Criteria.Add(crit);

            q.Members.Add("*");

            return this._myDataConnection.GetByCriteria<Snipe>(q).ToList();
        }
        public User GetUserForSnipe(Snipe snipe)
        {
            SqlDataContext myDataConnection = new SqlDataContext();

            Query q = new Query();

            Criterion c = new Criterion();
            c.Operator = CriteriaOperator.Equal;
            c.PropertyName = "UserID";
            c.Value = snipe.UserID;

            q.Criteria.Add(c);

            q.Members.Add("*");

            IList<User> userList = myDataConnection.GetByCriteria<User>(q);

            if (userList.Count != 1)
                return null;
            else
                return userList[0];
        }
Exemple #9
0
        /// <summary>
        /// Get the list of category passed as paramter
        /// </summary>
        /// <param name="categoryIDs">List of category IDs to be returned</param>
        /// <returns></returns>
        public List<Category> GetCategories(List<int> categoryIDs)
        {
            List<Category> ListCategories = new List<Category>();
            Query q;
            Criterion crit;

            foreach (int catID in categoryIDs)
            {
                q = new Query();

                crit = new Criterion();
                crit.Operator = CriteriaOperator.Equal;
                crit.PropertyName = "CategoryID";
                crit.Value = catID;

                q.Criteria.Add(crit);

                q.Members.Add("*");

                ListCategories.AddRange(this._myDataConnection.GetByCriteria<Category>(q).ToList());
            }

            return ListCategories;
        }
        public Snipe GetSnipe(int snipeID)
        {
            SqlDataContext myDataConnection = new SqlDataContext();

            Query q = new Query();

            Criterion crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "SnipeID";
            crit.Value = snipeID;

            q.Criteria.Add(crit);

            q.Members.Add("*");

            List<Snipe> snipes = myDataConnection.GetByCriteria<Snipe>(q).ToList();

            if (snipes.Count != 1)
                throw new Exception("Error when loading the snipe");
            else
                return snipes[0];
        }
        public void GetSimilarItemsTest()
        {
            ServiceEBay target = new ServiceEBay(true); // TODO: Initialize to an appropriate value
            Snipe snipe = new Snipe();
            List<eBayItemData> expected = null; // TODO: Initialize to an appropriate value
            List<eBayItemData> actual;

            IList<User> users = new List<User>();

            SqlDataContext myDataConnection = new SqlDataContext();

            Query q = new Query();

            Criterion crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "UserID";
            crit.Value = "2";

            q.Criteria.Add(crit);

            q.Members.Add("*");

            users = myDataConnection.GetByCriteria<User>(q);

            target.User = users[0];

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

            myDataConnection = new SqlDataContext();

            q = new Query();

            crit = new Criterion();
            crit.Operator = CriteriaOperator.Equal;
            crit.PropertyName = "SnipeID";
            crit.Value = "1";

            q.Criteria.Add(crit);

            q.Members.Add("*");

            snipes = myDataConnection.GetByCriteria<Snipe>(q);

            snipe = snipes[0];

            actual = target.GetSimilarItems(snipe);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
        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();
        }
        public string Timer_Snipe_CheckSnipeValidity()
        {
            try
            {
                Logger.CreateLog("Beginning__Snipe_CheckSnipeValidity", EnumLogLevel.INFO);

                IList<Snipe> snipeList = new List<Snipe>();
                IList<Snipe> tempList = new List<Snipe>();

                // Loading snipes not updated since one day:
                Query q = new Query();

                Criterion c = new Criterion();
                c.Operator = CriteriaOperator.LessThan;
                c.PropertyName = "ItemLastUpdate";
                DateTime nowMin24H = SL_Scheduler.GeteBayOfficialTime().AddHours(-24);
                c.Value = "#DateParse#" + nowMin24H.ToString() + "#EndDateParse#";

                q.Criteria.Add(c);

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

                q.Criteria.Add(critStatus);

                Criterion critInProgres = new Criterion();
                critInProgres.Operator = CriteriaOperator.Equal;
                critInProgres.PropertyName = "ValidityCheckInProgress";
                critInProgres.Value = "0";

                q.Criteria.Add(critInProgres);

                Criterion critStyle = new Criterion();
                critStyle.Operator = CriteriaOperator.NotEqual;
                critStyle.PropertyName = "SnipeStyleID";
                critStyle.Value = "2";

                q.Criteria.Add(critStyle);

                q.Members.Add("*");

                try
                {
                    tempList = SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(q);
                }
                catch (ControlObjectException ex)
                {
                    foreach (UserMessage error in ex.ErrorList)
                        Logger.CreateLog("Error__Snipe_CheckSnipeValidity_" + error.MessageCode.ToString() + error.Severity.ToString(), null, ex, EnumLogLevel.ERROR);
                }
                catch (Exception ex)
                {
                    Logger.CreateLog("Error__Snipe_CheckSnipeValidity", null, ex, EnumLogLevel.ERROR);
                }

                foreach (Snipe snipe in tempList)
                    snipeList.Add(snipe);

                // Loading snipes ending in the next day - IF THE USER HAS THE OPTION
            #warning Check that the query is working!
                q = new Query();

                c = new Criterion();
                c.PropertyName = "ItemEndDate";
                DateTime nowPlus24H = SL_Scheduler.GeteBayOfficialTime().AddHours(-24);
                c.Value = "#DateParse#" + nowPlus24H.ToString() + "#EndDateParse#";

                q.Criteria.Add(c);

                q.Members.Add("*");
                q.QueryName = "ForSuscribedUser";

                try
                {
                    tempList = new List<Snipe>();
                    tempList = SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(q);
                }
                catch (ControlObjectException ex)
                {
                    foreach (UserMessage error in ex.ErrorList)
                        Logger.CreateLog("Error__Snipe_CheckSnipeValidity_" + error.MessageCode.ToString() + error.Severity.ToString(), null, ex, EnumLogLevel.ERROR);
                }
                catch (Exception ex)
                {
                    Logger.CreateLog("Error__Snipe_CheckSnipeValidity", null, ex, EnumLogLevel.ERROR);
                }

                foreach (Snipe snipe in tempList)
                    snipeList.Add(snipe);

            #warning the locking of the snipes for validity check isnt very clean

                tempList = new List<Snipe>();

                Snipe tempS;

                // Set ValidityCheckInProgress at True
                foreach (Snipe snipe in snipeList)
                {
                    // We reload the snipe from the database... Maybe something changed!
                    tempS = SL_Scheduler.otherService.GetSnipe((int)snipe.SnipeID);

                    if (!tempS.SnipeInProgress && !tempS.ResultInProgress && !tempS.ValidityCheckInProgress)
                    {
                        tempS.ValidityCheckInProgress = true;
                        SL_Scheduler.myDataConnection.Save<Snipe>((object)tempS, tempS);

                        tempList.Add(tempS);
                    }
                }

                tempS = null;

                // Updating snipes
                foreach (Snipe snipe in tempList)
                    this.CheckSnipeValidity(snipe);

                // Set ValidityCheckInProgress at False
                foreach (Snipe snipe in tempList)
                {
                    snipe.ValidityCheckInProgress = false;
                    SL_Scheduler.myDataConnection.Save<Snipe>((object)snipe, snipe);
                }

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

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

            return DateTime.Now.ToString();
        }
        public string Timer_BidOptimizer_RefreshSnipes()
        {
            try
            {
                Logger.CreateLog("Beginning__Timer_BidOptimizer_RefreshSnipes", EnumLogLevel.INFO);

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

                DateTime nowMin1 = SL_Scheduler.GeteBayOfficialTime().AddMinutes(1);

                #region Load snipes ending later than a minute

                // Load snipes ending later than a minute
                Query qAll = new Query();

                Criterion cAll = new Criterion();
                cAll.Operator = CriteriaOperator.GreaterThan;
                cAll.PropertyName = "ItemEndDate";
                cAll.Value = "#DateParse#" + nowMin1.ToString() + "#EndDateParse#";

                qAll.Criteria.Add(cAll);

                Criterion cAllNotEnded = new Criterion();
                cAllNotEnded.Operator = CriteriaOperator.GreaterThan;
                cAllNotEnded.PropertyName = "ItemEndDate";
                cAllNotEnded.Value = "#DateParse#" + SL_Scheduler.GeteBayOfficialTime().ToString() + "#EndDateParse#";

                qAll.Criteria.Add(cAllNotEnded);

                Criterion cAllNotPending = new Criterion();
                cAllNotPending.Operator = CriteriaOperator.Equal;
                cAllNotPending.PropertyName = "SnipeInProgress";
                cAllNotPending.Value = 0;

                qAll.Criteria.Add(cAllNotPending);

                Criterion cLastUp = new Criterion();
                cLastUp.Operator = CriteriaOperator.LessThan;
                cLastUp.PropertyName = "ItemLastUpdate";
                DateTime nowMin2H = SL_Scheduler.GeteBayOfficialTime().AddHours(-2);
                cLastUp.Value = "#DateParse#" + nowMin2H.ToString() + "#EndDateParse#";

                qAll.Criteria.Add(cLastUp);

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

                qAll.Criteria.Add(critStatusAll);

                Criterion critStyleAll = new Criterion();
                critStyleAll.Operator = CriteriaOperator.Equal;
                critStyleAll.PropertyName = "SnipeStyleID";
                critStyleAll.Value = "2";

                qAll.Criteria.Add(critStyleAll);

                qAll.Members.Add("*");

                #endregion

                #region Load & process first the snipes ending in the next minute

                // Load & process first the snipes ending in the next minute
                Query q = new Query();

                Criterion c = new Criterion();
                c.Operator = CriteriaOperator.LessThan;
                c.PropertyName = "ItemEndDate";
                c.Value = "#DateParse#" + nowMin1.ToString() + "#EndDateParse#";

                q.Criteria.Add(c);

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

                q.Criteria.Add(critStatus);

                Criterion cNotPending = new Criterion();
                cNotPending.Operator = CriteriaOperator.Equal;
                cNotPending.PropertyName = "SnipeInProgress";
                cNotPending.Value = 0;

                q.Criteria.Add(cNotPending);

                Criterion critStyle = new Criterion();
                critStyle.Operator = CriteriaOperator.Equal;
                critStyle.PropertyName = "SnipeStyleID";
                critStyle.Value = "2";

                q.Criteria.Add(critStyle);

                Criterion cNotEnded = new Criterion();
                cNotEnded.Operator = CriteriaOperator.GreaterThan;
                cNotEnded.PropertyName = "ItemEndDate";
                cNotEnded.Value = "#DateParse#" + SL_Scheduler.GeteBayOfficialTime().ToString() + "#EndDateParse#";

                q.Criteria.Add(cNotEnded);

                q.Members.Add("*");

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

                foreach (Snipe snipe in endingSnipeList)
                {
                    Query qBuf = new Query();

                    qBuf.QueryName = "CheckCategoryYounger";

                    Criterion critere = new Criterion();
                    critere.Operator = CriteriaOperator.Equal;
                    critere.PropertyName = "SnipeID";
                    critere.Value = snipe.SnipeID;

                    qBuf.Criteria.Add(critere);

                    qBuf.Members.Add("*");

                    if (SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(qBuf).Count == 0)
                    {
                        MyThreadHandle threadHandle = new MyThreadHandle(snipe);
                        Thread myThread = new Thread(new ThreadStart(threadHandle.PlaceBids));

                        myThread.Start();
                    }
                }

                #endregion

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

                AllSnipeList = SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(qAll);

                foreach (Snipe snipe in AllSnipeList)
                {
                    snipe.SnipeInProgress = true;
                    SL_Scheduler.myDataConnection.Save<Snipe>((object)snipe, snipe);
                }

                foreach (Snipe snipe in AllSnipeList)
                {
                    Query qBuf = new Query();

                    qBuf.QueryName = "CheckCategoryYounger";

                    Criterion critere = new Criterion();
                    critere.Operator = CriteriaOperator.Equal;
                    critere.PropertyName = "SnipeID";
                    critere.Value = snipe.SnipeID;

                    qBuf.Criteria.Add(critere);

                    qBuf.Members.Add("*");

                    if (SL_Scheduler.myDataConnection.GetByCriteria<Snipe>(qBuf).Count == 0)
                    {
                        MyThreadHandle threadHandle = new MyThreadHandle(snipe);
                        threadHandle.PlaceBids();
                    }
                }
            }
            catch (ControlObjectException ex)
            {
                foreach (UserMessage error in ex.ErrorList)
                    Logger.CreateLog("Error__Timer_BidOptimizer_RefreshSnipes_" + error.MessageCode.ToString() + error.Severity.ToString(), null, ex, EnumLogLevel.ERROR);
            }
            catch (Exception ex)
            {
                Logger.CreateLog("Error__Timer_BidOptimizer_RefreshSnipes", null, ex, EnumLogLevel.ERROR);
            }

            return DateTime.Now.ToString();
        }