public async Task <IHttpActionResult> GetProtocols( int customerId, [FromUri] SearchProtocolDto request, string language = null, bool isBrief = true ) { var result = await protocolsControllerHelper.GetProtocols(customerId, request, isBrief); return(Ok(result)); }
/// <summary> /// Gets the protocols. /// </summary> /// <param name="customerId"></param> /// <param name="request">The request.</param> /// <param name="isBrief">if set to <c>true</c> [is brief].</param> /// <returns></returns> public async Task <PagedResultDto <ProtocolResponseDto> > GetProtocols( int customerId, SearchProtocolDto request, bool isBrief ) { var protocols = await protocolService.GetProtocols(customerId, request); var result = Mapper.Map <PagedResult <Protocol>, PagedResultDto <ProtocolResponseDto> >( protocols, o => o.Items.Add("isBrief", isBrief) ); result.Results = result.Results.OrderBy(e => e.Name.Value).ToList(); return(result); }
/// <summary> /// Gets the protocols. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="request">The request.</param> /// <returns></returns> public async Task <PagedResult <Protocol> > GetProtocols(int customerId, SearchProtocolDto request = null) { Expression <Func <Protocol, bool> > expression = p => !p.IsDeleted && p.CustomerId == customerId; if (request != null) { if (request.CreatedAfter.HasValue) { expression = expression.And(p => p.CreatedUtc >= request.CreatedAfter.Value); } if (request.UpdatedAfter.HasValue) { expression = expression.And(p => p.UpdatedUtc >= request.UpdatedAfter.Value); } if (request.CreatedBefore.HasValue) { expression = expression.And(p => p.CreatedUtc < request.CreatedBefore.Value); } if (request.UpdatedBefore.HasValue) { expression = expression.And(p => p.UpdatedUtc < request.UpdatedBefore.Value); } if (request.Tags != null && request.Tags.Any()) { Expression <Func <Protocol, bool> > tagsExpression = PredicateBuilder.False <Protocol>();; foreach (var tag in request.Tags) { tagsExpression = tagsExpression.Or(se => se.Tags.Any(t => t.Name.ToLower() == tag.ToLower())); } expression = expression.And(tagsExpression); } if (!string.IsNullOrEmpty(request.Q)) { var terms = request.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r)); foreach (var term in terms) { expression = expression.And(p => p.NameLocalizedStrings.Any(ls => ls.Value.Contains(term))); } } } return(await protocolRepository .FindPagedAsync( expression, o => o.OrderBy(e => e.Id), new List <Expression <Func <Protocol, object> > > { e => e.Tags, e => e.NameLocalizedStrings, e => e.ProtocolElements, e => e.ProtocolElements.Select(pe => pe.Element), e => e.ProtocolElements.Select(pe => pe.Branches), e => e.ProtocolElements.Select(pe => pe.NextProtocolElement), e => e.ProtocolElements.Select(pe => pe.Element.Tags) }, request != null?request.Skip : (int?)null, request != null?request.Take : (int?)null )); }