コード例 #1
0
        public async Task <IActionResult> AllProjects(ProjectSearchForTable projectparams)
        {
            if (projectparams != null)
            {
                projectparams.UserName  = this.User.Identity.Name;
                this.ViewData["Filter"] = projectparams;
            }

            return(this.View(await this.projectservice.GetAllProjects(projectparams)));
        }
コード例 #2
0
ファイル: ProjectService.cs プロジェクト: sasha007k/MyKanban
        public async Task <ProjectsTable> GetAllProjects(ProjectSearchForTable projectparams)
        {
            int  pageSize = 6;
            User user     = await _usermanager.FindByNameAsync(projectparams.UserName);

            ProjectsTable projectsinfo = new ProjectsTable();

            if (user != null)
            {
                IEnumerable <ProjectModelToTable> projects = await _dbcontext.Set <Project>()
                                                             .Include(p => p.User).Include(p => p.Issues)
                                                             .Join((await _dbcontext.Set <Team>().ToListAsync()), p => p.Id, t => t.ProjectId, (p, t) => new ProjectModelToTable()
                {
                    ProjectId     = p.Id,
                    Name          = p.Name,
                    Owner         = p.User.Email,
                    Issues        = p.Issues.Where(i => i.UserId == t.UserId).Count(),
                    DoneIssues    = p.Issues.Where(i => i.Status == Status.Done && i.UserId == t.UserId).Count(),
                    UserIdWhoView = t.UserId
                })
                                                             .Where(p => p.UserIdWhoView == user.Id)
                                                             .ToListAsync();

                if (!String.IsNullOrEmpty(projectparams.Name))
                {
                    projects = projects.Where(p => p.Name.ToLower().Contains(projectparams.Name.ToLower()));
                }

                int projectsCount = projects.Count();
                if (projectparams.Page > (int)Math.Ceiling((decimal)projectsCount / pageSize) || projectparams.Page < 1)
                {
                    projectparams.Page = 1;
                }


                switch (projectparams.OrderBy)
                {
                case "NameUp":
                {
                    projects = projects.OrderBy(e => e.Name).ToList();
                    break;
                }

                case "NameDown":
                {
                    projects = projects.OrderByDescending(e => e.Name).ToList();
                    break;
                }

                case "None":
                {
                    projects = (projects).ToList().OrderBy(p => p.Percentage);
                    break;
                }

                default:
                {
                    projects = (projects).ToList().OrderBy(p => p.Percentage);
                    break;
                }
                }


                projectsinfo.projects = projects.Skip((projectparams.Page - 1) * pageSize).Take(pageSize).ToList();;
                projectsinfo.PageInfo = new PageInfo {
                    PageNumber = projectparams.Page, PageSize = pageSize, TotalItems = projectsCount
                };
                return(projectsinfo);
            }
            else
            {
                throw new Exception("User not found");
            }
        }