/// <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); }
/// <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)); }
/// <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); }