示例#1
0
        /// <summary>
        /// Gets the elements.
        /// </summary>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="searchCriteriaDto">The search criteria dto.</param>
        /// <returns></returns>
        public async Task <PagedResultDto <TextMediaElementResponseDto> > GetElements(
            int customerId,
            TextMediaElementSearchDto searchCriteriaDto
            )
        {
            var result = await textMediaElementsService.GetElements(customerId, searchCriteriaDto);

            return(Mapper.Map <PagedResult <TextMediaElement>, PagedResultDto <TextMediaElementResponseDto> >(result));
        }
        public async Task <IHttpActionResult> GetTextMediaElements(
            int customerId,
            [FromUri] TextMediaElementSearchDto searchModel,
            string language = null
            )
        {
            var elements = await controllerHelper.GetElements(customerId, searchModel);

            return(Ok(elements));
        }
        public async Task <PagedResult <TextMediaElement> > GetElements(
            int customerId,
            TextMediaElementSearchDto searchRequest = null
            )
        {
            Expression <Func <TextMediaElement, bool> > expression = tm => !tm.IsDeleted && tm.CustomerId == customerId;

            if (searchRequest != null)
            {
                if (searchRequest.Tags != null && searchRequest.Tags.Any())
                {
                    Expression <Func <TextMediaElement, bool> > tagsExpression = PredicateBuilder.False <TextMediaElement>();

                    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(tm => tm.Name.Contains(term));
                    }
                }

                if (searchRequest.Type.HasValue)
                {
                    expression = expression.And(tm => tm.MediaType == searchRequest.Type.Value);
                }
            }

            return(await textMediaElementsRepository.FindPagedAsync(
                       expression,
                       o => o.OrderBy(e => e.Id),
                       new List <Expression <Func <TextMediaElement, object> > >
            {
                e => e.Tags,
                e => e.TextLocalizedStrings,
                e => e.TextMediaElementsToMedias.Select(t => t.Media)
            },
                       searchRequest != null?searchRequest.Skip : (int?)null,
                       searchRequest != null?searchRequest.Take : (int?)null
                       ));
        }