// "My Projects" is anything that the current user has created, participated in, or follows. // Create three separate ProjectLists, then combine them public async Task <IActionResult> Myprojects() { ViewBag.MyProjects = ViewBag.MyProjects != true; ViewBag.AllProjects = false; ViewBag.Faq = false; ViewBag.Blog = false; var user = UserModel.GetAuthenticatedUser(User.Identity); var createdProjectList = (await ProjectList.CreateProjectList(_projectRepository)) .FilterByAuthorId(user.Email); var participatingProjectList = await ProjectList.CreateProjectList(_projectRepository); participatingProjectList = await participatingProjectList.FilterByParticipating(user.Email, _participantsRepository); var followingProjectList = await ProjectList.CreateProjectList(_projectRepository); followingProjectList = await followingProjectList.FilterByFollowing(user.Email, _projectFollowRepository); var completeProjectList = createdProjectList .DistinctUnion(participatingProjectList) .DistinctUnion(followingProjectList) .RemoveDrafts() .OrderByLastModified(); var viewModel = await BuildViewModel(completeProjectList); return(View(viewModel)); }
public async Task <IActionResult> GetMyProjectList(string myProjectStatusFilter, string myProjectCategoryFilter, string myProjectPrizeFilter) { var user = UserModel.GetAuthenticatedUser(User.Identity); var createdProjectList = (await ProjectList.CreateProjectList(_projectRepository)) .FilterByAuthorId(user.Email); var participatingProjectList = await ProjectList.CreateProjectList(_projectRepository); participatingProjectList = await participatingProjectList.FilterByParticipating(user.Email, _participantsRepository); var followingProjectList = await ProjectList.CreateProjectList(_projectRepository); followingProjectList = await followingProjectList.FilterByFollowing(user.Email, _projectFollowRepository); var completeProjectList = createdProjectList .DistinctUnion(participatingProjectList) .DistinctUnion(followingProjectList) .RemoveDrafts() .FilterByStatus(myProjectStatusFilter) .FilterByCategory(myProjectCategoryFilter) .OrderByPrize(myProjectPrizeFilter); var viewModel = await BuildViewModel(completeProjectList); return(PartialView("ProjectListPartial", viewModel)); }
public async Task ProjectListShouldUnionDistinct() { var mockRepoToUnion = new Mock <IProjectRepository>(); var Project3 = new Mock <IProjectData>(); Project3.Setup(x => x.Id).Returns("Project3"); mockRepo.Setup(x => x.GetProjectsAsync(null)).ReturnsAsync(new List <IProjectData> { Project1.Object, Project2.Object }); mockRepoToUnion.Setup(x => x.GetProjectsAsync(null)).ReturnsAsync(new List <IProjectData> { Project2.Object, Project3.Object }); var projectList = await ProjectList.CreateProjectList(mockRepo.Object); var projectListToUnion = await ProjectList.CreateProjectList(mockRepoToUnion.Object); var unionProjects = projectList.DistinctUnion(projectListToUnion) .GetProjects(); Assert.Equal(2, unionProjects.Count()); Assert.Equal("Project1", unionProjects.First().Id); Assert.Equal("Project2", unionProjects.ElementAt(1).Id); Assert.Equal("Project3", unionProjects.Last().Id); }
public async Task <IActionResult> Allprojects(string status, string category, string prize) { // flip the flag for AllProjects, set MyProjects, FAQ, and Blog to false? ViewBag.AllProjects = ViewBag.AllProjects != true; ViewBag.MyProjects = false; ViewBag.Faq = false; ViewBag.Blog = false; var projectList = (await ProjectList.CreateProjectList(_projectRepository)) .RemoveDrafts() .FilterByStatus(status) .FilterByCategory(category) .OrderByPrize(prize); var viewModel = await BuildViewModel(projectList); //TODO: Is this ordering needed? Status should be filtered, and prize should be ordered // order by status, then by budget, then by created //Default filtering - used when the page is first opened viewModel.Projects = viewModel.Projects .OrderBy(x => x.BaseProjectData.Status) .ThenByDescending(x => x.BaseProjectData.BudgetFirstPlace) .ThenBy(x => x.BaseProjectData.Created); return(View(viewModel)); }
public async Task ProjectListShouldReturnAllProjectsOnNullCategoryFilter() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByCategory((string)null) .GetProjects(); Assert.Equal(2, projectList.Count()); }
public async Task ProjectListShouldReturnAllProjectsOnAllStatusFilter() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByStatus("All") .GetProjects(); Assert.Equal(2, projectList.Count()); }
public async Task ProjectListShouldRemoveDrafts() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .RemoveDrafts() .GetProjects(); Assert.Equal(1, projectList.Count()); Assert.Equal("Project2", projectList.First().Id); }
public async Task ProjectListShouldFilterByCategory() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByCategory("Blockchain") .GetProjects(); Assert.Equal(1, projectList.Count()); Assert.Equal("Project1", projectList.First().Id); }
public async Task ProjectListShouldFilterByStatus() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByStatus(Models.Status.Submission.ToString()) .GetProjects(); Assert.Equal(1, projectList.Count()); Assert.Equal("Project2", projectList.First().Id); }
public async Task ProjectListShouldFilterByAuthor() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByAuthorId("1") .GetProjects(); Assert.Equal(1, projectList.Count()); Assert.Equal("Project1", projectList.First().Id); }
public async Task ProjectListShouldBuildList() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .GetProjects(); Assert.Equal(2, projectList.Count()); Assert.Equal("Project1", projectList.First().Id); Assert.Equal("Project2", projectList.Last().Id); }
public async Task ProjectListShouldOrderByLastModifiedDescending() { var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .OrderByLastModified("Descending") .GetProjects(); Assert.Equal(2, projectList.Count()); Assert.Equal("Project2", projectList.First().Id); Assert.Equal("Project1", projectList.Last().Id); }
public async Task <IActionResult> FilterFollowingProjects() { var user = UserModel.GetAuthenticatedUser(User.Identity); var projectList = await ProjectList.CreateProjectList(_projectRepository); projectList = await projectList.FilterByFollowing(user.Email, _projectFollowRepository); var viewModel = await BuildViewModel(projectList); return(View("~/Views/Home/Index.cshtml", viewModel)); }
public async Task <IActionResult> GetProjectList(string projectStatusFilter, string projectCategoryFilter, string projectPrizeFilter) { var projectList = (await ProjectList.CreateProjectList(_projectRepository)) .RemoveDrafts() .FilterByStatus(projectStatusFilter) .FilterByCategory(projectCategoryFilter) .OrderByPrize(projectPrizeFilter); var viewModel = await BuildViewModel(projectList); return(PartialView("ProjectListPartial", viewModel)); }
public async Task ProjectListShouldFilterByParticipating() { var mockFoundProject = new Mock <IProjectParticipateData>(); var mockParticipatingRepo = new Mock <IProjectParticipantsRepository>(); mockParticipatingRepo.Setup(x => x.GetAsync("1", "Project1")).ReturnsAsync(mockFoundProject.Object); mockParticipatingRepo.Setup(x => x.GetAsync("1", "Project2")).ReturnsAsync((IProjectParticipateData)null); var projectList = await ProjectList.CreateProjectList(mockRepo.Object); var projects = (await projectList.FilterByParticipating("1", mockParticipatingRepo.Object)).GetProjects(); Assert.Equal(1, projects.Count()); Assert.Equal("Project1", projects.First().Id); }
public async Task <IActionResult> GetCreatedProjects() { ViewBag.CreatedProjects = ViewBag.CreatedProjects != true; ViewBag.MyProjects = true; ViewBag.FollowingProjects = false; ViewBag.ParticipatingProjects = false; var user = UserModel.GetAuthenticatedUser(User.Identity); var projectList = (await ProjectList.CreateProjectList(_projectRepository)) .FilterByAuthorId(user.Email); var viewModel = await BuildViewModel(projectList); return(View("Myprojects", viewModel)); }
public async Task <IActionResult> Index() { var projectList = (await ProjectList.CreateProjectList(_projectRepository)) .RemoveDrafts() .FilterByCurrentProjects(true) .OrderByLastModified(); // fetch the view model var viewModel = await BuildViewModel(projectList); // fetch latest winners and JustFinishedProjects for the viewmodel viewModel.LatestWinners = await GetLatestWinners(); viewModel.JustFinishedProjects = await GetJustFinishedProjects(); // return view return(View(viewModel)); }
public async Task ProjectListShouldFilterByCurrentProjects() { var Project3 = new Mock <IProjectData>(); Project3.Setup(x => x.Id).Returns("Project3"); Project3.Setup(x => x.AuthorId).Returns("3"); Project3.Setup(x => x.ProjectStatus).Returns(Models.Status.Initiative.ToString()); mockRepo.Setup(x => x.GetProjectsAsync(null)).ReturnsAsync(new List <IProjectData> { Project1.Object, Project2.Object, Project3.Object }); var projectList = (await ProjectList.CreateProjectList(mockRepo.Object)) .FilterByCurrentProjects() .GetProjects(); Assert.Equal(2, projectList.Count()); Assert.Equal("Project1", projectList.First().Id); Assert.Equal("Project2", projectList.Last().Id); }