public async Task <IActionResult> GetAuction(int auctionId) { Auction auction = await this._context.auctions .Where(a => a.id == auctionId) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(u => u.user) .FirstOrDefaultAsync(); AuctionView data = await this.GetImageView(auction.imageId); if (auction.state != Auction.AuctionState.OPEN) { data.open = false; } else { TimeSpan diff = auction.closingDateTime - DateTime.Now; data.remainingTime = this.GetRemainingTime(diff); data.open = true; } auction.biddingList = auction.biddingList.OrderByDescending(b => b.bidTime).ToList(); data.auction = auction; return(PartialView("Auction", data)); }
public IActionResult AddListing(AuctionView model) { if (HttpContext.Session.GetInt32("id") == null) { return(RedirectToAction("Index", "Home")); } int user_id = (int)HttpContext.Session.GetInt32("id"); if (ModelState.IsValid) { DateTime date = DateTime.Now; AuctionItem item = new AuctionItem { product_name = model.product_name, description = model.description, starting_bid = model.starting_bid, end_date = model.end_date, created_date = date, }; auctionFactory.AddListing(user_id, item); auctionFactory.AddBid(user_id, model.starting_bid); return(RedirectToAction("Index")); } return(View(model)); }
//Get Image data to be shown on website public async Task <AuctionView> GetImageView(int index) { IList <Image> images = await this._context.images.ToListAsync(); Image image = images.Where(i => i.id == index).FirstOrDefault(); AuctionView model = new AuctionView() { base64Data = Convert.ToBase64String(image.data) }; return(model); }
public async Task <IActionResult> Index() { var auctionPortalContext = this._context.auctions; IList <Auction> list = await auctionPortalContext .Where(a => a.state == Auction.AuctionState.OPEN) .OrderByDescending(a => a.creationDateTime) .Take(12) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(a => a.user) .ToListAsync(); IList <AuctionView> auctionList = new List <AuctionView>(); foreach (var el in list) { AuctionView data = await this.GetImageView(el.imageId); if (DateTime.Compare(el.closingDateTime, DateTime.Now) < 0 && el.state == Auction.AuctionState.OPEN) { await this.closeAuction(el.id); } else { TimeSpan diff = el.closingDateTime - DateTime.Now; data.remainingTime = this.GetRemainingTime(diff); } el.biddingList = el.biddingList.OrderByDescending(b => b.bidTime).ToList(); data.auction = el; data.open = true; auctionList.Add(data); } SearchModel searchModel = new SearchModel() { auctionList = auctionList, numPages = Decimal.ToInt32(Math.Ceiling(Convert.ToDecimal(auctionPortalContext.Where(a => a.state == Auction.AuctionState.OPEN).Count() / 12.0))), currPage = 1 }; return(View(searchModel)); }
public async Task <IActionResult> Details(int?auctionId) { if (auctionId == null) { return(NotFound()); } var auction = await _context.auctions .Where(m => m.id == auctionId) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(u => u.user) .FirstOrDefaultAsync(); if (auction == null) { return(NotFound()); } auction.biddingList = auction.biddingList.OrderByDescending(b => b.bidTime).ToList(); AuctionView auctionView = await this.GetImageView(auction.imageId); if (DateTime.Compare(auction.closingDateTime, DateTime.Now) < 0 && auction.state == Auction.AuctionState.OPEN) { await this.closeAuction(auction.id); } else { TimeSpan diff = auction.closingDateTime - DateTime.Now; auctionView.remainingTime = this.GetRemainingTime(diff); } if (auction.state == Auction.AuctionState.OPEN) { auctionView.open = true; } else { auctionView.open = false; } auctionView.auction = auction; return(View(auctionView)); }
//Show me all auctions I created public async Task <IActionResult> MyAuctions() { User user = await this.userManager.GetUserAsync(base.User); if (user == null) { return(RedirectToAction(nameof(UserController.Login), "User")); } IList <Auction> auctions = await this._context.auctions.Where(u => u.userId == user.Id) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(u => u.user) .OrderByDescending(a => a.creationDateTime) .ToListAsync(); IList <AuctionView> auctionViews = new List <AuctionView>(); foreach (var item in auctions) { AuctionView auctionView = await GetImageView(item.id); if (DateTime.Compare(item.closingDateTime, DateTime.Now) < 0 && item.state == Auction.AuctionState.OPEN) { await this.closeAuction(item.id); auctionView.open = false; } else { TimeSpan diff = item.closingDateTime - DateTime.Now; auctionView.remainingTime = this.GetRemainingTime(diff); auctionView.open = true; auctionView.auction = item; } auctionViews.Add(auctionView); } return(View(auctionViews)); }
//Show me details of my auction public async Task <IActionResult> MyAuctionDetails(int?auctionId) { if (auctionId == null) { return(NotFound()); } var auction = await _context.auctions.FirstOrDefaultAsync(m => m.id == auctionId); if (auction == null) { return(NotFound()); } AuctionView auctionView = await this.GetImageView(auction.imageId); auctionView.auction = auction; return(View(auctionView)); }
// GET: Auction/AdminDetails/5 //Different Views for Admin and regular User public async Task <IActionResult> AdminDetails(int?id) { if (id == null) { return(NotFound()); } var auction = await _context.auctions.Include(a => a.biddingList).ThenInclude(u => u.user).FirstOrDefaultAsync(m => m.id == id); if (auction == null) { return(NotFound()); } AuctionView auctionView = await this.GetImageView(auction.imageId); auctionView.auction = auction; return(View(auctionView)); }
private void AuctionFormShow(int crudMode, OrderEF selectedOrder = null) { AppJournal.Write("Auctions List", "Open auction - " + (crudMode == 1 ? "new" : SelectedAuction.number), true); if (crudMode == 1) { SelectedAuction = null; } var auctionViewModel = new AuctionViewModel(SelectedAuction, selectedOrder, (MarketPlaceEnum)SelectedSite.id) { Description = "Аукцион № " + (crudMode == 2 ? SelectedAuction.number : ""), DockLocation = altaik.baseapp.helper.PanelDockLocationEnum.DetailsDocument }; var auctionView = new AuctionView(); auctionViewModel.View = auctionView; Workspace.This.Panels.Add(auctionViewModel); Workspace.This.ActiveDocument = auctionViewModel; }
public IActionResult CreateAuction(AuctionView model) { if (ActiveUser == null) { return(RedirectToAction("Index", "Home")); } if (model.end_date == null) { ModelState.AddModelError("end_date", "End Date is required."); } else if (model.end_date < DateTime.Now) { ModelState.AddModelError("end_date", "End Date must be in the future."); } if (model.starting_bid == 0) { ModelState.AddModelError("starting_bid ", "Please specify your starting bid."); } if (ModelState.IsValid) { User user = _dbContext.users.Where(n => n.user_id == HttpContext.Session.GetInt32("UserId")).SingleOrDefault(); AuctionEvent newAuction = new AuctionEvent { product_name = model.product_name, description = model.description, starting_bid = model.starting_bid, end_date = model.end_date, user_id = user.user_id, highest_bid = model.starting_bid }; _dbContext.auctions.Add(newAuction); _dbContext.SaveChanges(); HttpContext.Session.SetInt32("ItemId", newAuction.auction_id); return(Redirect("dashboard")); } return(View("CreateAuction")); }
public async Task <IActionResult> Search(SearchModel model) { IQueryable <Auction> query = this._context.auctions; IList <Auction> auctions; double numAuctions; if (!model.wonAuctions) { if (model.name != null) { query = query.Where(auction => auction.name.ToLower().Contains(model.name)); } if (model.minPrice != null) { query = query.Where(auction => auction.startingPrice + auction.accession >= int.Parse(model.minPrice)); } if (model.maxPrice != null) { query = query.Where(auction => auction.startingPrice + auction.accession <= int.Parse(model.maxPrice)); } if (model.state != null) { switch (model.state) { case "1": query = query.Where(auction => auction.state == Auction.AuctionState.DRAFT); break; case "2": query = query.Where(auction => auction.state == Auction.AuctionState.READY); break; case "3": query = query.Where(auction => auction.state == Auction.AuctionState.OPEN); break; case "4": query = query.Where(auction => auction.state == Auction.AuctionState.SOLD); break; case "5": query = query.Where(auction => auction.state == Auction.AuctionState.EXPIRED); break; case "6": query = query.Where(auction => auction.state == Auction.AuctionState.DELETED); break; } } numAuctions = query.Count(); auctions = await query .OrderByDescending(auction => auction.openingDateTime) .Skip((model.currPage - 1) * 12) .Take(12) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(u => u.user) .ToListAsync(); } else { User loggedInUser = await this.userManager.GetUserAsync(base.User); IList <Auction> auctionList = this._context.auctions .Where(a => a.state == Auction.AuctionState.SOLD) .Include(u => u.user) .Include(a => a.biddingList) .ThenInclude(u => u.user) .ToList(); auctions = new List <Auction>(); foreach (var item in auctionList) { if (item.biddingList.Last().userId == loggedInUser.Id) { auctions.Add(item); } } numAuctions = auctions.Count; } IList <AuctionView> auctionViews = new List <AuctionView>(); foreach (Auction a in auctions) { AuctionView av = await this.GetImageView(a.imageId); if (DateTime.Compare(a.closingDateTime, DateTime.Now) < 0 && a.state == Auction.AuctionState.OPEN) { await this.closeAuction(a.id); } else { TimeSpan diff = a.closingDateTime - DateTime.Now; av.remainingTime = this.GetRemainingTime(diff); } if (a.state == Auction.AuctionState.OPEN) { av.open = true; } else { av.open = false; } a.biddingList = a.biddingList.OrderByDescending(b => b.bidTime).ToList(); av.auction = a; auctionViews.Add(av); } SearchModel searchModel = new SearchModel() { auctionList = auctionViews, numPages = Decimal.ToInt32(Math.Ceiling(Convert.ToDecimal(numAuctions / 12.0))), currPage = model.currPage }; if (model.second == true) { return(PartialView("Pagination", searchModel)); } return(PartialView("AuctionList", searchModel)); }