public async Task <IHttpActionResult> SearchSkillCategory([FromBody] SearchSkillCategoryViewModel model) { if (model == null) { model = new SearchSkillCategoryViewModel(); Validate(model); } var skillCategories = await _skillSkilCategoryDomain.SearchSkillCategoriesAsync(model); return(Ok(skillCategories)); }
/// <summary> /// Get skill categories using specific conditions. /// </summary> /// <param name="condition"></param> /// <returns></returns> protected virtual IQueryable <SkillCategory> GetSkillCategories(SearchSkillCategoryViewModel condition) { #region Information search // Get list of skill categories. var skillCategories = _unitOfWork.SkillCategories.Search(); // Filter skill categories by indexes. if (condition.Ids != null && condition.Ids.Count > 0) { var ids = condition.Ids.Where(x => x > 0).ToList(); if (ids.Count > 0) { skillCategories = skillCategories.Where(x => ids.Contains(x.Id)); } } // Filter skill categories by user indexes. if (condition.UserIds != null && condition.UserIds.Count > 0) { var userIds = condition.UserIds.Where(x => x > 0).ToList(); if (userIds.Count > 0) { skillCategories = skillCategories.Where(x => userIds.Contains(x.UserId)); } } // Filter skill categories by user indexes. if (condition.Names != null && condition.Names.Count > 0) { var names = condition.Names.Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); if (names.Count > 0) { skillCategories = skillCategories.Where(x => names.Any(name => x.Name.Contains(name))); } } #endregion return(skillCategories); }
public async Task <IHttpActionResult> Search([FromBody] SearchSkillCategoryViewModel condition) { #region Parameters validation if (condition == null) { condition = new SearchSkillCategoryViewModel(); Validate(condition); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } #endregion var loadSkillCategoriesResult = await _skillCategoryService.SearchSkillCategoriesAsync(condition); return(Ok(loadSkillCategoriesResult)); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <SkillCategory> SearchSkillCategoryAsync(SearchSkillCategoryViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { return(await GetSkillCategories(condition).FirstOrDefaultAsync(cancellationToken)); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <SearchResultViewModel <IList <SkillCategory> > > SearchSkillCategoriesAsync(SearchSkillCategoryViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { var skillCategories = GetSkillCategories(condition); // Get offline skill categories. var loadSkillCategoriesResult = new SearchResultViewModel <IList <SkillCategory> >(); loadSkillCategoriesResult.Total = await skillCategories.CountAsync(cancellationToken); // Do sorting. skillCategories = _dbService.Sort(skillCategories, SortDirection.Ascending, SkillCategorySortProperty.Id); // Do paging. skillCategories = _dbService.Paginate(skillCategories, condition.Pagination); loadSkillCategoriesResult.Records = await skillCategories.ToListAsync(cancellationToken); return(loadSkillCategoriesResult); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <SearchResultViewModel <IList <SkillCategoryModel> > > SearchSkillCategoriesAsync( SearchSkillCategoryViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { #region Information search // Get list of skill categories. var skillCategories = _dbContext.SkillCategories.AsQueryable(); // Filter skill categories by indexes. if (condition.Ids != null && condition.Ids.Count > 0) { var ids = condition.Ids.Where(x => x > 0).ToList(); if (ids.Count > 0) { skillCategories = skillCategories.Where(x => ids.Contains(x.Id)); } } // Filter skill categories by user indexes. if (condition.UserIds != null && condition.UserIds.Count > 0) { var userIds = condition.UserIds.Where(x => x > 0).ToList(); if (userIds.Count > 0) { skillCategories = skillCategories.Where(x => userIds.Contains(x.UserId)); } } // Filter skill categories by user indexes. if (condition.Names != null && condition.Names.Count > 0) { var names = condition.Names.Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); if (names.Count > 0) { skillCategories = skillCategories.Where(x => names.Any(name => x.Name.Contains(name))); } } #endregion // Import skill list. var skills = Enumerable.Empty <Skill>().AsQueryable(); var skillCategorySkillRelationships = Enumerable.Empty <SkillCategorySkillRelationship>().AsQueryable(); if (condition.IncludeSkills) { skillCategorySkillRelationships = _dbContext.SkillCategorySkillRelationships.AsQueryable(); skills = _dbContext.Skills.AsQueryable(); } // Get offline skill categories. var loadSkillCategoryResult = new SearchResultViewModel <IList <SkillCategoryModel> >(); loadSkillCategoryResult.Total = await skillCategories.CountAsync(cancellationToken); // Load skill categories. var loadedSkillCategories = from skillCategory in skillCategories select new SkillCategoryModel { Id = skillCategory.Id, UserId = skillCategory.UserId, Photo = skillCategory.Photo, Name = skillCategory.Name, CreatedTime = skillCategory.CreatedTime, Skills = from skill in skills from skillCategorySkillRelationship in skillCategorySkillRelationships where skillCategorySkillRelationship.SkillCategoryId == skillCategory.Id && skillCategorySkillRelationship.SkillId == skill.Id select new SkillCategorySkillRelationshipModel { UserId = skillCategory.UserId, SkillCategoryId = skillCategorySkillRelationship.SkillCategoryId, SkillId = skillCategorySkillRelationship.SkillId, Point = skillCategorySkillRelationship.Point, SkillName = skill.Name } }; // Do sorting. loadedSkillCategories = _dbService.Sort(loadedSkillCategories, SortDirection.Ascending, SkillCategorySortProperty.Id); // Do paging. loadedSkillCategories = _dbService.Paginate(loadedSkillCategories, condition.Pagination); loadSkillCategoryResult.Records = await loadedSkillCategories.ToListAsync(cancellationToken); return(loadSkillCategoryResult); }
public async Task <IHttpActionResult> Search([FromBody] SearchSkillCategoryViewModel condition) { #region Parameters validation if (condition == null) { condition = new SearchSkillCategoryViewModel(); Validate(condition); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } #endregion #region Information search // Get list of skill categories. var skillCategories = _unitOfWork.SkillCategories.Search(); // Filter skill categories by indexes. if (condition.Ids != null && condition.Ids.Count > 0) { var ids = condition.Ids.Where(x => x > 0).ToList(); if (ids.Count > 0) { skillCategories = skillCategories.Where(x => ids.Contains(x.Id)); } } // Filter skill categories by user indexes. if (condition.UserIds != null && condition.UserIds.Count > 0) { var userIds = condition.UserIds.Where(x => x > 0).ToList(); if (userIds.Count > 0) { skillCategories = skillCategories.Where(x => userIds.Contains(x.UserId)); } } // Filter skill categories by user indexes. if (condition.Names != null && condition.Names.Count > 0) { var names = condition.Names.Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); if (names.Count > 0) { skillCategories = skillCategories.Where(x => names.Any(name => x.Name.Contains(name))); } } #endregion // Get offline skill categories. var loadSkillCategoryResult = new SearchResultViewModel <IEnumerable <SkillCategory> >(); loadSkillCategoryResult.Total = await skillCategories.CountAsync(); // Do sorting. skillCategories = _dbService.Sort(skillCategories, SortDirection.Ascending, SkillCategorySortProperty.Id); // Do paging. skillCategories = _dbService.Paginate(skillCategories, condition.Pagination); loadSkillCategoryResult.Records = await skillCategories.ToListAsync(); return(Ok(loadSkillCategoryResult)); }