public async Task <PaginatedCampaignListModel> GetPagedCampaignsAsync(CampaignListRequestModel campaignListRequestModel) { Expression <Func <CampaignEntity, bool> > predicate = PredicateBuilder.New <CampaignEntity>(c => !c.IsDeleted); if (!string.IsNullOrWhiteSpace(campaignListRequestModel.CampaignName)) { predicate = predicate.And(c => c.Name.ToLower().Contains(campaignListRequestModel.CampaignName.Trim().ToLower())); } if (campaignListRequestModel.CampaignStatus != null) { predicate = GetFilterByCampaignStatus(campaignListRequestModel.CampaignStatus.Value, predicate); } if (!string.IsNullOrEmpty(campaignListRequestModel.ConditionType)) { predicate = predicate.And(c => c.ConditionEntities.Any(e => e.BonusTypeName == campaignListRequestModel.ConditionType.ToLower())); } using (var context = _msSqlContextFactory.CreateDataContext()) { var query = context.Campaigns .AsNoTracking() .Include(c => c.ConditionEntities) .ThenInclude(ce => ce.BonusTypeEntity) .Include(c => c.ConditionEntities) .ThenInclude(ce => ce.ConditionPartners) .Include(c => c.ConditionEntities) .ThenInclude(ce => ce.Attributes) .Where(predicate); var totalCount = await query.CountAsync(); var skip = (campaignListRequestModel.CurrentPage - 1) * campaignListRequestModel.PageSize; var result = await query.ToListAsync(); result = result .OrderByDescending(OrderCampaignByVertical) .ThenBy(c => c.Order) .ThenByDescending(c => c.CreationDate) .Skip(skip) .Take(campaignListRequestModel.PageSize) .ToList(); return(new PaginatedCampaignListModel { Campaigns = _mapper.Map <List <CampaignDetails> >(result), CurrentPage = campaignListRequestModel.CurrentPage, PageSize = campaignListRequestModel.PageSize, TotalCount = totalCount }); } }
public async Task <PaginatedCampaignListModel> GetPagedCampaignsAsync(CampaignListRequestModel campaignListRequestModel) { return(await _campaignRepository.GetPagedCampaignsAsync(campaignListRequestModel)); }