示例#1
0
        public IActionResult UpdateAuction(int auctionId)
        {
            DetailsAuctionViewModel currentAuction = _businessService.GetAuctionById(auctionId);
            UpdateAuctionViewModel  viewModel      = _businessService.SetUpdateViewModel(currentAuction);

            return(View(viewModel));
        }
示例#2
0
        //TODO Kolla hur man inte först behöver hämta alla
        //public IEnumerable<SearchResultAuctionViewModel> GetAuctionsSorted(string sortParam)
        //{
        //    //IEnumerable<SearchResultAuctionViewModel> searchResult = GetSearchResult()

        //    //IEnumerable<TestAuctionViewModel> allAuctions = SetGeneralAuctionViewModelList(allAuctionsDb);

        //    //if (sortParam == "endDate")
        //    //{
        //    //    allAuctions = allAuctions.OrderBy(x => x.GeneralAuctionViewModel.EndDateString);
        //    //}
        //    //else if (sortParam == "startPrice")
        //    //{
        //    //    allAuctions = allAuctions.OrderBy(x => x.GeneralAuctionViewModel.StartPrice);
        //    //}

        //    //return allAuctions;

        //    //IEnumerable<AuctionModel> allAuctionsDb = _auctionRepository.GetAllAuctions();
        //    //IEnumerable<TestAuctionViewModel> allAuctions = SetGeneralAuctionViewModelList(allAuctionsDb);

        //    //if (sortParam == "endDate")
        //    //{
        //    //    allAuctions = allAuctions.OrderBy(x => x.GeneralAuctionViewModel.EndDateString);
        //    //}
        //    //else if (sortParam == "startPrice")
        //    //{
        //    //    allAuctions = allAuctions.OrderBy(x => x.GeneralAuctionViewModel.StartPrice);
        //    //}

        //    //return allAuctions;
        //}

        public DetailsAuctionViewModel GetAuctionById(int auctionId)
        {
            AuctionModel            currentAuctionDb = _auctionRepository.GetAuctionById(auctionId);
            DetailsAuctionViewModel currentAuction   = SetDetailsAuctionViewModel(currentAuctionDb);

            return(currentAuction);
        }
示例#3
0
        public UpdateAuctionViewModel SetUpdateViewModel(DetailsAuctionViewModel currentAuction)
        {
            UpdateAuctionViewModel viewModel = new UpdateAuctionViewModel
            {
                Id          = currentAuction.Id,
                Title       = currentAuction.Title,
                Description = currentAuction.Description,
                StartPrice  = currentAuction.StartPrice
            };

            return(viewModel);
        }
示例#4
0
 //[Authorize(Roles = "User")]
 public dynamic Bid(string id, long?offer)
 {
     logger.InfoFormat("Bid: {0}", JsonConvert.SerializeObject(new
     {
         user = User.Identity.GetUserName(),
         id,
         offer
     }));
     if (Request.IsAuthenticated && User.IsInRole("User"))
     {
         DetailsAuctionViewModel auction = null;
         if (offer != null)
         {
             if (data.MakeBid(id, offer, User.Identity.GetUserId()))
             {
                 auction = data.GetAuctionDetailsById(id, 1);
                 if (auction != null)
                 {
                     return(JsonConvert.SerializeObject(new
                     {
                         id,
                         bidder = auction.LastBidder,
                         currentPrice = auction.CurrentPrice,
                         currency = auction.Currency,
                         tokens = auction.CurrentNumberOfTokens,
                         success = true,
                         message = "You made a bid",
                         lastBid = auction.Bids[0]
                     }));
                 }
             }
         }
         return(JsonConvert.SerializeObject(new
         {
             id,
             success = false,
             message = "Error has occured"
         }));
     }
     else
     {
         return(JsonConvert.SerializeObject(new
         {
             id,
             success = false,
             message = "You have to log in"
         }));
     }
 }
示例#5
0
        public AuctionModel MakeAuctionApiReady(DetailsAuctionViewModel viewModel)
        {
            AuctionModel model = new AuctionModel
            {
                AuktionID   = viewModel.Id.ToString(),
                Titel       = viewModel.Title,
                Beskrivning = viewModel.Description,
                StartDatum  = viewModel.StartDateString,
                SlutDatum   = viewModel.EndDateString,
                Gruppkod    = _apiKey,
                Utropspris  = viewModel.StartPrice.ToString(),
                SkapadAv    = _userService.GetCurrentUserName()
            };

            return(model);
        }
示例#6
0
        public DetailsAuctionViewModel UpdateAuction(UpdateAuctionViewModel newValues, DetailsAuctionViewModel oldValues)
        {
            DetailsAuctionViewModel viewModel = new DetailsAuctionViewModel
            {
                Id              = oldValues.Id,
                Title           = newValues.Title,
                Description     = newValues.Description,
                StartDateString = oldValues.StartDateString,
                EndDateString   = oldValues.EndDateString,
                GroupCode       = _apiKey,
                StartPrice      = newValues.StartPrice,
                CreatedBy       = _userService.GetCurrentUserName()
            };

            return(viewModel);
        }
示例#7
0
        //TODO Kolla hur den här valideringen kan göras på klienten
        public bool GetBidIsValid(decimal newBid, int auctionId)
        {
            DetailsAuctionViewModel currentAuction = GetAuctionById(auctionId);

            decimal currentHighestBid = GetHighestBidForAuction(auctionId);
            decimal startPrice        = currentAuction.StartPrice;

            if ((newBid > currentHighestBid) && (newBid > startPrice))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#8
0
        //TODO Fixa GetAuctionIsOpen
        public DetailsAuctionViewModel SetDetailsAuctionViewModel(AuctionModel model)
        {
            DetailsAuctionViewModel viewModel = new DetailsAuctionViewModel
            {
                Id              = Int32.Parse(model.AuktionID),
                Title           = model.Titel,
                Description     = model.Beskrivning,
                StartDateString = model.StartDatum,
                EndDateString   = model.SlutDatum,
                StartPrice      = decimal.Parse(model.Utropspris),
                CreatedBy       = model.SkapadAv,
                AllBids         = GetBidsForAuction(Int32.Parse(model.AuktionID))
                                  //AuctionIsOpen = GetAuctionIsOpen(Int32.Parse(model.AuktionID))
            };

            return(viewModel);
        }
示例#9
0
        public bool GetAuctionIsOpen(int auctionId)
        {
            DetailsAuctionViewModel currentAuction = GetAuctionById(auctionId);

            String todayString   = DateTime.Now.ToString("yyyy-MM-ddTHH:mm");
            String endDateString = currentAuction.EndDateString;

            DateTime today   = DateTime.Parse(todayString);
            DateTime endDate = DateTime.Parse(endDateString);

            if (endDate > today)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#10
0
        public IActionResult UpdateAuction(UpdateAuctionViewModel input)
        {
            if (ModelState.IsValid)
            {
                DetailsAuctionViewModel currentAuction = _businessService.GetAuctionById(input.Id);
                DetailsAuctionViewModel viewModel      = _businessService.UpdateAuction(input, currentAuction);

                AuctionModel model = _businessService.MakeAuctionApiReady(viewModel);

                HttpResponseMessage response = _businessService.UpdateAuction(model);

                if (response.IsSuccessStatusCode == true)
                {
                    return(RedirectToAction("ViewAuctionDetails", "Auction", new { auctionId = viewModel.Id, message = "Auction was successfully updated" }));
                }

                return(RedirectToAction("ViewAuctionDetails", "Auction", new { auctionId = viewModel.Id, message = "Auction has not been updated" }));
            }

            return(View(input));
        }
示例#11
0
        public ActionResult Details(int Id)
        {
            DetailsAuctionViewModel model = new DetailsAuctionViewModel();

            model.PageTitle       = "Details";
            model.PageDescription = "Auction details";

            model.Auction = AuctionsService.Instance.GetAuctionById(Id);

            model.EntityId = (int)EntitiesEnum.Auction;

            model.BidsAmount = model.Auction.ActualAmount + model.Auction.Bids.Sum(x => x.BidAmount);

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

            model.LatestBidder = newBidder != null ? newBidder.User: null;

            model.Comment    = CommentsService.Instance.GetComments(model.EntityId, Id);
            model.RatingStar = CommentsService.Instance.RatingAverage(model.EntityId, Id);


            return(View(model));
        }
示例#12
0
        public IActionResult ViewAuctionDetails(int auctionId)
        {
            DetailsAuctionViewModel currentAuction = _businessService.GetAuctionById(auctionId);

            return(View(currentAuction));
        }
示例#13
0
        public DetailsAuctionViewModel GetAuctionDetailsById(string id, int?page)
        {
            logger.InfoFormat("GetAuctionDetailsById: {0} ", JsonConvert.SerializeObject(new
            {
                id,
                page
            }));
            try
            {
                using (AuctionDB db = new AuctionDB())
                {
                    CloseAuctions();

                    Auction auction = db.Auctions.Include(a => a.Bids).Where(a => a.Id.ToString().Equals(id)).SingleOrDefault();
                    if (auction == null)
                    {
                        logger.ErrorFormat("GetAuctionDetailsById: auction {0} is null", JsonConvert.SerializeObject(new
                        {
                            auction
                        }));
                        return(null);
                    }
                    else
                    {
                        //var span = (auction.ClosingTime - DateTime.UtcNow) ?? new TimeSpan();
                        var dv = GetDetailsDefaultValues();
                        if (dv == null)
                        {
                            logger.ErrorFormat("GetAuctionDetailsById: default values {0} is null", JsonConvert.SerializeObject(new
                            {
                                dv
                            }));
                            return(null);
                        }
                        var token = auction.Bids.Count() == 0 ? 0 : auction.Bids.Max(b => b.NumberOfTokens) + 1;

                        var result = new DetailsAuctionViewModel
                        {
                            Id           = auction.Id.ToString(),
                            Name         = auction.Name,
                            Currency     = auction.Currency,
                            CurrentPrice = auction.CurrentPrice,
                            //Duration = auction.Status == AuctionStatus.COMPLETED ? "00:00:00" : GetDuration(span),
                            ClosingTime           = auction.ClosingTime.GetValueOrDefault(),
                            Image                 = auction.Image,
                            CurrentNumberOfTokens = Math.Max((long)(Math.Ceiling(auction.CurrentPrice / dv.TokenValue)), token),
                            LastBidder            = auction.User != null ? (auction.User.Name + " " + auction.User.Surname) : "",
                            Status                = auction.Status
                        };

                        var bids = new List <DetailsBidViewModel>();
                        foreach (var bid in auction.Bids.OrderByDescending(b => b.PlacingTime))
                        {
                            bids.Add(new DetailsBidViewModel
                            {
                                NumberOfTokens = bid.NumberOfTokens,
                                PlacingTime    = bid.PlacingTime.ToLocalTime(),
                                User           = bid.User.Name + " " + bid.User.Surname
                            });
                        }
                        long pageSize   = 15;
                        int  pageNumber = (page ?? 1);

                        result.Bids = bids.ToPagedList(pageNumber, (int)pageSize);

                        return(result);
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error("GetAuctionDetailsById", e);
            }
            return(null);
        }