Esempio n. 1
0
        public async Task <ProjectPagedVM> GetProjectsAsync(int page, int pageSize, string keywords)
        {
            var vm = new ProjectPagedVM
            {
                PageIndex = page - 1,
                PageSize  = pageSize,
                Keywords  = keywords
            };

            var query = _context.Projects.Where(d => d.Archive == false).Include(d => d.Tasks).Include(d => d.UserProjects)
                        .Include(d => d.ManagerNavigation).Include(d => d.Customer).AsQueryable();

            if (!string.IsNullOrEmpty(keywords))
            {
                query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords));
            }

            vm.RowCount = await query.CountAsync();

            vm.Projects = await query.OrderByDescending(d => d.Id)
                          .Skip(vm.PageIndex * vm.PageSize).Take(vm.PageSize).ProjectTo <ProjectVM>(_mapper.ConfigurationProvider).ToListAsync();

            return(vm);
        }
Esempio n. 2
0
        public async Task <ProjectPagedVM> GetProjectsAsync(int page,
                                                            int pageSize,
                                                            string keywords,
                                                            string orderBy,
                                                            string orderMode,
                                                            bool archive,
                                                            int customerId = 0)
        {
            var vm = new ProjectPagedVM
            {
                PageIndex  = page - 1,
                PageSize   = pageSize,
                Keywords   = keywords,
                OrderBy    = orderBy,
                OrderMode  = orderMode,
                CustomerId = customerId
            };

            var query = _db.Projects.AsNoTracking().Include(d => d.Customer)
                        .Include(d => d.UserProjects).Include(d => d.ManagerNavigation)
                        .Include(d => d.TaskLists).Where(d => d.Archive == archive).AsQueryable();

            if (!string.IsNullOrEmpty(keywords))
            {
                query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords));
            }

            if (customerId > 0)
            {
                query = query.Where(d => d.CustomerId == customerId);
            }

            if (!string.IsNullOrEmpty(orderBy))
            {
                switch (orderBy)
                {
                case "name":
                    if (orderMode == "desc")
                    {
                        query = query.OrderByDescending(d => d.Name);
                    }
                    else
                    {
                        query = query.OrderBy(d => d.Name);
                    }
                    break;

                case "createdDate":
                    if (orderMode == "desc")
                    {
                        query = query.OrderByDescending(d => d.CreatedDate);
                    }
                    else
                    {
                        query = query.OrderBy(d => d.CreatedDate);
                    }
                    break;

                default:
                    query = query.OrderByDescending(d => d.CreatedDate);
                    break;
                }
            }
            else
            {
                query = query.OrderByDescending(d => d.CreatedDate);
            }



            vm.RowCount = await query.CountAsync();

            vm.Projects = await query.Skip(vm.PageIndex *vm.PageSize).Take(vm.PageSize).ProjectTo <ProjectVM>(_mapper.ConfigurationProvider).ToListAsync();

            return(vm);
        }