From c8f1e08b5719295c8cb48efc60e84b21ac12c327 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 21 Oct 2020 15:31:31 +0200 Subject: [PATCH] simple search filtered using status field --- .../controller/OrganizationController.java | 6 ++++-- .../readonly/OrganizationSimpleViewRepository.java | 13 +++++++++---- .../resources/html/parts/org_metadata.form.html | 2 +- .../resources/static/resources/js/organizations.js | 3 ++- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java index 1d023c02..6345958c 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java @@ -236,10 +236,12 @@ public class OrganizationController { public Page search(@PathVariable final int page, @PathVariable final int size, @RequestParam final String q, + @RequestParam(required = false, defaultValue = "suggested,approved") final String status, final Authentication authentication) { + return UserInfo.isSuperAdmin(authentication) - ? organizationSimpleViewRepository.search(q, PageRequest.of(page, size)) - : organizationSimpleViewRepository.searchForUser(q, authentication.getName(), PageRequest.of(page, size)); + ? organizationSimpleViewRepository.search(q, Arrays.asList(status.split(",")), PageRequest.of(page, size)) + : organizationSimpleViewRepository.searchForUser(q, authentication.getName(), Arrays.asList(status.split(",")), PageRequest.of(page, size)); } @GetMapping("/byCountry/{status}/{code}/{page}/{size}") diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationSimpleViewRepository.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationSimpleViewRepository.java index 9c6b0bcd..6920a666 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationSimpleViewRepository.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/readonly/OrganizationSimpleViewRepository.java @@ -1,5 +1,7 @@ package eu.dnetlib.organizations.repository.readonly; +import java.util.List; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; @@ -12,12 +14,15 @@ import eu.dnetlib.organizations.model.view.OrganizationSimpleView; public interface OrganizationSimpleViewRepository extends ReadOnlyRepository { // SEARCH - @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) where idx.txt @@ plainto_tsquery(:text) order by o.name", nativeQuery = true) - Page search(@Param("text") String text, Pageable pageable); + @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) where idx.txt @@ plainto_tsquery(:text) and o.status in :statuses order by o.name", nativeQuery = true) + Page search(@Param("text") String text, @Param("statuses") List statuses, Pageable pageable); // SEARCH FOR USER - @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) left outer join user_countries uc on (uc.country = o.country) where idx.txt @@ plainto_tsquery(:text) and uc.email = :email order by o.name", nativeQuery = true) - Page searchForUser(@Param("text") String text, @Param("email") String email, Pageable pageable); + @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) left outer join user_countries uc on (uc.country = o.country) where idx.txt @@ plainto_tsquery(:text) and uc.email = :email and o.status in :statuses order by o.name", nativeQuery = true) + Page searchForUser(@Param("text") String text, + @Param("email") String email, + @Param("statuses") List statuses, + Pageable pageable); Page findByCountryOrderByName(String country, Pageable pageable); diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html index 29c5fbc7..291d6c32 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html @@ -309,4 +309,4 @@ - + diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/js/organizations.js b/apps/dnet-orgs-database-application/src/main/resources/static/resources/js/organizations.js index dc14a670..f3db851f 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/js/organizations.js +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/js/organizations.js @@ -50,6 +50,7 @@ orgsModule.directive('selectOrgModal', function($http) { restrict: 'E', scope: { 'modalId' : '@', + 'filterStatus' : '@', 'selectedOrg' : '=' }, templateUrl: 'resources/html/modals/select_org.html', @@ -60,7 +61,7 @@ orgsModule.directive('selectOrgModal', function($http) { scope.search = function(text, page, size) { scope.searchOrgs = {}; - $http.get('api/organizations/search/' + page + '/' + size + '?q=' + text).then(function successCallback(res) { + $http.get('api/organizations/search/' + page + '/' + size + '?status='+ scope.filterStatus + '&q=' + text).then(function successCallback(res) { if((typeof res.data) == 'string') { alert("Session expired !"); location.reload(true); } scope.searchValue = text; scope.searchOrgs = res.data;