// GET: BidHistories/Create public IActionResult Create(int?ItemId, int?AuctionId) { if (ItemId != null && ItemId > 0 && AuctionId != null && AuctionId > 0) { var media = _context.Media.Where(x => x.ItemId == ItemId).ToList(); var item = _context.Items.Where(x => x.ItemId == ItemId).SingleOrDefault(); BidCreateViewModel tmp = new BidCreateViewModel { ItemId = (int)ItemId, AuctionId = (int)AuctionId, Media = media, Item = item, ItemCurrentBid = GetMaxBidByItemId(item.ItemId), ItemMinimumBid = GetMinimumBidByItemId(item.ItemId) }; return(View(tmp)); } else { return(RedirectToAction("Index")); } }
public async Task <IActionResult> Create([Bind("BidDate,BidAmount,ItemId,AuctionId,ItemCurrentBid,ItemMinimumBid,Bidder_FirstName,Bidder_LastName,Bidder_PhoneNumber,Bidder_EmailAddress")] BidCreateViewModel bid) { //Retrieve this stuff just incase of validation errors: var media = _context.Media.Where(x => x.ItemId == bid.ItemId).ToList(); var item = _context.Items.Where(x => x.ItemId == bid.ItemId).SingleOrDefault(); bool HasErrors = false; double ItemMinimumBid = GetMinimumBidByItemId(bid.ItemId); if (bid.BidAmount < ItemMinimumBid) { ModelState.AddModelError("BidAmount", "Your bid must be greater than or equal to the minimum bid."); //return RedirectToAction("Create", new { ItemId = bid.ItemId, AuctionId = bid.AuctionId }); //Re-retrieve some values to prevent null exceptions bid.Media = media; bid.Item = item; HasErrors = true; } //Manual validations... Please don't look too close at the laziness. if (String.IsNullOrWhiteSpace(bid.Bidder_FirstName)) { ModelState.AddModelError("Bidder_FirstName", "Please enter your first name."); HasErrors = true; } if (string.IsNullOrWhiteSpace(bid.Bidder_LastName)) { ModelState.AddModelError("Bidder_LastName", "Please enter your last name."); HasErrors = true; } if (String.IsNullOrWhiteSpace(bid.Bidder_PhoneNumber)) { ModelState.AddModelError("Bidder_PhoneNumber", "Please a valid phone number."); HasErrors = true; } if (String.IsNullOrWhiteSpace(bid.Bidder_EmailAddress)) { ModelState.AddModelError("Bidder_EmailAddress", "Please a valid email address."); HasErrors = true; } if (HasErrors) { return(View(bid)); } Bidder newBidder = new Bidder { FirstName = bid.Bidder_FirstName, LastName = bid.Bidder_LastName, PhoneNumber = bid.Bidder_PhoneNumber, EmailAddress = bid.Bidder_EmailAddress, IsRegistered = false, Password = "******", Security = "derpaderp" }; _context.Bidders.Add(newBidder); await _context.SaveChangesAsync(); BidHistory newBid = new BidHistory { //Auction = _context.Auctions.SingleOrDefault(a => a.AuctionId == 1), //Temp debug workaround because AuctionId keeps passing in as 0. //Auction = _context.Auctions.SingleOrDefault(a => a.AuctionID == bid.AuctionId), BidDate = bid.BidDate, BidAmount = bid.BidAmount, ItemId = bid.ItemId, BidderId = newBidder.BidderID //Bidder = _context.Bidders.FirstOrDefault(b => b.FirstName == bid.Bidder_FirstName && b.LastName == bid.Bidder_LastName) }; var AddedBid = _context.BidHistory.Add(newBid); int SavedValue = await _context.SaveChangesAsync(); return(RedirectToAction("Index", "BidHistories", new { id = bid.AuctionId })); }