예제 #1
0
        public virtual List <Project> GetByFilter(TaskFilter filter)
        {
            var listProjects = new List <Project>();

            while (true)
            {
                var projects = projectDao.GetByFilter(filter).Where(CanRead).ToList();

                if (filter.LastId != 0)
                {
                    var lastProjectIndex = projects.FindIndex(r => r.ID == filter.LastId);

                    if (lastProjectIndex >= 0)
                    {
                        projects = projects.SkipWhile((r, index) => index <= lastProjectIndex).ToList();
                    }
                }

                listProjects.AddRange(projects);

                if (filter.Max <= 0 || filter.Max > 150000)
                {
                    break;
                }

                listProjects = listProjects.Take((int)filter.Max).ToList();

                if (listProjects.Count == filter.Max || projects.Count == 0)
                {
                    break;
                }


                if (listProjects.Count != 0)
                {
                    filter.LastId = listProjects.Last().ID;
                }

                filter.Offset += filter.Max;
            }

            return(listProjects);
        }
예제 #2
0
 public virtual List <Project> GetByFilter(TaskFilter filter)
 {
     return(projectDao.GetByFilter(filter, ProjectSecurity.CurrentUserAdministrator, ProjectSecurity.IsPrivateDisabled));
 }
예제 #3
0
        public virtual List <Project> GetByFilter(TaskFilter filter)
        {
            var isAdmin = ProjectSecurity.IsAdministrator(SecurityContext.CurrentAccount.ID);

            return(projectDao.GetByFilter(filter, isAdmin));
        }