Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Int32 ID      = Convert.ToInt32(Request.QueryString["ID"]);
        Int32 addTime = Convert.ToInt32(Request.QueryString["timeAdd"]);

        //更新竞投时间
        try
        {
            Auction auction = Auction.FindByID(ID);
            if (auction.AuctionSatus != 3 && auction.EndTime <= DateTime.Now && auction.MinPrice <= auction.BiddingPriceNow)
            {
                auction.AuctionSatus = 3;
            }
            auction.EndTime          = auction.EndTime.AddSeconds(addTime);
            auction.BiddingPriceNow += auction.EveryAddPrice;
            auction.WinningBidder    = member.Current.ID;
            auction.UpdateTime       = DateTime.Now;
            auction.BidCount        += 1;
            auction.Update();
            //花费积分 竞投
            member.Current.point = member.Current.point - auction.EveryNeedPoint;
            member.Current.Update();
            AuctionHistory history = new AuctionHistory();
            history.MemberID  = member.Current.ID;
            history.AuctionID = auction.ID;
            history.BidDate   = DateTime.Now;
            history.BidEyuan  = auction.BiddingPriceNow;
            history.Insert();
            PointHistory pointhistory = new PointHistory();
            pointhistory.UseTime           = DateTime.Now;
            pointhistory.MemberId          = member.Current.ID;
            pointhistory.Point             = -1 * auction.EveryNeedPoint;
            pointhistory.ItemName          = "参与竞投";
            pointhistory.CurrentPointCount = member.Current.point;
            pointhistory.Save();
            msgStr = "success";
        }
        catch (Exception ex)
        {
            msgStr = "fail";
            HmTrace.WriteException(ex.Message);
            //Response.Write(ex.Message);
        }
        Response.Write(msgStr);
    }
Пример #2
0
        protected void SubmitMultiBids(object sender, EventArgs e)
        {
            using (var ds = new ASEntities())
            {
                var account   = ds.Users.First(x => x.Username == Context.User.Identity.Name);
                var accountID = account.UserID;
                var godaddy   = ds.GoDaddyAccount.FirstOrDefault(x => x.UserID == accountID);
                var bidvalue  = fullApplyvalue.Value;
                if (godaddy != null)
                {
                    var bids =
                        ds.AuctionSearch.Where(
                            x =>
                            x.AccountID == godaddy.AccountID);

                    foreach (GridViewRow auc in LunchboxGridView4.Rows)
                    {
                        var myminbid   = (auc.FindControl("bidvalue") as TextBox).Text;
                        var auctionRef = auc.Cells[1].Text;

                        var bid =
                            bids.First(
                                x =>
                                x.AuctionRef == auctionRef);

                        var enddate    = new GoDaddyAuctions().GetEndDate(bid.AuctionRef);
                        var linkedRuid = Guid.NewGuid();
                        var auction    = new Auctions
                        {
                            AuctionID       = linkedRuid,
                            AuctionRef      = bid.AuctionRef,
                            DomainName      = bid.DomainName,
                            BidCount        = bid.BidCount,
                            Traffic         = bid.Traffic,
                            Valuation       = bid.Valuation,
                            Price           = bid.Price,
                            MinBid          = bid.MinBid,
                            MinOffer        = bid.MinOffer,
                            BuyItNow        = bid.BuyItNow,
                            EndDate         = enddate,
                            EstimateEndDate = bid.EstimateEndDate,
                            AccountID       = bid.AccountID,
                            Status          = bid.Status,
                            MyBid           = string.IsNullOrEmpty(myminbid) ? int.Parse(bidvalue) : TryParse_INT(myminbid, int.Parse(bidvalue))
                        };
                        var toRemove =
                            ds.Auctions.FirstOrDefault(
                                x => x.AccountID == godaddy.AccountID && x.AuctionRef == bid.AuctionRef);
                        if (toRemove != null)
                        {
                            ds.Auctions.Remove(toRemove);
                        }
                        ds.Auctions.AddOrUpdate(auction);
                        ds.SaveChanges();

                        var item = new AuctionHistory
                        {
                            HistoryID   = Guid.NewGuid(),
                            Text        = "Auction Added",
                            CreatedDate = DateTime.Now,
                            AuctionLink = auction.AuctionID
                        };
                        ds.AuctionHistory.Add(item);

                        var winalert = new Alerts
                        {
                            AuctionID   = auction.AuctionID,
                            Custom      = false,
                            Description = "WIN ALERT",
                            TriggerTime = auction.EndDate.AddMinutes(5)
                        };
                        ds.Alerts.Add(winalert);

                        var bidalert = new Alerts
                        {
                            AlertID     = Guid.NewGuid(),
                            AuctionID   = auction.AuctionID,
                            Custom      = false,
                            Description = "12 Hour Alert",
                            TriggerTime = auction.EndDate.AddHours(-12)
                        };
                        ds.Alerts.Add(bidalert);

                        var bidalert2 = new Alerts
                        {
                            AlertID     = Guid.NewGuid(),
                            AuctionID   = auction.AuctionID,
                            Custom      = false,
                            Description = "1 Hour Alert",
                            TriggerTime = auction.EndDate.AddHours(-1)
                        };
                        ds.Alerts.Add(bidalert2);
                        ds.SaveChanges();
                    }
                }

                ds.SaveChanges();
            }
            const string script = "window.location='" + "Default.aspx?redirect=mybids" + "';";

            ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
            //Response.Redirect("Default.aspx#mybids", true);
        }
Пример #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Title        = @"Auction Sniper WEB";
            Welcome.Text = @"Hello, " + Context.User.Identity.Name + @"    ";
            if (IsPostBack)
            {
                SaveSearchSettings();
                SetSearchValues();
            }
            SetSearchValues();
            //FixHiddenValues();

            if (!IsPostBack)
            {
                LoadSavedSearchs();
                SetupAdv();
                if (Request.QueryString["redirect"] != null)
                {
                    Response.Redirect("Default.aspx#" + Request.QueryString["redirect"], true);
                }

                if (Request.QueryString["bookId"] != null && Request.QueryString["bidvalue"] != null)
                {
                    using (var ds = new ASEntities())
                    {
                        var biddref = Request.QueryString["bookId"];
                        var mybid   = Request.QueryString["bidvalue"];
                        if (GdAccount != null)
                        {
                            var bid =
                                ds.AuctionSearch.First(
                                    x =>
                                    x.AccountID == GdAccount.AccountID &&
                                    x.AuctionRef == biddref);

                            var enddate    = new GoDaddyAuctions().GetEndDate(biddref);
                            var linkedRuid = Guid.NewGuid();
                            var auction    = new Auctions
                            {
                                AuctionID       = linkedRuid,
                                AuctionRef      = bid.AuctionRef,
                                DomainName      = bid.DomainName,
                                BidCount        = bid.BidCount,
                                Traffic         = bid.Traffic,
                                Valuation       = bid.Valuation,
                                Price           = bid.Price,
                                MinBid          = bid.MinBid,
                                MinOffer        = bid.MinOffer,
                                BuyItNow        = bid.BuyItNow,
                                EndDate         = enddate,
                                EstimateEndDate = bid.EstimateEndDate,
                                AccountID       = bid.AccountID,
                                Status          = bid.Status,
                                MyBid           = int.Parse(mybid)
                            };
                            var toRemove = ds.Auctions.FirstOrDefault(x => x.AccountID == GdAccount.AccountID && x.AuctionRef == biddref);
                            if (toRemove != null)
                            {
                                ds.Auctions.Remove(toRemove);
                            }
                            ds.Auctions.AddOrUpdate(auction);
                            ds.SaveChanges();

                            var item = new AuctionHistory
                            {
                                HistoryID   = Guid.NewGuid(),
                                Text        = "Auction Added",
                                CreatedDate = DateTime.Now,
                                AuctionLink = auction.AuctionID
                            };
                            ds.AuctionHistory.Add(item);

                            var winalert = new Alerts
                            {
                                AuctionID   = auction.AuctionID,
                                Custom      = false,
                                Description = "WIN ALERT",
                                TriggerTime = auction.EndDate.AddMinutes(5)
                            };
                            ds.Alerts.Add(winalert);

                            var bidalert = new Alerts
                            {
                                AlertID     = Guid.NewGuid(),
                                AuctionID   = auction.AuctionID,
                                Custom      = false,
                                Description = "12 Hour Alert",
                                TriggerTime = auction.EndDate.AddHours(-12)
                            };
                            ds.Alerts.Add(bidalert);

                            var bidalert2 = new Alerts
                            {
                                AlertID     = Guid.NewGuid(),
                                AuctionID   = auction.AuctionID,
                                Custom      = false,
                                Description = "1 Hour Alert",
                                TriggerTime = auction.EndDate.AddHours(-1)
                            };
                            ds.Alerts.Add(bidalert2);
                            ds.SaveChanges();
                        }
                    }
                    Response.Redirect("Default.aspx#mybids");
                }
            }

            LoadAuctions();
        }
Пример #4
0
        /// <summary>核心工作方法。调度线程会定期调用该方法</summary>
        /// <param name="index">线程序号</param>
        /// <returns>是否立即开始下一步工作。某些任务能达到满负荷,线程可以不做等待</returns>
        public override Boolean Work(Int32 index)
        {
            if (index == 0)
            {
                lock (m_lock)
                {
                    if (m_virtualMembers != null)
                    {
                        var temp = m_virtualMembers;
                        m_virtualMembers = null;
                        temp.Clear();
                        temp = null;
                    }
                    HmTrace.WriteLine("开始载入虚拟会员信息");
                    m_virtualMembers = member.FindAll(member._.isVirtualMember.Equal(true), null, null, 0, 0);
                    m_canDoWork      = (m_virtualMembers != null && m_virtualMembers.Count > 0);
                    if (m_canDoWork)
                    {
                        HmTrace.WriteLine("载入{0}个虚拟会员", m_virtualMembers.Count);
                    }
                    else
                    {
                        HmTrace.WriteLine("载入虚拟会员信息失败!");
                    }
                }
            }
            else if (index == 1)
            {
                lock (m_lock)
                {
                    if (m_canDoWork)
                    {
                        var eop = Auction.Meta.Factory;
                        eop.BeginTransaction();

                        try
                        {
                            ////foreach (var item in m_virtualMembers)
                            //{
                            //  HmTrace.WriteLine("ID: {0} NickName: {1} Name: {2} Email: {3} WorkIndex: {4} MemberIndex: {5}",item.id, item.NickName, item.Name, item.Email, index, idx);
                            //}

                            var auction        = new Auction();;
                            var auctionHistory = new AuctionHistory();
                            //var auctionList = auction.Find("(DateDiff('s', Now(),CDate(end_time)) >= 0) or (bidding_eyuan < min_eyuan)");
                            var exp = Auction._.AuctionSatus != 3;
                            //exp &= Auction._.BiddingPriceNow < Auction._.MinPrice;
                            var auctionList = Auction.FindAll(exp, null, null, 0, 0);
                            if (auctionList != null && auctionList.Count > 0)
                            {
                                HmTrace.WriteLine("有{0}个竞投产品需要处理!", auctionList.Count);
                                member virtualMember = new member();
                                foreach (var item in auctionList)
                                {
                                    #region 竞投状态
                                    //竞投结束,赋值竞投状态,计算竞投成功者竞投次数
                                    // HmTrace.WriteWarn("EndTime:" + item.EndTime + "BiddingPriceNow:" + item.BiddingPriceNow + "MinPrice:" + item.MinPrice + "AuctionSatus:" + item.AuctionSatus);
                                    if (item.EndTime < DateTime.Now && item.BiddingPriceNow >= item.MinPrice && item.AuctionSatus != 3)
                                    {
                                        try
                                        {
                                            var list = AuctionHistory.FindAllByAuctionIDandMemberID(item.ID, item.WinningBidder);
                                            if (list != null)
                                            {
                                                item.WinnerBidCount = list.Count;
                                                item.AuctionSatus   = 3;
                                                item.Save();
                                                HmTrace.WriteDebug(item.ProductName + "竞投已经结束");
                                            }
                                        }
                                        catch (Exception ex) { HmTrace.WriteDebug(ex.Message); }
                                    }
                                    //竞投结束,赋值竞投状态,计算竞投成功者竞投次数
                                    // HmTrace.WriteWarn("EndTime:" + item.EndTime + "BiddingPriceNow:" + item.BiddingPriceNow + "MinPrice:" + item.MinPrice + "AuctionSatus:" + item.AuctionSatus);
                                    if (item.StarTime <= DateTime.Now && item.EndTime > DateTime.Now && item.BiddingPriceNow < item.MinPrice && item.AuctionSatus == 1)
                                    {
                                        try
                                        {
                                            item.AuctionSatus = 2;
                                            item.Save();
                                            HmTrace.WriteDebug(item.ProductName + "竞投现在开始");
                                        }
                                        catch (Exception ex) { HmTrace.WriteDebug(ex.Message); }
                                    }
                                    #endregion
                                    ///随机取虚拟会员
                                    for (; ;)
                                    {
                                        Int32 idx = m_random.Next(0, m_virtualMembers.Count - 1);
                                        virtualMember = m_virtualMembers[idx];
                                        if (item.member != null)
                                        {
                                            ///此会员是否是中标者
                                            if (item.member.nickName != virtualMember.nickName)
                                            {
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }

                                    HmTrace.WriteLine("{0}参与竞投!", virtualMember.nickName);
                                    if (item.BiddingPriceNow < item.MinPrice)
                                    {
                                        HmTrace.WriteLine("开始竞投!");
                                        if (item.EndTime < DateTime.Now)
                                        {
                                            item.EndTime = DateTime.Now.AddSeconds(2);
                                        }
                                        Double seconds = (Double)DateTimeHelper.DateDiff(DateTime.Now, item.EndTime, DateTimeHelper.BackType.GetSeconds);
                                        //HmTrace.WriteLine("Index: {0} Intervals: {1} endtime: {2}", index, Intervals[index], item.end_time);
                                        var addtime = m_random.Next(0, 25);
                                        if (seconds > Intervals[index] + addtime)
                                        {
                                            HmTrace.WriteLine("竞投商品[编号:{0} 名称:{1} 开始时间:{2:yyyy-MM-dd HH:mm:ss} 竞投限期小时:{3}] 还差{4}秒钟才可以进行机器人竞投!",
                                                              item.ProductNo, item.ProductName, item.StarTime, 0, seconds);
                                        }
                                        else
                                        {
                                            var historyInfo = new AuctionHistory();
                                            historyInfo.AuctionID = item.ID;
                                            historyInfo.MemberID  = virtualMember.ID;
                                            historyInfo.BidEyuan  = item.BiddingPriceNow + item.EveryAddPrice;
                                            historyInfo.BidDate   = DateTime.Now;
                                            historyInfo.Save();

                                            var   addTimeInfo = item.TimeAddRange;
                                            Int32 addTimeMin;
                                            Int32 addTimeMax;
                                            Int32 addTimeValue;
                                            if (addTimeInfo.Contains("-"))
                                            {
                                                var     timeValues = addTimeInfo.Split('-');
                                                Boolean result     = Int32.TryParse(timeValues[0], out addTimeMin);
                                                if (!result)
                                                {
                                                    addTimeMin = 40;
                                                }
                                                result = Int32.TryParse(timeValues[1], out addTimeMax);
                                                if (!result)
                                                {
                                                    addTimeMax = 70;
                                                }
                                                addTimeValue = m_random.Next(addTimeMin, addTimeMax);
                                            }
                                            else
                                            {
                                                Boolean result = Int32.TryParse(addTimeInfo, out addTimeValue);
                                                if (!result)
                                                {
                                                    addTimeValue = 40;
                                                }
                                            }

                                            HmTrace.WriteLine("机器人自动竞价[商品ID:{0} 商品编号:{1} 商品名称:{2} 机器人ID:{3} 机器人账号{4} 竞价:{5}]!",
                                                              item.ID, item.ProductNo, item.ProductName, virtualMember.ID, virtualMember.nickName, historyInfo.BidEyuan);

                                            //String setValue = "[bidding_eyuan] = {0}, [bid_count] = {1}, [winning_bidder] = '{2}',[update_date] = #{3}#".FormatWith(
                                            //    historyInfo.bid_eyuan, item.bid_count + 1, virtualMember.NickName, DateTime.Now);
                                            //String sql = String.Format("UPDATE {0} SET {1} WHERE {2} = '{3}' ", "[db_e_auction]", setValue, "id", item.id.ToString());
                                            //HmTrace.WriteSQL(sql);
                                            //Database db = DatabaseFactory.CreateDatabase();
                                            //DbCommand command = db.GetSqlStringCommand(sql);
                                            //Boolean result = (db.ExecuteNonQuery(command) > 0);
                                            HmTrace.WriteLine("自动延迟竞价商品[ID:{0} 编号:{1} 名称:{2}]结束时间{3}秒。", item.ID, item.ProductNo, item.ProductName, addTimeValue);
                                            var endTime = item.EndTime;
                                            item.EndTime         = endTime.AddSeconds((Double)addTimeValue);
                                            item.BiddingPriceNow = historyInfo.BidEyuan;
                                            item.BidCount       += 1;
                                            item.WinningBidder   = virtualMember.ID;
                                            item.UpdateTime      = DateTime.Now;
                                            item.Update();
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            HmTrace.WriteException(ex);
                            eop.Rollback();
                        }
                        finally
                        {
                            eop.Commit();
                        }
                    }
                }
            }
            return(false);
        }
Пример #5
0
        public ActionResult Detail(BuyVM newmodel)
        {
            using (var ctx = new QLDGEntities())
            {
                var abc = ctx.AuctionHistories
                          .Where(a => a.ProID == newmodel.ProID).FirstOrDefault();

                if (abc != null)
                {
                    decimal highest = ctx.AuctionHistories
                                      .Where(a => a.ProID == newmodel.ProID)
                                      .OrderByDescending(a => a.PriceBid)
                                      .FirstOrDefault().PriceBid;



                    if (newmodel.money < highest)
                    {
                        // LẤY THÔNG TIN TITLE

                        int CatID = ctx.Products
                                    .Where(p => p.ProID == newmodel.ProID)
                                    .FirstOrDefault().CatID;

                        string curCat = ctx.Categories
                                        .Where(c => c.CatID == CatID)
                                        .FirstOrDefault().CatName;

                        ViewBag.Cat = curCat;


                        // TỰ ĐỘNG ĐẤU GIÁ

                        // Đấu giá mới
                        // Lấy id người đang giữ giá cao nhất
                        int PreID = ctx.AuctionHistories
                                    .Where(a => a.ProID == newmodel.ProID)
                                    .OrderByDescending(a => a.PriceBid)
                                    .FirstOrDefault().UserID;

                        // Lấy giá đặt của người dùng giữ giá
                        decimal PrePriceBid = ctx.AuctionHistories
                                              .Where(a => a.ProID == newmodel.ProID)
                                              .OrderByDescending(a => a.PriceBid)
                                              .FirstOrDefault().PriceBid;

                        // Tgian đặt giá của người giữ giá cao nhất
                        DateTime time = ctx.AuctionHistories
                                        .Where(a => a.ProID == newmodel.ProID)
                                        .OrderByDescending(a => a.PriceBid)
                                        .FirstOrDefault().AuctionTime;

                        // lấy bước giá sản phẩm
                        decimal step = ctx.Products
                                       .Where(a => a.ProID == newmodel.ProID)
                                       .FirstOrDefault().Step;

                        // Lưu đấu giá
                        // người đấu giá mới thấp hơn cao nhất
                        AuctionHistory bid = new AuctionHistory
                        {
                            ProID         = newmodel.ProID,
                            UserID        = newmodel.UserID,
                            PriceBid      = newmodel.money,
                            PriceCur      = newmodel.money,
                            AuctionTime   = newmodel.time,
                            AuctionStatus = true
                        };

                        ctx.AuctionHistories.Add(bid);


                        // tự động đấu giá cho người giữ giá
                        AuctionHistory bid2 = new AuctionHistory
                        {
                            ProID         = newmodel.ProID,
                            UserID        = PreID,
                            PriceCur      = newmodel.money + step,
                            PriceBid      = PrePriceBid,
                            AuctionTime   = time,
                            AuctionStatus = true
                        };


                        ctx.AuctionHistories.Add(bid2);
                        ctx.SaveChanges();

                        // THAY ĐỔI THÔNG TIN SẢN PHẨM

                        Product model = ctx.Products
                                        .Where(p => p.ProID == newmodel.ProID)
                                        .FirstOrDefault();

                        model.PriceCur = newmodel.money + model.Step;
                        ctx.SaveChanges();

                        // lấy sản phẩm cho view

                        var latestmodel = ctx.Products
                                          .Where(p => p.ProID == newmodel.ProID)
                                          .FirstOrDefault();

                        ViewBag.ErrorMsg = "Bạn đã đặt giá THÀNH CÔNG, NHƯNG giá bạn đặt chưa phải là giá cao nhất";

                        return(View(latestmodel));
                    }


                    else if (newmodel.money == highest)
                    {
                        // Lấy id người đang giữ giá cao nhất
                        int PreID = ctx.AuctionHistories
                                    .Where(a => a.ProID == newmodel.ProID)
                                    .OrderByDescending(a => a.PriceBid)
                                    .FirstOrDefault().UserID;

                        // Tgian đặt giá của người giữ giá cao nhất
                        DateTime time = ctx.AuctionHistories
                                        .Where(a => a.ProID == newmodel.ProID)
                                        .OrderByDescending(a => a.PriceBid)
                                        .FirstOrDefault().AuctionTime;

                        // TỰ ĐỘNG ĐẤU GIÁ

                        AuctionHistory bid = new AuctionHistory
                        {
                            ProID         = newmodel.ProID,
                            UserID        = newmodel.UserID,
                            PriceBid      = newmodel.money,
                            PriceCur      = newmodel.money,
                            AuctionTime   = newmodel.time,
                            AuctionStatus = true
                        };

                        ctx.AuctionHistories.Add(bid);

                        AuctionHistory bid2 = new AuctionHistory
                        {
                            ProID         = newmodel.ProID,
                            UserID        = PreID,
                            PriceBid      = newmodel.money,
                            PriceCur      = newmodel.money,
                            AuctionTime   = time,
                            AuctionStatus = true
                        };
                        ctx.AuctionHistories.Add(bid2);
                        ctx.SaveChanges();


                        // THAY ĐỔI THÔNG TIN SẢN PHẨM

                        Product model = ctx.Products
                                        .Where(p => p.ProID == newmodel.ProID)
                                        .FirstOrDefault();

                        model.PriceCur = model.PriceHighest;
                        ctx.SaveChanges();

                        // Lấy thông tin title

                        int CatID = ctx.Products
                                    .Where(p => p.ProID == newmodel.ProID)
                                    .FirstOrDefault().CatID;

                        string curCat = ctx.Categories
                                        .Where(c => c.CatID == CatID)
                                        .FirstOrDefault().CatName;

                        ViewBag.Cat = curCat;

                        // Lấy sản phẩm cho view

                        var latestmodel = ctx.Products
                                          .Where(p => p.ProID == newmodel.ProID)
                                          .FirstOrDefault();

                        ViewBag.ErrorMsg = "Bạn đã đặt giá THÀNH CÔNG, NHƯNG giá bạn đặt chưa phải là giá cao nhất";

                        return(View(latestmodel));
                    }


                    else
                    {
                        // lấy bước giá sản phẩm
                        decimal step = ctx.Products
                                       .Where(a => a.ProID == newmodel.ProID)
                                       .FirstOrDefault().Step;
                        // lấy giá hiện tại của sản phẩm
                        decimal cur = ctx.Products
                                      .Where(a => a.ProID == newmodel.ProID)
                                      .FirstOrDefault().PriceCur;

                        // LƯU ĐẤU GIÁ VÀO CSDL

                        AuctionHistory bid = new AuctionHistory
                        {
                            ProID         = newmodel.ProID,
                            UserID        = newmodel.UserID,
                            PriceBid      = newmodel.money,
                            PriceCur      = cur + step,
                            AuctionTime   = newmodel.time,
                            AuctionStatus = true
                        };

                        ctx.AuctionHistories.Add(bid);
                        ctx.SaveChanges();

                        // THAY ĐỔI THÔNG TIN SẢN PHẨM

                        Product model = ctx.Products
                                        .Where(p => p.ProID == newmodel.ProID)
                                        .FirstOrDefault();
                        model.PriceHighest = newmodel.money;
                        model.PriceCur     = model.PriceCur + model.Step;
                        model.Buyer        = newmodel.UserID;

                        ctx.SaveChanges();

                        // Lấy thông tin title

                        int CatID = ctx.Products
                                    .Where(p => p.ProID == newmodel.ProID)
                                    .FirstOrDefault().CatID;

                        string curCat = ctx.Categories
                                        .Where(c => c.CatID == CatID)
                                        .FirstOrDefault().CatName;

                        ViewBag.Cat = curCat;

                        //Lấy sản phẩm cho view

                        var latestmodel = ctx.Products
                                          .Where(p => p.ProID == newmodel.ProID)
                                          .FirstOrDefault();

                        ViewBag.SuccessMsg = "Bạn đã đặt giá thành công";

                        return(View(latestmodel));
                    }
                }
                else
                {
                    // lấy bước giá sản phẩm
                    decimal step = ctx.Products
                                   .Where(a => a.ProID == newmodel.ProID)
                                   .FirstOrDefault().Step;
                    // lấy giá hiện tại của sản phẩm
                    decimal cur = ctx.Products
                                  .Where(a => a.ProID == newmodel.ProID)
                                  .FirstOrDefault().PriceCur;


                    // LƯU ĐẤU GIÁ VÀO CSDL

                    AuctionHistory bid = new AuctionHistory
                    {
                        ProID         = newmodel.ProID,
                        UserID        = newmodel.UserID,
                        PriceBid      = newmodel.money,
                        PriceCur      = cur + step,
                        AuctionTime   = newmodel.time,
                        AuctionStatus = true
                    };

                    ctx.AuctionHistories.Add(bid);
                    ctx.SaveChanges();


                    // THAY ĐỔI THÔNG TIN SẢN PHẨM

                    Product model = ctx.Products
                                    .Where(p => p.ProID == newmodel.ProID)
                                    .FirstOrDefault();
                    model.PriceHighest = newmodel.money;
                    model.PriceCur     = model.PriceCur + model.Step;
                    model.Buyer        = newmodel.UserID;

                    ctx.SaveChanges();

                    // Lấy thông tin title

                    int CatID = ctx.Products
                                .Where(p => p.ProID == newmodel.ProID)
                                .FirstOrDefault().CatID;

                    string curCat = ctx.Categories
                                    .Where(c => c.CatID == CatID)
                                    .FirstOrDefault().CatName;

                    ViewBag.Cat = curCat;

                    //Lấy sản phẩm cho view

                    var latestmodel = ctx.Products
                                      .Where(p => p.ProID == newmodel.ProID)
                                      .FirstOrDefault();

                    ViewBag.SuccessMsg = "Bạn đã đặt giá thành công";
                    return(View(latestmodel));
                }
            }
        }