示例#1
0
        public async Task <IActionResult> FilterFollowingProjects()
        {
            var projectCategories = _categoriesRepository.GetCategories();

            var user = GetAuthenticatedUser();

            var projects = await _projectRepository.GetProjectsAsync();

            var follows = await _projectFollowRepository.GetFollowAsync();

            var following = follows.Where(f => f.UserId == user.Email).ToList();

            var filtered = projects
                           .Where(x => following.Any(y => y.ProjectId == x.Id));

            var compactModels = await GetCompactProjectsList(filtered);

            var viewModel = new ProjectListIndexViewModel
            {
                ProjectCategories = projectCategories,
                Projects          = compactModels
            };

            return(View("~/Views/Home/Index.cshtml", viewModel));
        }
        private async Task <ProjectListIndexViewModel> GetProjectListViewModel(string projectStatusFilter = null, string projectCategoryFilter = null, string projectAuthorId = null)
        {
            var projects = await _projectRepository.GetProjectsAsync();

            var projectCategories = _categoriesRepository.GetCategories();

            if (!string.IsNullOrEmpty(projectStatusFilter))
            {
                projects = projects.Where(x => x.ProjectStatus == projectStatusFilter);
            }

            if (!string.IsNullOrEmpty(projectCategoryFilter))
            {
                projects = projects.Where(x => x.Category == projectCategoryFilter);
            }

            if (!string.IsNullOrEmpty(projectAuthorId))
            {
                projects = projects.Where(x => x.AuthorId == projectAuthorId);
            }

            var compactModels = await GetCompactProjectsList(projects);

            var viewModel = new ProjectListIndexViewModel
            {
                ProjectCategories = projectCategories,
                Projects          = compactModels
            };

            return(viewModel);
        }
示例#3
0
        private async Task <ProjectListIndexViewModel> GetProjectListViewModel(string projectStatusFilter = null, string projectCategoryFilter = null,
                                                                               string projectPrizeFilter  = null, string projectAuthorId       = null,
                                                                               bool currentProjects       = false)
        {
            var projects = await _projectRepository.GetProjectsAsync();

            projects = projects.Where(x => x.ProjectStatus != Status.Draft.ToString());

            var projectCategories = _categoriesRepository.GetCategories();

            if (!string.IsNullOrEmpty(projectStatusFilter) && projectStatusFilter != "All")
            {
                projects = projects.Where(x => x.ProjectStatus == projectStatusFilter);
            }

            if (!string.IsNullOrEmpty(projectCategoryFilter) && projectCategoryFilter != "All")
            {
                projects = projects.Where(x => x.Category.Replace(" ", "") == projectCategoryFilter);
            }

            if (!string.IsNullOrEmpty(projectAuthorId))
            {
                projects = projects.Where(x => x.AuthorId == projectAuthorId);
            }

            if (currentProjects)
            {
                projects = projects.Where(x => x.ProjectStatus != Status.Initiative.ToString() && x.ProjectStatus != Status.Archive.ToString());
            }

            if (!string.IsNullOrEmpty(projectPrizeFilter))
            {
                if (projectPrizeFilter == "Ascending")
                {
                    projects = projects.OrderBy(x => x.BudgetFirstPlace);
                }

                if (projectPrizeFilter == "Descending")
                {
                    projects = projects.OrderByDescending(x => x.BudgetFirstPlace);
                }
            }
            else
            {
                projects = projects.OrderBy(x => x.BudgetFirstPlace);
            }

            var compactModels = await GetCompactProjectsList(projects);

            var viewModel = new ProjectListIndexViewModel
            {
                ProjectCategories = projectCategories,
                Projects          = compactModels
            };

            return(viewModel);
        }
示例#4
0
        private async Task <ProjectListIndexViewModel> GetMyProjectListViewModel(string userId                = null, bool createdProjects = false,
                                                                                 bool followingProjects       = false, bool participatingProjects    = false,
                                                                                 string myProjectStatusFilter = null, string myProjectCategoryFilter = null,
                                                                                 string myProjectPrizeFilter  = null)
        {
            var authoredProjects = await _projectRepository.GetProjectsAsync();

            var followedProjects     = authoredProjects as IList <IProjectData> ?? authoredProjects.ToList();
            var participatedProjects = authoredProjects as IList <IProjectData> ?? authoredProjects.ToList();

            var projectCategories = _categoriesRepository.GetCategories();

            if ((createdProjects || ViewBag.CreatedProjects == true) && !string.IsNullOrEmpty(userId))
            {
                authoredProjects = authoredProjects.Where(x => x.AuthorId == userId);
            }

            if (followingProjects || ViewBag.FollowingProjects == true)
            {
                foreach (var project in followedProjects.ToList())
                {
                    var match = await _projectFollowRepository.GetAsync(userId, project.Id);

                    if (match == null)
                    {
                        followedProjects.Remove(project);
                    }
                }
            }

            if (participatingProjects || ViewBag.ParticipatingProjects == true)
            {
                foreach (var project in participatedProjects.ToList())
                {
                    var match = await _participantsRepository.GetAsync(project.Id, userId);

                    if (match == null)
                    {
                        participatedProjects.Remove(project);
                    }
                }
            }

            IEnumerable <IProjectData> allProjects = null;

            if (ViewBag.CreatedProjects == true)
            {
                allProjects = authoredProjects;
            }
            else if (ViewBag.FollowingProjects == true)
            {
                allProjects = followedProjects;
            }
            else if (ViewBag.ParticipatingProjects == true)
            {
                allProjects = participatedProjects;
            }
            else
            {
                allProjects = authoredProjects.Union(followedProjects).Union(participatedProjects);
            }

            if (!string.IsNullOrEmpty(myProjectStatusFilter) && myProjectStatusFilter != "All")
            {
                allProjects = allProjects.Where(x => x.ProjectStatus == myProjectStatusFilter);
            }

            if (!string.IsNullOrEmpty(myProjectCategoryFilter) && myProjectCategoryFilter != "All")
            {
                allProjects = allProjects.Where(x => x.Category.Replace(" ", "") == myProjectCategoryFilter);
            }

            if (!string.IsNullOrEmpty(myProjectPrizeFilter))
            {
                if (myProjectPrizeFilter == "Ascending")
                {
                    allProjects = allProjects.OrderBy(x => x.BudgetFirstPlace);
                }

                if (myProjectPrizeFilter == "Descending")
                {
                    allProjects = allProjects.OrderByDescending(x => x.BudgetFirstPlace);
                }
            }
            else
            {
                allProjects = allProjects.OrderBy(x => x.BudgetFirstPlace);
            }

            var compactModels = await GetCompactProjectsList(allProjects);

            var viewModel = new ProjectListIndexViewModel
            {
                ProjectCategories = projectCategories,
                Projects          = compactModels
            };

            return(viewModel);
        }