/// <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()
            });
        }
Example #2
0
        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));
        }
Example #3
0
        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
                       ));
        }