public async Task <IHttpActionResult> GetScaleAnswerSets( int customerId, [FromUri] TagsSearchDto model, string language = null ) { var result = await scaleAnswerSetHelper.Find(customerId, model); return(Ok(result)); }
public async Task <IHttpActionResult> GetQuestionElements( int customerId, [FromUri] TagsSearchDto model, string language = null, bool isBrief = true ) { var result = await questionElementHelper.Find(customerId, model, isBrief); return(Ok(result)); }
/// <summary> /// Returns question elements by criteria. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="searchRequest">The search request.</param> /// <returns></returns> public async Task <PagedResult <QuestionElement> > Find(int customerId, TagsSearchDto searchRequest = null) { Expression <Func <QuestionElement, bool> > expression = q => !q.IsDeleted && q.CustomerId == customerId; if (searchRequest != null) { if (searchRequest.Tags != null && searchRequest.Tags.Any()) { Expression <Func <QuestionElement, bool> > tagsExpression = PredicateBuilder.False <QuestionElement>(); 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 currentLanguage = string.IsNullOrEmpty(careElementContext.Language) ? careElementContext.DefaultLanguage : careElementContext.Language; expression = expression .And(q => q.LocalizedStrings.Any(ls => ls.Language.Equals(currentLanguage))); var terms = searchRequest.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r)); foreach (var term in terms) { expression = expression.And(q => q.LocalizedStrings.Any(ls => ls.Value.Contains(term))); } } } return(await questionElementRepository.FindPagedAsync( expression, o => o.OrderBy(e => e.Id), new List <Expression <Func <QuestionElement, object> > > { e => e.Tags, e => e.AnswerSet, e => e.LocalizedStrings, e => e.QuestionElementToScaleAnswerChoices, e => e.QuestionElementToSelectionAnswerChoices }, searchRequest != null?searchRequest.Skip : (int?)null, searchRequest != null?searchRequest.Take : (int?)null )); }
/// <summary> /// Finds the specified keyword. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="searchRequest">The search request.</param> /// <returns></returns> public async Task <PagedResult <ScaleAnswerSet> > Find(int customerId, TagsSearchDto searchRequest = null) { Expression <Func <ScaleAnswerSet, bool> > expression = s => !s.IsDeleted && s.CustomerId == customerId; if (searchRequest != null) { if (searchRequest.Tags != null && searchRequest.Tags.Any()) { Expression <Func <ScaleAnswerSet, bool> > tagsExpression = PredicateBuilder.False <ScaleAnswerSet>(); 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)); } } } return(await scaleAnswerSetRepository.FindPagedAsync( expression, o => o.OrderBy(e => e.Id), new List <Expression <Func <ScaleAnswerSet, object> > > { e => e.Tags, e => e.QuestionElements, e => e.LowLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.Tags), e => e.LowLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.LocalizedStrings), e => e.MidLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.Tags), e => e.MidLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.LocalizedStrings), e => e.HighLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.Tags), e => e.HighLabelScaleAnswerSetStrings.Select(l => l.AudioFileMedia.LocalizedStrings) }, searchRequest != null?searchRequest.Skip : (int?)null, searchRequest != null?searchRequest.Take : (int?)null )); }
/// <summary> /// Returns list of Assessment elements for specified customer. /// </summary> /// <param name="customerId"></param> /// <param name="request"></param> /// <returns></returns> public async Task <PagedResult <AssessmentElement> > GetAll(int customerId, TagsSearchDto request = null) { Expression <Func <AssessmentElement, bool> > expression = m => !m.IsDeleted && m.CustomerId == customerId; // TODO: Code below should be removed when initialization of default data will be implemented in correct way var assessments = await this.assessmentElementsRepository.FindAsync(expression); if (!assessments.Any()) { await this.InitDefaultAssessmentElements(customerId); } // TODO: Code above should be removed when initialization of default data will be implemented in correct way if (request != null) { if (request.Tags != null && request.Tags.Any()) { foreach (var tag in request.Tags) { expression = expression.Or(m => m.Tags.Any(t => t.Name.ToLower() == tag.ToLower())); } } if (!string.IsNullOrEmpty(request.Q)) { var terms = request.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r)); foreach (var term in terms) { expression = expression.And(m => m.Name.Contains(term)); } } } return(await assessmentElementsRepository .FindPagedAsync( expression, m => m.OrderBy(e => e.AssessmentTypeString).ThenBy(e => e.Name), null, request != null?request.Skip : (int?)null, request != null?request.Take : (int?)null )); }
/// <summary> /// Returns list of Assessment elements models for specified customer. /// Copies data from CI customer to specified if required customer didn't have any Assessment elements. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="request">The request.</param> /// <returns></returns> public async Task <PagedResultDto <AssessmentResponseDto> > GetAll(int customerId, TagsSearchDto request) { var result = await AssessmentElementsService.GetAll(customerId, request); return(Mapper.Map <PagedResult <AssessmentElement>, PagedResultDto <AssessmentResponseDto> >(result)); }
/// <summary> /// Returns model with search results. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="criteria">The criteria.</param> /// <param name="isBrief">if set to <c>true</c> [is brief].</param> /// <returns></returns> public async Task <PagedResultDto <QuestionElementResponseDto> > Find(int customerId, TagsSearchDto criteria, bool isBrief) { var result = await questionElementService.Find(customerId, criteria); return(Mapper.Map <PagedResult <QuestionElement>, PagedResultDto <QuestionElementResponseDto> >( result, o => o.Items.Add("isBrief", isBrief) )); }
public async Task <IHttpActionResult> Get(int customerId, [FromUri] TagsSearchDto request) { var result = await assessmentElementsHelper.GetAll(customerId, request); return(Ok(result)); }
/// <summary> /// Finds the specified model. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="model">The model.</param> /// <returns></returns> public async Task <PagedResultDto <ScaleAnswerSetResponseDto> > Find(int customerId, TagsSearchDto model = null) { var result = await scaleAnswerSetService.Find(customerId, model); return(Mapper.Map <PagedResult <ScaleAnswerSet>, PagedResultDto <ScaleAnswerSetResponseDto> >(result)); }