Ejemplo n.º 1
0
        public List <Auction> getSearchResult(SearchViewModel model)
        {
            var auctionsList = new List <Auction>();

            var db       = new auctiondbEntities();
            var auctions = db.Auctions.AsQueryable();

            if (model.Name != null)
            {
                auctions = auctions.Where(a => a.Name.Contains(model.Name));
            }
            if (model.MinPrice != null)
            {
                auctions = auctions.Where(a => a.PriceNow.Value > model.MinPrice);
            }
            if (model.MaxPrice != null)
            {
                auctions = auctions.Where(a => a.PriceNow.Value < model.MaxPrice);
            }
            if (model.MinDate != null)
            {
                auctions = auctions.Where(a => a.TimeCreate > model.MinDate);
            }
            if (model.MaxDate != null)
            {
                auctions = auctions.Where(a => a.TimeCreate < model.MaxDate);
            }
            if (model.State != null)
            {
                auctions = auctions.Where(a => a.State.Equals(model.State.ToString()));
            }

            auctionsList = auctions.ToList();
            return(auctionsList);
        }
Ejemplo n.º 2
0
        public ActionResult CreateBid(SearchViewModel model, int auctionId)
        {
            var db      = new auctiondbEntities();
            var user    = db.AspNetUsers.Find(User.Identity.GetUserId());
            var auction = db.Auctions.First(a => a.Id == auctionId);

            if (user.NumTokens >= model.numTokens && model.numTokens > 0)
            {
                var bid = new Bid()
                {
                    IdUser    = User.Identity.GetUserId(),
                    IdAuction = auctionId,
                    Amount    = model.numTokens,
                    Time      = System.DateTime.Now
                };

                db.Bids.Add(bid);
                auction.PriceNow    += model.numTokens * SystemParameters.TOKEN_VALUE;
                auction.TotalTokens += model.numTokens;

                user.NumTokens -= model.numTokens;

                db.SaveChanges();
                ViewBag.ErrorMessage = "Success";
                MyHub.Hello();
                //AuctionViewModel auctionViewModel = new AuctionViewModel() { Auction = auction };
                return(RedirectToAction("Auction", new { id = auction.Id }));
            }

            ViewBag.ErrorMessage = "Insufficient number of tokens";
            return(RedirectToAction("Search"));
        }
        public async Task <ActionResult> CreateAuction(CreateAuctionModel model)
        {
            if (ModelState.IsValid)
            {
                var auction = new Auction
                {
                    IdUser      = User.Identity.GetUserId(),
                    Name        = model.AuctionName,
                    Duration    = (model.Duration == 0) ? SystemParameters.DEFAULT_AUCTION_DURATION : model.Duration,
                    Photo       = model.PhotoURL,
                    PriceStart  = model.PriceStart,
                    PriceNow    = model.PriceStart,
                    State       = "READY",
                    TimeCreate  = System.DateTime.Now,
                    TotalTokens = 0
                };

                var db = new auctiondbEntities();
                db.Auctions.Add(auction);
                await db.SaveChangesAsync();

                return(Redirect("/"));
            }
            return(View());
        }
Ejemplo n.º 4
0
        public ActionResult Auction(int id)
        {
            AuctionViewModel model = new AuctionViewModel();
            var entity             = new auctiondbEntities();

            model.Auction = entity.Auctions.Single <Auction>(a => a.Id.Equals(id));
            return(View(model));
        }
        public ActionResult OpenAuctions(OpenAuctionsModel model)
        {
            model = new OpenAuctionsModel();
            auctiondbEntities entities = new auctiondbEntities();

            model.auctions = entities.Auctions.Where(x => x.State.Equals("READY")).ToList();
            return(View(model));
        }
        public ActionResult Orders()
        {
            var db     = new auctiondbEntities();
            var id     = User.Identity.GetUserId();
            var user   = db.AspNetUsers.First(u => u.Id == id);
            var orders = user.Orders;

            return(View(orders));
        }
Ejemplo n.º 7
0
        public ActionResult InflateTable(int idAuction)
        {
            var entity             = new auctiondbEntities();
            ICollection <Bid> bids = entity.Auctions.Single(a => a.Id.Equals(idAuction)).Bids;

            addDependency(entity.Bids.ToString());

            return(PartialView("AuctionTable", bids));
        }
        public ActionResult Cancel(int id)
        {
            auctiondbEntities db = new auctiondbEntities();
            var order            = db.Orders.First(o => o.Id == id);

            order.State = OrderStates.CANCELED.ToString();
            db.SaveChanges();
            return(RedirectToAction("ApproveTokens"));
        }
        public ActionResult ApproveTokens()
        {
            var model                = new ApproveTokensModel();
            auctiondbEntities db     = new auctiondbEntities();
            List <Order>      orders = db.Orders.Where(o => o.State == OrderStates.SUBMITTED.ToString()).ToList();

            model.orders = orders;
            return(View(model));
        }
Ejemplo n.º 10
0
        public ActionResult InflateCard(int idAuction)
        {
            var entity      = new auctiondbEntities();
            var auction     = entity.Auctions.Single(a => a.Id == idAuction);
            var auctionList = new List <Auction>();

            auctionList.Add(auction);
            addDependency(entity.Auctions.ToString());
            return(PartialView("Card", auction));
        }
        public ActionResult Approve(int id)
        {
            auctiondbEntities db = new auctiondbEntities();
            var order            = db.Orders.First(o => o.Id == id);

            order.State = OrderStates.COMPLETED.ToString();
            order.AspNetUser.NumTokens += order.NumTokens;
            db.SaveChanges();
            return(RedirectToAction("ApproveTokens"));
        }
        public ActionResult Add(int id)
        {
            auctiondbEntities db = new auctiondbEntities();
            var auction          = db.Auctions.First(a => a.Id == id);

            auction.State    = AuctionStates.OPEN.ToString();
            auction.TimeOpen = DateTime.Now;
            auction.TimeEnd  = DateTime.Now.AddSeconds((int)auction.Duration);
            db.SaveChanges();

            return(RedirectToAction("OpenAuctions"));
        }
Ejemplo n.º 13
0
        public ActionResult Search()
        {
            ViewBag.Message = "Your Search page.";
            SearchViewModel model = new SearchViewModel();

            var db       = new auctiondbEntities();
            var auctions = db.Auctions.AsQueryable();

            auctions = auctions.Where(a => a.State.Equals(AuctionStates.OPEN.ToString())).OrderByDescending(a => a.TimeOpen).Take(SystemParameters.DEFAULT_NUMBER_AUCTIONS);
            var auctionsList = new List <Auction>();

            auctionsList   = auctions.ToList();
            auctionsList   = closeExpiredAuctions(auctionsList);
            model.Auctions = auctionsList;

            return(View(model));
        }
        public ActionResult PurchaseTokens()
        {
            var                 db            = new auctiondbEntities();
            var                 user          = db.AspNetUsers.Find(User.Identity.GetUserId());
            ShopTokensModel     shopTokenInfo = TempData["ShopTokenInfo"] as ShopTokensModel;
            PurchaseTokensModel model         = new PurchaseTokensModel()
            {
                Currency   = shopTokenInfo.Currency,
                NumTokens  = shopTokenInfo.NumTokens,
                FirstName  = user.FirstName,
                LastName   = user.LastName,
                TotalPrice = shopTokenInfo.NumTokens * SystemParameters.TOKEN_VALUE
            };

            TempData["PurchaseTokensModel"] = model;

            return(View(model));
        }
        public ActionResult WonAuctions()
        {
            var model = new WonAuctionsModel();

            model.auctions = new List <Auction>();
            var db       = new auctiondbEntities();
            var userId   = User.Identity.GetUserId();
            var auctions = db.Auctions;

            foreach (var auction in auctions)
            {
                if (auction.Winner == userId)
                {
                    model.auctions.Add(auction);
                }
            }
            return(View(model));
        }
        public async Task <ActionResult> PurchaseTokens(PurchaseTokensModel modele)
        {
            var db   = new auctiondbEntities();
            var user = db.AspNetUsers.Find(User.Identity.GetUserId());
            PurchaseTokensModel model = TempData["PurchaseTokensModel"] as PurchaseTokensModel;
            var order = new Order()
            {
                IdUser    = User.Identity.GetUserId(),
                NumTokens = model.NumTokens,
                Price     = model.TotalPrice,
                State     = OrderStates.SUBMITTED.ToString()
            };

            db.Orders.Add(order);
            await db.SaveChangesAsync();

            return(Redirect("/"));
        }
Ejemplo n.º 17
0
        public ActionResult CreateBid(BidModalModel model)
        {
            var db = new auctiondbEntities();

            var user      = db.AspNetUsers.Find(User.Identity.GetUserId());
            var auctionId = (int)TempData["auctionId"];
            var auction   = db.Auctions.First(a => a.Id == auctionId);


            if (model.BidAmount > 0)
            {
                if (user.NumTokens >= model.BidAmount)
                {
                    if (auction.TimeEnd < DateTime.Now)
                    {
                        ViewBag.ErrorMessage = "This auction has just finished";
                    }
                    var bid = new Bid()
                    {
                        IdUser    = User.Identity.GetUserId(),
                        IdAuction = auctionId,
                        Amount    = model.BidAmount,
                        Time      = System.DateTime.Now
                    };

                    db.Bids.Add(bid);
                    auction.PriceNow    += model.BidAmount * SystemParameters.TOKEN_VALUE;
                    auction.TotalTokens += model.BidAmount;

                    db.SaveChanges();
                }
                else
                {
                    ViewBag.ErrorMessage = "Insufficient number of tokens";
                }
            }
            else
            {
                ViewBag.ErrorMessage = "Your bid amount must be a positive number";
            }
            return(View("Search"));
        }
Ejemplo n.º 18
0
 public List <Auction> closeExpiredAuctions(List <Auction> auctionList)
 {
     foreach (Auction auction in auctionList.ToList())
     {
         if (auction.State.Contains(AuctionStates.OPEN.ToString()) && auction.TimeEnd < DateTime.Now)
         {
             var db         = new auctiondbEntities();
             var newAuction = db.Auctions.Where(a => a.Id == auction.Id).First();
             newAuction.State = AuctionStates.CLOSED.ToString();
             var bids = newAuction.Bids.OrderByDescending(b => b.Time);
             if (bids.Any())
             {
                 var winner = bids.First().AspNetUser;
                 newAuction.Winner   = winner.Id;
                 newAuction.PriceEnd = newAuction.PriceNow;
                 winner.NumTokens   -= newAuction.TotalTokens;
             }
             db.SaveChanges();
             auctionList.Remove(auction);
         }
     }
     return(auctionList);
 }
Ejemplo n.º 19
0
        public ActionResult InflateCards()
        {
            var auctionsList = new List <Auction>();

            var db           = new auctiondbEntities();
            var auctions     = db.Auctions.AsQueryable();
            var cookieValues = Request.Cookies["searchInfo"].Values;

            if (!(Server.HtmlEncode(cookieValues["name"]) == ""))
            {
                string asd = Server.HtmlEncode(cookieValues["name"]);
                auctions = auctions.Where(a => a.Name.Contains(asd));
            }
            if (!(Server.HtmlEncode(cookieValues["minPrice"]) == ""))
            {
                int asd = Int32.Parse(Server.HtmlEncode(cookieValues["minPrice"]));
                auctions = auctions.Where(a => a.PriceNow.Value > asd);
            }
            if (!(Server.HtmlEncode(cookieValues["maxPrice"]) == ""))
            {
                int asd = Int32.Parse(Server.HtmlEncode(cookieValues["maxPrice"]));
                auctions = auctions.Where(a => a.PriceNow.Value < asd);
            }
            if (!(Server.HtmlEncode(cookieValues["minDate"]) == ""))
            {
                DateTime asd = DateTime.Parse(Server.HtmlEncode(cookieValues["minDate"]));
                auctions = auctions.Where(a => a.TimeCreate > asd);
            }
            if (!(Server.HtmlEncode(cookieValues["maxDate"]) == ""))
            {
                DateTime asd = DateTime.Parse(Server.HtmlEncode(cookieValues["maxDate"]));
                auctions = auctions.Where(a => a.TimeCreate < asd);
            }
            if (!(Server.HtmlEncode(cookieValues["state"]) == ""))
            {
                string asd = Server.HtmlEncode(cookieValues["state"]);
                auctions = auctions.Where(a => a.State.Equals(asd));
            }
            if (auctions.Equals(db.Auctions))
            {
                auctions = auctions.Where(a => a.State.Equals(AuctionStates.OPEN.ToString())).OrderByDescending(a => a.TimeOpen).Take(SystemParameters.DEFAULT_NUMBER_AUCTIONS);
            }

            auctionsList = auctions.ToList();
            foreach (var auction in auctionsList)
            {
                if (auction.State.Contains(AuctionStates.OPEN.ToString()) && auction.TimeEnd < DateTime.Now)
                {
                    auction.State = AuctionStates.CLOSED.ToString();
                    var bids = auction.Bids.OrderByDescending(b => b.Time);
                    if (bids.Any())
                    {
                        var winner = bids.First().AspNetUser;
                        auction.Winner    = winner.Id;
                        auction.PriceEnd  = auction.PriceNow;
                        winner.NumTokens -= auction.TotalTokens;
                    }
                    db.SaveChanges();
                }
            }
            addDependency(db.Auctions.ToString());

            return(PartialView("Cards", auctionsList));
        }