示例#1
0
        public async Task <IHttpActionResult> SearchSkill([FromBody] SearchSkillViewModel condition)
        {
            condition = condition ?? new SearchSkillViewModel();
            Validate(condition);

            var skills = await _skillDomain.SearchSkillsAsync(condition);

            return(Ok());
        }
示例#2
0
        public async Task <IHttpActionResult> Search([FromBody] SearchSkillViewModel condition)
        {
            if (condition == null)
            {
                condition = new SearchSkillViewModel();
                Validate(condition);
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var skills = _unitOfWork.Skills.Search();

            if (condition.Ids != null && condition.Ids.Count > 0)
            {
                var ids = condition.Ids.Where(c => c > 0).ToList();
                if (ids.Count > 0)
                {
                    skills = skills.Where(c => ids.Contains(c.Id));
                }
            }

            if (condition.Names != null && condition.Names.Count > 0)
            {
                var names = condition.Names.Where(c => !string.IsNullOrEmpty(c)).ToList();
                if (names.Count > 0)
                {
                    skills = skills.Where(c => names.Any(name => c.Name.Contains(name)));
                }
            }

            if (condition.StartedTime != null)
            {
                skills = skills.Where(c => c.CreatedTime >= condition.StartedTime.From &&
                                      c.CreatedTime <= condition.StartedTime.To);
            }

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

            result.Total = await skills.CountAsync();

            //do sorting
            skills = _dbService.Sort(skills, SortDirection.Ascending, UserDescriptionSortProperty.Id);

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

            result.Records = await skills.ToListAsync();

            return(Ok(result));
        }
        public async Task <IHttpActionResult> Search([FromBody] SearchSkillViewModel condition)
        {
            if (condition == null)
            {
                condition = new SearchSkillViewModel();
                Validate(condition);
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var loadSkillResult = await _skillService.SearchSkillsAsync(condition, CancellationToken.None);

            return(Ok(loadSkillResult));
        }
示例#4
0
        /// <summary>
        /// Get skills using specific conditions.
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        protected virtual IQueryable <Skill> GetSkills(SearchSkillViewModel condition)
        {
            var skills = _unitOfWork.Skills.Search();

            if (condition.Ids != null && condition.Ids.Count > 0)
            {
                var ids = condition.Ids.Where(c => c > 0).ToList();
                if (ids.Count > 0)
                {
                    skills = skills.Where(c => ids.Contains(c.Id));
                }
            }

            if (condition.Names != null && condition.Names.Count > 0)
            {
                var names = condition.Names.Where(c => !string.IsNullOrEmpty(c)).ToList();
                if (names.Count > 0)
                {
                    skills = skills.Where(c => names.Any(name => c.Name.Contains(name)));
                }
            }

            if (condition.CreatedTime != null)
            {
                var createdTime = condition.CreatedTime;
                var from        = createdTime.From;
                var to          = createdTime.To;

                if (from != null)
                {
                    skills = skills.Where(skill => skill.CreatedTime >= from);
                }

                if (to != null)
                {
                    skills = skills.Where(skill => skill.CreatedTime <= to);
                }
            }

            return(skills);
        }
示例#5
0
 /// <summary>
 /// <inheritdoc />
 /// </summary>
 /// <param name="condition"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public virtual async Task <Skill> SearchSkillAsync(SearchSkillViewModel condition, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await GetSkills(condition).FirstOrDefaultAsync(cancellationToken));
 }
示例#6
0
        /// <summary>
        /// <inheritdoc />
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public virtual async Task <SearchResultViewModel <IList <Skill> > > SearchSkillsAsync(SearchSkillViewModel condition,
                                                                                              CancellationToken cancellationToken = default(CancellationToken))
        {
            var skills          = GetSkills(condition);
            var loadSkillResult = new SearchResultViewModel <IList <Skill> >();

            loadSkillResult.Total = await skills.CountAsync(cancellationToken);

            //do sorting
            skills = _dbService.Sort(skills, SortDirection.Ascending, UserDescriptionSortProperty.Id);

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

            loadSkillResult.Records = await skills.ToListAsync(cancellationToken);

            return(loadSkillResult);
        }
示例#7
0
        public async Task <SearchResultViewModel <IList <Skill> > > SearchSkillsAsync(SearchSkillViewModel condition,
                                                                                      CancellationToken cancellationToken = default(CancellationToken))
        {
            var skills = _dbContext.Skills.AsQueryable();

            if (condition.Ids != null && condition.Ids.Count > 0)
            {
                var ids = condition.Ids.Where(c => c > 0).ToList();
                if (ids.Count > 0)
                {
                    skills = skills.Where(c => ids.Contains(c.Id));
                }
            }

            if (condition.Names != null && condition.Names.Count > 0)
            {
                var names = condition.Names.Where(c => !string.IsNullOrEmpty(c)).ToList();
                if (names.Count > 0)
                {
                    skills = skills.Where(c => names.Contains(c.Name));
                }
            }

            if (condition.StartedTime != null)
            {
                skills = skills.Where(c => c.CreatedTime >= condition.StartedTime.From &&
                                      c.CreatedTime <= condition.StartedTime.To);
            }

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

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

            //do sorting
            skills = _dbService.Sort(skills, SortDirection.Ascending, UserDescriptionSortProperty.Id);

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

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

            return(result);
        }