public async Task <IHttpActionResult> GetMedias( int customerId, [FromUri] MediaSearchDto request ) { var result = await controllerHelper.GetMedias(customerId, request); return(Ok(result)); }
/// <summary> /// Gets the medias. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="request">The request.</param> /// <returns></returns> public async Task <PagedResult <Media> > GetMedias(int customerId, MediaSearchDto request) { Expression <Func <Media, bool> > expression = m => !m.IsDeleted && m.CustomerId == customerId; if (request != null) { if (request.Tags != null && request.Tags.Any()) { Expression <Func <Media, bool> > tagsExpression = PredicateBuilder.False <Media>();; 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(m => m.Name.Contains(term)); } } if (request.Types != null && request.Types.Any()) { var contentTypes = new List <string>(); foreach (var mediaType in request.Types) { List <string> mimeTypes; if (mediaTypesToMimeTypes.TryGetValue(mediaType, out mimeTypes)) { contentTypes.AddRange(mimeTypes); } } expression = expression.And(m => contentTypes.Any(t => t.ToLower() == m.ContentType.ToLower())); } } return(await mediaRepository.FindPagedAsync( expression, m => m.OrderBy(e => e.ContentType).ThenBy(e => e.Name), new List <Expression <Func <Media, object> > > { e => e.Tags }, request != null?request.Skip : (int?)null, request != null?request.Take : (int?)null )); }
/// <summary> /// Gets the medias. /// </summary> /// <param name="customerId"></param> /// <param name="request">The request.</param> /// <returns></returns> public async Task <PagedResultDto <MediaResponseDto> > GetMedias( int customerId, MediaSearchDto request ) { var medias = await mediaService.GetMedias(customerId, request); return(Mapper.Map <PagedResult <Media>, PagedResultDto <MediaResponseDto> >(medias)); }