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);
        }
Exemple #3
0
        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);
        }
Exemple #7
0
        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));
        }