コード例 #1
0
        /// <summary>
        /// Get hobby using specific conditions.
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        protected virtual IQueryable <Hobby> GetHobbies(SearchHobbyViewModel condition)
        {
            // Get hobbies.
            var hobbies = _unitOfWork.Hobbies.Search();

            // Search for ids
            if (condition.Ids != null && condition.Ids.Any())
            {
                var ids = condition.Ids.Where(id => id > 0).ToList();
                if (ids.Any())
                {
                    hobbies = hobbies.Where(hobby => ids.Contains(hobby.Id));
                }
            }

            // Search for UserIds
            if (condition.UserIds != null && condition.UserIds.Any())
            {
                var userIds = condition.UserIds.Where(userId => userId > 0).ToList();
                if (userIds.Any())
                {
                    hobbies = hobbies.Where(hobby => userIds.Contains(hobby.UserId));
                }
            }

            // Search for names
            if (condition.Names != null && condition.Names.Any())
            {
                var names = condition.Names.Where(name => !string.IsNullOrEmpty(name)).ToList();
                if (names.Any())
                {
                    hobbies = hobbies.Where(hobby => names.Contains(hobby.Name));
                }
            }

            return(hobbies);
        }
コード例 #2
0
 /// <summary>
 /// <inheritdoc />
 /// </summary>
 /// <param name="condition"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public async Task <Hobby> SearchHobbyAsync(SearchHobbyViewModel condition,
                                            CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await GetHobbies(condition).FirstOrDefaultAsync(cancellationToken));
 }
コード例 #3
0
        /// <summary>
        /// <inheritdoc />
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <SearchResultViewModel <IList <Hobby> > > SearchHobbiesAsync(SearchHobbyViewModel condition,
                                                                                       CancellationToken cancellationToken = default(CancellationToken))
        {
            // Get all hobbies.
            var hobbies = GetHobbies(condition);

            var result = new SearchResultViewModel <IList <Hobby> >();

            result.Total = await hobbies.CountAsync(cancellationToken);

            //Do sort
            hobbies = _dbService.Sort(hobbies, SortDirection.Ascending, SkillSortProperty.Id);

            //Do pagination
            hobbies = _dbService.Paginate(hobbies, condition.Pagination);

            result.Records = await hobbies.ToListAsync(cancellationToken);

            return(result);
        }