Ejemplo n.º 1
0
        public IPagedList <XiuJia> FindBy(KaoQinCondition condition, int pageNumber, int pageSize)
        {
            IQueryable <XiuJia> entities = Table;

            if (condition != null)
            {
                if (condition.UserId.NotNullOrBlank())
                {
                    entities =
                        entities.Where(x => x.UserId == condition.UserId);
                }
                if (condition.DepartmentIds.OpSafe().Count > 0)
                {
                    entities =
                        entities.Where(x => condition.DepartmentIds.Contains(x.DepartmentId));
                }
                if (condition.Statuses.OpSafe().Count > 0)
                {
                    entities =
                        entities.Where(x => condition.Statuses.Contains(x.Status));
                }
                if (condition.CreatedStartTime.HasValue)
                {
                    entities =
                        entities.Where(x => x.Created >= condition.CreatedStartTime.Value);
                }
                if (condition.CreatedEndTime.HasValue)
                {
                    entities =
                        entities.Where(x => x.Created < condition.CreatedEndTime.Value);
                }
                if (condition.ExcludeUserId.NotNullOrBlank())
                {
                    entities =
                        entities.Where(x => x.UserId != condition.ExcludeUserId);
                }
                if (condition.ExcludePositions.OpSafe().Count > 0)
                {
                    entities =
                        entities.Where(x => !condition.ExcludePositions.Contains(x.Position));
                }
            }

            var totalCountQuery = entities.FutureCount();
            var resultQuery     = entities
                                  .OrderByDescending(x => x.Created)
                                  .ThenByDescending(x => x.Id)
                                  .Skip((pageNumber - 1) * pageSize)
                                  .Take(pageSize)
                                  .Future();

            var totalCount = totalCountQuery.Value;
            var result     = resultQuery.ToList();

            return(new StaticPagedList <XiuJia>(
                       result,
                       pageNumber,
                       pageSize,
                       totalCount));
        }
 public static KaoQinConditionDTO ToDto(this KaoQinCondition model)
 {
     return(Mapper.Map <KaoQinConditionDTO>(model));
 }