public async Task <IActionResult> BuyNow(int Id)
        {
            var auction = _context.AuctionProducts.Include(x => x.UserAuctionProducts).FirstOrDefault(x => x.Id == Id);
            var user    = await _userManager.FindByNameAsync(User.Identity.Name);

            var isFavorite = auction.UserAuctionProducts.Where(x => x.IsFavorit == true).FirstOrDefault(x => x.AppUserId == user.Id);

            UserAuctionProduct userAuction = new UserAuctionProduct
            {
                AuctionProductId = Id,
                IsWinner         = true,
                Bid       = 0,
                AddDate   = DateTime.Now,
                SoldPrice = auction.BuyNowPrice,
                AppUserId = user.Id,
            };

            _context.UserAuctionProducts.Add(userAuction);
            auction.Sold = true;
            _context.SaveChanges();

            return(NoContent());
        }
Example #2
0
        public async static Task <bool> AddFavorite(int Id, ApplicationDbContext _context, AppUser user)
        {
            var auction = _context.AuctionProducts.Include(x => x.UserAuctionProducts).FirstOrDefault(x => x.Id == Id);

            var isFavorite = auction.UserAuctionProducts.Where(x => x.IsFavorit == true).FirstOrDefault(x => x.AppUserId == user.Id);

            if (auction.UserAuctionProducts.Any(x => x.IsFavorit == false))
            {
                auction.UserAuctionProducts.Where(x => x.IsFavorit == false)
                .OrderBy(x => x.Bid)
                .FirstOrDefault().IsFavorit = true;

                _context.SaveChanges();
            }
            else if (isFavorite == null)
            {
                UserAuctionProduct userAuction = new UserAuctionProduct
                {
                    AppUserId        = user.Id,
                    Bid              = 0,
                    AuctionProductId = Id,
                    IsFavorit        = true,
                    AddDate          = DateTime.Now
                };

                _context.UserAuctionProducts.Add(userAuction);
                await _context.SaveChangesAsync();
            }
            else
            {
                isFavorite.IsFavorit = false;
                await _context.SaveChangesAsync();
            }

            return(true);
        }
        public async Task <IActionResult> Index(int Id, AuctionDetailViewModel viewModel)
        {
            if (Id == 0)
            {
                return(NotFound());
            }
            if (_context.AuctionProducts.Where(x => x.EndDate > DateTime.Now || x.Sold == true).FirstOrDefault(x => x.Id == Id) == null)
            {
                return(NotFound());
            }
            if (_context.AuctionProducts.FirstOrDefault(x => x.Id != Id) == null)
            {
                return(NotFound());
            }
            AuctionDetailViewModel model = new AuctionDetailViewModel
            {
                AuctionProduct = _context.AuctionProducts.Where(x => x.EndDate > DateTime.Now)
                                 .Include(x => x.AuctionProductGalleries)
                                 .Include(x => x.UserAuctionProducts)
                                 .ThenInclude(x => x.AppUser)
                                 .FirstOrDefault(x => x.Id == Id),
                UserAuctionProducts = _context.UserAuctionProducts.Where(x => x.AuctionProductId == Id).ToList(),
                Faq = _context.Faqs.ToList()
            };

            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            ViewBag.User = user;
            if (viewModel.Bid != 0)
            {
                var auction = _context.AuctionProducts.Include(x => x.UserAuctionProducts)
                              .FirstOrDefault(x => x.Id == Id);

                if (viewModel.Bid < auction.StartPrice && viewModel.Bid >= 0)
                {
                    ModelState.AddModelError("", "Header than start price" + " - $" + auction.StartPrice);
                    return(View(model));
                }

                var maxBid = auction.UserAuctionProducts.OrderByDescending(x => x.Bid).FirstOrDefault();

                if (maxBid != null)
                {
                    if (viewModel.Bid <= maxBid.Bid)
                    {
                        ModelState.AddModelError("", "Header than current price" + " - $" + maxBid.Bid);
                        return(View(model));
                    }
                }

                if (auction.UserAuctionProducts.Count == 0 || auction.UserAuctionProducts.Where(x => x.AppUserId == user.Id).FirstOrDefault() == null)
                {
                    UserAuctionProduct userAuction = new UserAuctionProduct
                    {
                        AppUserId        = user.Id,
                        AuctionProductId = Id,
                        Bid     = viewModel.Bid,
                        AddDate = DateTime.Now
                    };

                    _context.UserAuctionProducts.Add(userAuction);
                    _context.SaveChanges();
                }
                else if (auction.UserAuctionProducts.Where(x => x.AppUserId == user.Id).FirstOrDefault() != null)
                {
                    auction.UserAuctionProducts.Where(x => x.AppUserId == user.Id).FirstOrDefault().Bid     = viewModel.Bid;
                    auction.UserAuctionProducts.Where(x => x.AppUserId == user.Id).FirstOrDefault().AddDate = DateTime.Now;

                    _context.SaveChanges();
                }
            }

            return(View(model));
        }