Exemplo n.º 1
0
        public ActionResult Index(string code)
        {
            var auctions = this.Session["Auctions"] as List <Auction>;

            if (auctions == null)
            {
                auctions = AuctionService.GetAllAuctions();
                this.Session["Auctions"] = auctions;
            }
            var auction = auctions.FirstOrDefault(a => a.Code == code);

            var items = this.Session[code] as List <Item>;

            if (items == null)
            {
                items = AuctionService.GetAuctionItems(code);
                this.Session[code] = items;
            }

            if (this.Session["RegistredInAuctions"] == null)
            {
                this.Session["RegistredInAuctions"] = new List <string>();
            }
            bool registered = ((List <string>) this.Session["RegistredInAuctions"]).Contains(auction.Code);
            var  model      = new AuctionDetailViewModel
            {
                Auction    = auction,
                Items      = items,
                Registred  = registered,
                ActiveItem = registered ? AuctionService.GetCurrentlyAuctionedItem(auction.Code) : null
            };

            return(this.View(model));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> EditAuctionInit(AuctionDetailViewModel auctionModel)
        {
            var result = await AuctionFacade.GetAuctionAsync(auctionModel.Id);

            var model = await InitializeAuctionDetailViewModel(result);

            return(View("AuctionEditView", model));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> CreateBid(AuctionDetailViewModel auctionModel)
        {
            var accountDto = await AccountFacade.GetAccountAccordingToEmailAsync(auctionModel.EmailOfBidAccount);

            var result = await AuctionFacade.BidOnAuctionAsync(auctionModel.Id, accountDto.Id, auctionModel.NewBidValue);

            return(await Details(auctionModel.Id));
        }
        public async Task <ActionResult> MakeBid(AuctionDetailViewModel model)
        {
            model.NewBid.AuctionId    = model.Auction.Id;
            model.NewBid.BuyerId      = (await UserFacade.GetUserAccordingToUsernameAsync(User.Identity.Name)).Id;
            model.NewBid.NewItemPrice = model.Auction.ActualPrice + model.NewBid.BidAmount;
            model.NewBid.Time         = DateTime.Now;
            await AuctionProcessFacade.MakeBidToAuction(model.NewBid);

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Details(Guid id)
        {
            var model = new AuctionDetailViewModel
            {
                Auction    = await AuctionProcessFacade.GetAuctionAsync(id),
                NewBid     = new BidDto(),
                Bids       = (await AuctionProcessFacade.GetBidsToAuctionAsync(id)).OrderBy(bid => bid.Time).ToList(),
                Comments   = (await UserInteractionFacade.GetCommentsAccordingToAuction(id)).OrderBy(com => com.Time).ToList(),
                NewComment = new CommentDto()
            };

            model.NewBid.BidAmount = model.Auction.MinimalBid;
            return(View("AuctionDetailView", model));
        }
Exemplo n.º 6
0
        public async Task <ActionResult> EditAuction(AuctionDetailViewModel auctionModel)
        {
            var auctionDto = await AuctionFacade.GetAuctionAsync(auctionModel.Id);

            auctionDto.CategoryId  = new Guid(auctionModel.CategoryId);
            auctionDto.IsOpened    = auctionModel.IsOpened;
            auctionDto.ClosingTime = auctionModel.ClosingTime;
            auctionDto.Description = auctionModel.Description;
            await AuctionFacade.EditAuctionAsync(auctionDto);

            auctionDto = await AuctionFacade.GetAuctionAsync(auctionModel.Id);

            auctionModel = await InitializeAuctionDetailViewModel(auctionDto);

            return(View("AuctionDetailView", auctionModel));
        }
        public async Task <ActionResult> Buyout(AuctionDetailViewModel model)
        {
            var auction = await AuctionProcessFacade.GetAuctionAsync(model.Auction.Id);

            var bid = new BidDto
            {
                AuctionId    = auction.Id,
                BuyerId      = (await UserFacade.GetUserAccordingToUsernameAsync(User.Identity.Name)).Id,
                BidAmount    = auction.BuyoutPrice - auction.ActualPrice,
                NewItemPrice = auction.BuyoutPrice,
                Time         = DateTime.Now
            };
            await AuctionProcessFacade.BuyoutAuction(auction, bid);

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Comment(AuctionDetailViewModel model)
        {
            try
            {
                model.NewComment.AuctionId = model.Auction.Id;
                model.NewComment.Username  = User.Identity.Name;
                model.NewComment.UserId    = (await UserFacade.GetUserAccordingToUsernameAsync(User.Identity.Name)).Id;
                model.NewComment.Time      = DateTime.Now;
                await UserInteractionFacade.CreateComment(model.NewComment);

                return(RedirectToAction("Details", new { id = model.Auction.Id }));
            }
            catch
            {
                return(RedirectToAction("Details", new { id = model.Auction.Id }));
            }
        }
        public ActionResult Details(int ID)
        {
            AuctionDetailViewModel model           = new AuctionDetailViewModel();
            AuctionsService        auctionsService = new AuctionsService();

            model.EntityID = (int)EntityEnums.Auction;

            model.Auction         = auctionsService.GetAuctionByID(ID);
            model.PageTitle       = "Auction Details:";
            model.PageDescription = model.Auction.Description.Substring(0, 10);
            model.BidsAmount      = model.Auction.ActualAmount + model.Auction.Bids.Sum(x => x.BidAmount);

            var latestBidder = model.Auction.Bids.OrderByDescending(x => x.Timestamp).FirstOrDefault();

            model.LatestBidder = latestBidder != null ? latestBidder.User : null;
            model.Comments     = SharedService.GetComments((int)EntityEnums.Auction, model.Auction.ID);

            return(View(model));
        }
Exemplo n.º 10
0
        private async Task <AuctionDetailViewModel> InitializeAuctionDetailViewModel(AuctionDTO auction)
        {
            var model = new AuctionDetailViewModel {
                Name = auction.Name
            };
            var result = await AccountFacade.GetAccountAccordingToIdAsync(auction.AccountId);

            model.Bids = new List <Pair <AccountAuctionRelationDTO, AccountDTO> >();
            var bidsList = (await AuctionFacade.GetAllBidsAccordingToAuction(auction.Id)).ToList().OrderBy(x => x.BidDateTime);

            foreach (var bid in bidsList)
            {
                model.Bids.Add(new Pair <AccountAuctionRelationDTO, AccountDTO>(bid, await AccountFacade.GetAccountAccordingToIdAsync(bid.AccountId)));
            }
            model.AccountFullName = result.FirstName + " " + result.LastName;
            model.Description     = auction.Description;
            model.ClosingTime     = auction.ClosingTime;
            var products = await ProductFacade.GetAllProductsInAuction(auction.Id);

            model.Products          = products.ToList();
            model.ActualPrice       = auction.ActualPrice;
            model.IsOpened          = auction.IsOpened;
            model.Id                = auction.Id;
            model.AuctionOwnerEmail = result.Email;
            model.CategoryId        = auction.CategoryId.ToString();
            var categories = await AuctionFacade.GetAllCategories();

            model.CategoriesSelectList = new List <SelectListItem>();
            foreach (var category in categories)
            {
                model.CategoriesSelectList.Add(new SelectListItem {
                    Text = category.Name, Value = category.Id.ToString()
                });
            }


            return(model);
        }
Exemplo n.º 11
0
        public async Task <ActionResult> DeleteAuction(AuctionDetailViewModel model)
        {
            await AuctionFacade.DeleteAuctionAsync(model.Id);

            return(RedirectToAction("Index", "Home"));
        }
        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));
        }