//AddItemToWatchList
 public void AddItemToWatchList(long user_id, long auction_id)
 {
     try
     {
         //BidWatch bw = GetBidWatch(user_id, auction_id, false);
         //if (bw != null) return;
         var bw = new BidWatchCurrent();
         dataContext.BidWatchCurrents.InsertOnSubmit(bw);
         bw.User_ID    = user_id;
         bw.Auction_ID = auction_id;
         SubmitChanges();
         CacheRepository.Put(new DataCacheObject(DataCacheType.ACTIVITY, DataCacheRegions.WATCHLISTS,
                                                 "GETBIDWATCH", new object[] { user_id, auction_id }, CachingExpirationTime.Days_01, bw));
     }
     catch (Exception ex)
     {
         Logger.LogException(String.Format("[user_id={0}, auction_id={1}]", user_id, auction_id), ex);
     }
 }
 //AddItemToWatchList
 public void AddItemToWatchList(long user_id, long auction_id)
 {
     try
     {
         //BidWatch bw = GetBidWatch(user_id, auction_id, false);
         //if (bw != null) return;
         var bw = new BidWatchCurrent();
         dataContext.BidWatchCurrents.InsertOnSubmit(bw);
         bw.User_ID = user_id;
         bw.Auction_ID = auction_id;
         SubmitChanges();
         CacheRepository.Put(new DataCacheObject(DataCacheType.ACTIVITY, DataCacheRegions.WATCHLISTS,
             "GETBIDWATCH", new object[] {user_id, auction_id}, CachingExpirationTime.Days_01, bw));
     }
     catch (Exception ex)
     {
         Logger.LogException(String.Format("[user_id={0}, auction_id={1}]", user_id, auction_id), ex);
     }
 }
 public BidWatchCurrent(BidWatchCurrent bwc)
 {
   Auction_ID = bwc.Auction_ID;
   ID = bwc.ID;
   User_ID = bwc.User_ID;
 }
 public BidWatchCurrent(BidWatchCurrent bwc)
 {
     Auction_ID = bwc.Auction_ID;
     ID         = bwc.ID;
     User_ID    = bwc.User_ID;
 }
        //AddWinnerToAuction
        public JsonExecuteResult AddWinnerToAuction(long auction_id, long user_id)
        {
            try
            {
                Auction auction = GetAuction(auction_id);
                if (auction.Status != (byte)Consts.AuctionStatus.Closed) throw new Exception("This lot is not closed.");
                if (auction.Event.CloseStep != 1) throw new Exception("You can't use this functionality to add the winner on this lot.");
                if (auction.Bids.Any()) throw new Exception("You can't add the winner for this lot, because this lot has already a winner");
                User user = dataContext.Users.SingleOrDefault(U => U.ID == user_id);
                if (user == null) throw new Exception("This user doesn't exists");
                if (user.UserStatus_ID != (byte)Consts.UserStatus.Active) throw new Exception("This user can't be a winner because his status is not active.");
                if (user.UserType_ID != (byte)Consts.UserTypes.Buyer && user.UserType_ID != (byte)Consts.UserTypes.SellerBuyer) throw new Exception("This user can't be a winner because his isn't a buyer.");

                Bid bid = new Bid();
                bid.Amount = bid.MaxBid = auction.Price;
                bid.Auction_ID = auction_id;
                bid.DateMade = auction.EndDate.AddMinutes(-1);
                bid.IP = Consts.UsersIPAddress;
                bid.IsProxy = false;
                bid.Quantity = auction.Quantity;
                bid.User_ID = user_id;
                dataContext.Bids.InsertOnSubmit(bid);

                BidCurrent bidcur = new BidCurrent();
                bidcur.Amount = bidcur.MaxBid = auction.Price;
                bidcur.Auction_ID = auction_id;
                bidcur.DateMade = auction.EndDate.AddMinutes(-1);
                bidcur.IP = Consts.UsersIPAddress;
                bidcur.IsProxy = false;
                bidcur.Quantity = auction.Quantity;
                bidcur.User_ID = user_id;
                bidcur.IsActive = true;
                dataContext.BidCurrents.InsertOnSubmit(bidcur);

                BidLog blog = new BidLog
                  {
                      Amount = bid.Amount,
                      Auction_ID = bid.Auction_ID,
                      DateMade = bid.DateMade,
                      IP = bid.IP,
                      IsProxy = bid.IsProxy,
                      IsProxyRaise = false,
                      MaxBid = bid.MaxBid,
                      Quantity = bid.Quantity,
                      User_ID = bid.User_ID
                  };
                dataContext.BidLogs.InsertOnSubmit(blog);

                BidLogCurrent blogcur = new BidLogCurrent
                  {
                      Amount = bid.Amount,
                      Auction_ID = bid.Auction_ID,
                      DateMade = bid.DateMade,
                      IP = bid.IP,
                      IsProxy = bid.IsProxy,
                      IsProxyRaise = false,
                      MaxBid = bid.MaxBid,
                      Quantity = bid.Quantity,
                      User_ID = bid.User_ID
                  };
                dataContext.BidLogCurrents.InsertOnSubmit(blogcur);

                BidWatchCurrent bw = new BidWatchCurrent { Auction_ID = auction_id, User_ID = user_id };
                dataContext.BidWatchCurrents.InsertOnSubmit(bw);

                EventRegistration er = dataContext.spSelect_EventRegistration(auction.Event_ID, user_id).SingleOrDefault();
                if (er == null)
                    dataContext.EventRegistrations.InsertOnSubmit(new EventRegistration { Event_ID = auction.Event_ID, User_ID = user_id });

                GeneralRepository.SubmitChanges(dataContext);

                UpdateAuctionBiddingResult(bid.Auction_ID, bid.User_ID, bid.Amount, bid.MaxBid);

                try
                {
                    System.Net.WebClient client = new System.Net.WebClient();
                    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                    client.OpenRead(Consts.CacheClearFrontendIP + Consts.FrontEndClearARPMethod + "/" + auction_id.ToString());
                }
                catch (Exception ex)
                {
                    Logger.LogException("[" + Consts.CacheClearFrontendIP + Consts.FrontEndClearARPMethod + "/" + auction_id.ToString() + "]", ex);
                }
            }
            catch (Exception ex)
            {
                return new JsonExecuteResult(JsonExecuteResultTypes.ERROR, ex.Message);
            }
            return new JsonExecuteResult(JsonExecuteResultTypes.SUCCESS);
        }