Ejemplo n.º 1
0
        // GET: Listings/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var listing = await AuctionContext.Listings
                          .Include(l => l.Auction)
                          .Include(l => l.Item)
                          .ThenInclude(itemMedia0 => itemMedia0.ItemMedia)
                          .SingleOrDefaultAsync(m => m.Id == id);

            if (listing == null)
            {
                return(NotFound());
            }
            var sponsor = AuctionContext.Sponsors.SingleOrDefaultAsync(sponsor0 => sponsor0.Id == listing.Item.SponsorId).Result;


            var myView = new BidHistoryViewModel
            {
                ListingId  = listing.Id,
                MyListing  = listing,
                CurrentBid = listing.MinimumBid,
                Increment  = listing.Increment,
                MinimumBid = listing.MinimumBid + listing.Increment,
                MySponsor  = sponsor.Name,
            };

            return(View(myView));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Details(int id, [Bind("FirstName,LastName,Email,Phone,Amount")] BidDetailsViewModel myBidDetails)
        {
            var listing = await AuctionContext.Listings
                          .Include(l => l.Auction)
                          .Include(listing0 => listing0.Item)
                          .ThenInclude(itemMedia0 => itemMedia0.ItemMedia)
                          .Include(listing0 => listing0.Item)
                          .ThenInclude(itemSponsor => itemSponsor.Sponsor)
                          .SingleOrDefaultAsync(m => m.Id == id);

            var minBid = listing.MinimumBid + listing.Increment;

            var mybidhistory = new BidHistoryViewModel
            {
                ListingId    = listing.Id,
                MyListing    = listing,
                Increment    = listing.Increment,
                MySponsor    = listing.Item.Sponsor.Name,
                CurrentBid   = listing.MinimumBid,
                MinimumBid   = minBid,
                MyBidDetails = myBidDetails
            };

            if (minBid > myBidDetails.Amount)
            {
                ModelState.AddModelError("Bid", "New bid must be higher than or equal to the minimum bid");
            }

            if (myBidDetails.Amount % listing.Increment != 0)
            {
                ModelState.AddModelError("Bid", "Bid must be in specified increment");
            }

            if (ModelState.IsValid)
            {
                User myuser = new User();

                var myUsers = await AuctionContext.Users.ToListAsync();

                foreach (var person in myUsers)
                {
                    if (person.Email.Equals(myBidDetails.Email))
                    {
                        myuser = person;
                    }
                    else
                    {
                        myuser.Email = null;
                    }
                }

                if (myuser.Email == null)
                {
                    myBidDetails.Phone = myBidDetails.Phone.Replace("-", "");
                    myuser             = new User
                    {
                        FirstName = myBidDetails.FirstName,
                        LastName  = myBidDetails.LastName,
                        Email     = myBidDetails.Email,
                        Phone     = myBidDetails.Phone,
                        RoleId    = RoleId.User
                    };

                    AuctionContext.Add(myuser);
                    await AuctionContext.SaveChangesAsync();

                    var user = await AuctionContext.Users.FirstOrDefaultAsync(m => m.Email == myuser.Email);

                    myuser = user;
                }

                var mybid = new BidHistory
                {
                    Listing   = listing,
                    ListingId = id,
                    UserId    = myuser.UserId,
                    User      = myuser,
                    Amount    = myBidDetails.Amount,
                    Date      = DateTime.Today
                };

                listing.MinimumBid = mybid.Amount;

                AuctionContext.Add(mybid);
                await AuctionContext.SaveChangesAsync();

                AuctionContext.Update(listing);
                await AuctionContext.SaveChangesAsync();

                var bidHistory = await AuctionContext.BidHistories
                                 .SingleOrDefaultAsync(m => m.User.UserId == mybid.User.UserId && m.Listing.Id == mybid.Listing.Id && m.Amount == mybid.Amount);

                TempData["SuccessMessage"] = $"Successfully placed bid on {listing.Item.Name}.";

                return(RedirectToAction(nameof(BidHistoriesController.Details), new RouteValueDictionary(new { controller = "BidHistories", action = "Details", id = bidHistory.Id })));
            }

            return(View(mybidhistory));
        }