/// <summary> /// Gets all gift cards /// </summary> /// <param name="purchasedWithOrderId">Associated order ID; null to load all records</param> /// <param name="createdFromUtc">Created date from (UTC); null to load all records</param> /// <param name="createdToUtc">Created date to (UTC); null to load all records</param> /// <param name="isGiftCardActivated">Value indicating whether gift card is activated; null to load all records</param> /// <param name="giftCardCouponCode">Gift card coupon code; nullto load all records</param> /// <param name="recipientName">Recipient name; null to load all records</param> /// <param name="pageIndex">Page index</param> /// <param name="pageSize">Page size</param> /// <returns>Gift cards</returns> public virtual async Task <IPagedList <GiftCard> > GetAllGiftCards(string purchasedWithOrderItemId = "", DateTime?createdFromUtc = null, DateTime?createdToUtc = null, bool?isGiftCardActivated = null, string giftCardCouponCode = null, string recipientName = null, int pageIndex = 0, int pageSize = int.MaxValue) { var model = new GetGiftCardQuery() { CreatedFromUtc = createdFromUtc, CreatedToUtc = createdToUtc, GiftCardCouponCode = giftCardCouponCode, IsGiftCardActivated = isGiftCardActivated, PageIndex = pageIndex, PageSize = pageSize, PurchasedWithOrderItemId = purchasedWithOrderItemId, RecipientName = recipientName }; var query = await _mediator.Send(model); return(await PagedList <GiftCard> .Create(query, pageIndex, pageSize)); }
public Task <IMongoQueryable <GiftCard> > Handle(GetGiftCardQuery request, CancellationToken cancellationToken) { var query = _giftCardRepository.Table; if (!string.IsNullOrEmpty(request.GiftCardId)) { query = query.Where(gc => gc.Id == request.GiftCardId); } if (!string.IsNullOrEmpty(request.PurchasedWithOrderItemId)) { query = query.Where(gc => gc.PurchasedWithOrderItem.Id == request.PurchasedWithOrderItemId); } if (request.CreatedFromUtc.HasValue) { query = query.Where(gc => request.CreatedFromUtc.Value <= gc.CreatedOnUtc); } if (request.CreatedToUtc.HasValue) { query = query.Where(gc => request.CreatedToUtc.Value >= gc.CreatedOnUtc); } if (request.IsGiftCardActivated.HasValue) { query = query.Where(gc => gc.IsGiftCardActivated == request.IsGiftCardActivated.Value); } if (!string.IsNullOrEmpty(request.GiftCardCouponCode)) { query = query.Where(gc => gc.GiftCardCouponCode == request.GiftCardCouponCode.ToLowerInvariant()); } if (!string.IsNullOrWhiteSpace(request.RecipientName)) { query = query.Where(c => c.RecipientName.Contains(request.RecipientName)); } query = query.OrderByDescending(gc => gc.CreatedOnUtc); return(Task.FromResult(query)); }