public async Task <IActionResult> SearchInternalProjects(string query, [FromQuery] ProjectFilterParamsResource projectFilterParamsResource) { ProblemDetails problem = new ProblemDetails { Title = "Invalid search request." }; if (string.IsNullOrEmpty(query)) { problem.Detail = "The Query parameter cannot be empty."; problem.Instance = "13A59FAE-E98F-42B3-AFD4-84F3019EC790"; return(BadRequest(problem)); } if (projectFilterParamsResource.Page != null && projectFilterParamsResource.Page < 1) { problem.Detail = "The page number cannot be smaller then 1."; problem.Instance = "65EB6EF1-2CF4-4F7B-8A0A-C047C701337A"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortBy != null && projectFilterParamsResource.SortBy != "name" && projectFilterParamsResource.SortBy != "created" && projectFilterParamsResource.SortBy != "updated") { problem.Detail = "Invalid sort value: Use \"name\", \"created\" or \"updated\"."; problem.Instance = "5CE2F569-C0D5-4179-9299-62916270A058"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortDirection != null && projectFilterParamsResource.SortDirection != "asc" && projectFilterParamsResource.SortDirection != "desc") { problem.Detail = "Invalid sort direction: Use \"asc\" or \"desc\"."; problem.Instance = "3EE043D5-070B-443A-A951-B252A1BB8EF9"; return(BadRequest(problem)); } ProjectFilterParams projectFilterParams = mapper.Map <ProjectFilterParamsResource, ProjectFilterParams>(projectFilterParamsResource); IEnumerable <Project> projects = await searchService.SearchInternalProjects(query, projectFilterParams); IEnumerable <ProjectResultResource> searchResults = mapper.Map <IEnumerable <Project>, IEnumerable <ProjectResultResource> >(projects); ProjectResultsResource searchResultsResource = new ProjectResultsResource() { Results = searchResults.ToArray(), Query = query, Count = searchResults.Count(), TotalCount = await searchService.SearchInternalProjectsCount(query, projectFilterParams), Page = projectFilterParams.Page, TotalPages = await searchService.SearchInternalProjectsTotalPages(query, projectFilterParams) }; return(Ok(searchResultsResource)); }
public async Task <IActionResult> GetAllProjects([FromQuery] ProjectFilterParamsResource projectFilterParamsResource) { ProblemDetails problem = new ProblemDetails { Title = "Invalid search request." }; if (projectFilterParamsResource.Page != null && projectFilterParamsResource.Page < 1) { problem.Detail = "The page number cannot be smaller then 1."; problem.Instance = "65EB6EF1-2CF4-4F7B-8A0A-C047C701337A"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortBy != null && projectFilterParamsResource.SortBy != "name" && projectFilterParamsResource.SortBy != "created" && projectFilterParamsResource.SortBy != "updated") { problem.Detail = "Invalid sort value: Use \"name\", \"created\" or \"updated\"."; problem.Instance = "5CE2F569-C0D5-4179-9299-62916270A058"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortDirection != null && projectFilterParamsResource.SortDirection != "asc" && projectFilterParamsResource.SortDirection != "desc") { problem.Detail = "Invalid sort direction: Use \"asc\" or \"desc\"."; problem.Instance = "3EE043D5-070B-443A-A951-B252A1BB8EF9"; return(BadRequest(problem)); } ProjectFilterParams projectFilterParams = mapper.Map <ProjectFilterParamsResource, ProjectFilterParams>(projectFilterParamsResource); IEnumerable <Project> projects = await projectService.GetAllWithUsersAsync(projectFilterParams); IEnumerable <ProjectResultResource> results = mapper.Map <IEnumerable <Project>, IEnumerable <ProjectResultResource> >(projects); ProjectResultsResource resultsResource = new ProjectResultsResource() { Results = results.ToArray(), Count = results.Count(), TotalCount = await projectService.ProjectsCount(projectFilterParams), Page = projectFilterParams.Page, TotalPages = await projectService.GetProjectsTotalPages(projectFilterParams) }; return(Ok(resultsResource)); }
public async Task <IActionResult> GetAllProjects( [FromQuery] ProjectFilterParamsResource projectFilterParamsResource) { ProblemDetails problem = new ProblemDetails { Title = "Invalid search request." }; if (projectFilterParamsResource.Page != null && projectFilterParamsResource.Page < 1) { problem.Detail = "The page number cannot be smaller then 1."; problem.Instance = "65EB6EF1-2CF4-4F7B-8A0A-C047C701337A"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortBy != null && projectFilterParamsResource.SortBy != "name" && projectFilterParamsResource.SortBy != "created" && projectFilterParamsResource.SortBy != "updated") { problem.Detail = "Invalid sort value: Use \"name\", \"created\" or \"updated\"."; problem.Instance = "5CE2F569-C0D5-4179-9299-62916270A058"; return(BadRequest(problem)); } if (projectFilterParamsResource.SortDirection != null && projectFilterParamsResource.SortDirection != "asc" && projectFilterParamsResource.SortDirection != "desc") { problem.Detail = "Invalid sort direction: Use \"asc\" or \"desc\"."; problem.Instance = "3EE043D5-070B-443A-A951-B252A1BB8EF9"; return(BadRequest(problem)); } ProjectFilterParams projectFilterParams = mapper.Map <ProjectFilterParamsResource, ProjectFilterParams>(projectFilterParamsResource); IEnumerable <Project> projects = await projectService.GetAllWithUsersAndCollaboratorsAsync(projectFilterParams); List <Project> filteredProjects = new List <Project>(); if (HttpContext.User.CheckIfUserIsAuthenticated()) { User currentUser = await HttpContext.GetContextUser(userService) .ConfigureAwait(false); foreach (Project project in projects) { if (project.InstitutePrivate == false) { filteredProjects.Add(project); } if (project.InstitutePrivate && currentUser.InstitutionId == project.User.InstitutionId) { filteredProjects.Add(project); } } } else { foreach (Project project in projects) { if (project.InstitutePrivate == false) { filteredProjects.Add(project); } } } IEnumerable <ProjectResultResource> results = mapper.Map <IEnumerable <Project>, IEnumerable <ProjectResultResource> >(filteredProjects); ProjectResultsResource resultsResource = new ProjectResultsResource { Results = results.ToArray(), Count = results.Count(), TotalCount = await projectService.ProjectsCount(projectFilterParams), Page = projectFilterParams.Page, TotalPages = await projectService.GetProjectsTotalPages( projectFilterParams) }; return(Ok(resultsResource)); }