public static IQueryable<Auction> Where(this IQueryable<Auction> auctionQuery, AuctionStatusFilter allowedStatuses)
        {
            Contract.Requires(auctionQuery != null);

            switch(allowedStatuses)
            {
                case AuctionStatusFilter.Active:
                    return auctionQuery.Where(ActiveAuctionPredicate);

                case AuctionStatusFilter.Expired:
                    return auctionQuery.Where(ExpiredAuctionPredicate);

                case AuctionStatusFilter.Sold:
                    return auctionQuery.Where(SoldAuctionPredicate);
            }

            if(allowedStatuses.HasFlag(AuctionStatusFilter.Active) == false)
            {
                auctionQuery = auctionQuery.Where(ActiveAuctionPredicate.Negate());
            }

            if(allowedStatuses.HasFlag(AuctionStatusFilter.Expired) == false)
            {
                auctionQuery = auctionQuery.Where(ExpiredAuctionPredicate.Negate());
            }

            if(allowedStatuses.HasFlag(AuctionStatusFilter.Sold) == false)
            {
                auctionQuery = auctionQuery.Where(SoldAuctionPredicate.Negate());
            }

            return auctionQuery;
        }
		public static AccountMyAuctionsViewModel FromAuctions(IPagedList<Auction> auctions,
		                                                      string titleFilter,
		                                                      int createdInDays,
		                                                      AuctionStatusFilter currentStatusFilter)
		{
			Contract.Requires(auctions != null);

			var items = auctions.Select(x => new AccountMyAuctionsViewModel.Item
			{
				Id           = x.Id,
				Title        = x.Title,
				CategoryName = x.Category.Name,
				CategoryId   = x.Category.Id,
				Status       = x.Status,
				TimeTillEnd  = x.EndDate - DateTime.Now,
				BuyoutPrice  = x.BuyoutPrice,
				BestOffer    = x.BestOffer != null ? x.BestOffer.Money : null
			});

			return new AccountMyAuctionsViewModel
			{
				Auctions            = new StaticPagedList<AccountMyAuctionsViewModel.Item>(items, auctions),
				TitleFilter         = titleFilter,
				CreatedIn           = TimeSpan.FromDays(createdInDays),
				CurrentStatusFilter = currentStatusFilter
			};
		}
Exemplo n.º 3
0
		public async Task<ActionResult> MyAuctions(int page = 1,
		                                           int createdInDays = 30,
		                                           AuctionStatusFilter status = AuctionStatusFilter.All,
		                                           string title = "")
		{
			createdInDays = Math.Min(Math.Max(createdInDays, 1), 30);

			var auctions  = await mAuctionService.GetAuctionsByUser(User.Identity.GetUserId(), TimeSpan.FromDays(createdInDays),
			                                                        title, status, page, auctionsPerPage: 50);
			var viewModel = AccountMyAuctionsViewModelMapper.FromAuctions(auctions, title, createdInDays, status);

			foreach(var x in viewModel.Auctions.Zip(auctions, (x1, x2) => new { ViewModel = x1, Auction = x2 }))
			{
				x.ViewModel.CanBeRemoved = await mAuctionService.CanBeRemoved(x.Auction, User.Identity.GetUserId());
			}

			return View(viewModel);
		}
Exemplo n.º 4
0
		public Task<IPagedList<Auction>> GetAuctionsByUser(string userId,
		                                                   TimeSpan createdIn,
		                                                   string titleFilter,
		                                                   AuctionStatusFilter statusFilter,
		                                                   int pageIndex,
		                                                   int auctionsPerPage)
		{
			var createdAfter = DateTime.Now.Subtract(createdIn);

			var auctions = mContext.Auctions.Include(x => x.MinimumPrice.Currency)
			                                .Include(x => x.BuyoutPrice.Currency)
			                                .Include(x => x.Offers)
			                                .Include(x => x.Category)
			                                .Where(x => x.SellerId == userId)
			                                .Where(x => x.CreationDate >= createdAfter)
			                                .Where(allowedStatuses: statusFilter);

			if(!String.IsNullOrWhiteSpace(titleFilter))
			{
				auctions = auctions.Where(x => x.Title.Contains(titleFilter));
			}

			auctions = auctions.OrderBy(x => x.Title);

			return Task.FromResult(auctions.ToPagedList(pageIndex, auctionsPerPage));
		}
        Task<IPagedList<Auction>> IAuctionService.GetAuctionsByUser(string userId,
		                                                            TimeSpan createdIn,
		                                                            string titleFilter,
		                                                            AuctionStatusFilter statusFilter,
		                                                            int pageIndex,
		                                                            int auctionsPerPage)
        {
            Contract.Requires(pageIndex >= 1);
            Contract.Requires(auctionsPerPage >= 1);

            throw new NotImplementedException();
        }