/// <summary> /// Returns model with search results. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="criteria">The criteria.</param> /// <returns></returns> public async Task <PagedResultDto <SelectionAnswerSetResponseDto> > Find( int customerId, SelectionAnswerSetSearchDto criteria ) { var result = await selectionAnswerSetService.Find(customerId, criteria); return(Mapper.Map <PagedResult <SelectionAnswerSet>, PagedResultDto <SelectionAnswerSetResponseDto> >(result)); }
public async Task <IHttpActionResult> GetSelectionAnswerSets( int customerId, [FromUri] SelectionAnswerSetSearchDto model, string language = null ) { var result = await selectionAnswerSetHelper.Find(customerId, model); return(Ok(result)); }
/// <summary> /// Returns list of selection sets which matches to provided search criteria. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="searchRequest">The search request.</param> /// <returns></returns> public async Task <PagedResult <SelectionAnswerSet> > Find(int customerId, SelectionAnswerSetSearchDto searchRequest = null) { Expression <Func <SelectionAnswerSet, bool> > expression = s => !s.IsDeleted && s.CustomerId == customerId; if (searchRequest != null) { if (searchRequest.Tags != null && searchRequest.Tags.Any()) { Expression <Func <SelectionAnswerSet, bool> > tagsExpression = PredicateBuilder.False <SelectionAnswerSet>(); foreach (var tag in searchRequest.Tags) { tagsExpression = tagsExpression.Or(se => se.Tags.Any(t => t.Name.ToLower() == tag.ToLower())); } expression = expression.And(tagsExpression); } if (!string.IsNullOrEmpty(searchRequest.Q)) { var terms = searchRequest.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r)); foreach (var term in terms) { expression = expression.And(s => s.Name.Contains(term)); } } if (searchRequest.IsMultipleChoice.HasValue) { expression = expression.And(s => s.IsMultipleChoice == searchRequest.IsMultipleChoice.Value); } } return(await selectionAnswerSetRepository.FindPagedAsync( expression, o => o.OrderBy(e => e.Id), new List <Expression <Func <SelectionAnswerSet, object> > > { e => e.Tags, e => e.SelectionAnswerChoices.Select(c => c.LocalizedStrings.Select(s => s.AudioFileMedia.Tags)), e => e.QuestionElements.Select(q => q.QuestionElementToSelectionAnswerChoices) }, searchRequest != null?searchRequest.Skip : (int?)null, searchRequest != null?searchRequest.Take : (int?)null )); }