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); }
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); }
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); }