/// <summary> /// Returns list of programs by specified criteria. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="searchProgram">The search program.</param> /// <param name="isBrief">if set to <c>true</c> [is brief].</param> /// <returns></returns> public async Task <PagedResultDto <ProgramBriefResponseDto> > FindPrograms( int customerId, SearchProgramDto searchProgram, bool isBrief ) { var programs = await programService.FindPrograms(customerId, searchProgram); if (isBrief) { return(new PagedResultDto <ProgramBriefResponseDto>() { Total = programs.Total, Results = Mapper.Map <IList <Program>, IList <ProgramBriefResponseDto> >(programs.Results) }); } var mappedPrograms = Mapper.Map <IList <Program>, IList <ProgramResponseDto> >(programs.Results); return(new PagedResultDto <ProgramBriefResponseDto>() { Total = programs.Total, Results = mappedPrograms.Select(p => (ProgramBriefResponseDto)p).ToList() }); }
public async Task <IHttpActionResult> GetPrograms( int customerId, [FromUri] SearchProgramDto searchProgram = null, bool isBrief = true ) { var findProgramsResult = await controllerHelper.FindPrograms(customerId, searchProgram, isBrief); return(Ok(findProgramsResult)); }
public async Task <PagedResult <Program> > FindPrograms(int customerId, SearchProgramDto request = null) { Expression <Func <Program, 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 <Program, bool> > tagsExpression = PredicateBuilder.False <Program>();; 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.Name.Contains(term)); } } } return(await programRepository .FindPagedAsync( expression, o => o.OrderBy(e => e.Name), new List <Expression <Func <Program, object> > > { e => e.Tags, e => e.ProgramElements, e => e.ProgramDayElements, e => e.Recurrences }, request != null?request.Skip : (int?)null, request != null?request.Take : (int?)null )); }