예제 #1
0
        // "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));
        }
예제 #2
0
        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);
        }
예제 #4
0
        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);
        }
예제 #13
0
        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));
        }
예제 #14
0
        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);
        }
예제 #16
0
        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));
        }
예제 #17
0
        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);
        }