branch feature/refonte-ui created (now 271a14a7)
This is an automated email from the git hooks/post-receive script. New change to branch feature/refonte-ui in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git at 271a14a7 Refonte ui : ajout de nouveaux filtres pour la récupération des sondages This branch includes the following new commits: new 271a14a7 Refonte ui : ajout de nouveaux filtres pour la récupération des sondages The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 271a14a70c41ba8817a7772419563fe71cf926ea Author: Cécilia Bossard <bossard@codelutin.com> Date: Wed May 6 14:59:29 2020 +0200 Refonte ui : ajout de nouveaux filtres pour la récupération des sondages -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/refonte-ui in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 271a14a70c41ba8817a7772419563fe71cf926ea Author: Cécilia Bossard <bossard@codelutin.com> Date: Wed May 6 14:59:29 2020 +0200 Refonte ui : ajout de nouveaux filtres pour la récupération des sondages --- .../pollen/persistence/entity/PollTopiaDao.java | 84 +++++++++++++++++++++- .../org/chorem/pollen/rest/api/v1/PollApi.java | 21 ++++-- .../pollen/services/service/PollService.java | 22 ++++-- 3 files changed, 111 insertions(+), 16 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java index 72c0a479..54e218af 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java @@ -58,7 +58,20 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { } - public PaginationResult<Poll> findAllCreated(PollenUser user, PaginationParameter page, String search) { + public PaginationResult<Poll> findAllUserPolls(PollenUser user, PaginationParameter page, String search, String filter) { + + Map<String, Object> parameters = Maps.newHashMap(); + parameters.put("user", user); + + String hqlCondition = ""; + if (StringUtils.isNotEmpty(filter)) { + hqlCondition += filterCondition(filter, parameters); + } + + return findAllUserPollsWithConditions(user, page, search, parameters, hqlCondition); + } + + public PaginationResult<Poll> findAllCreated(PollenUser user, PaginationParameter page, String search, String filter) { Map<String, Object> parameters = Maps.newHashMap(); parameters.put("user", user); @@ -69,10 +82,14 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { hql += " AND " + DaoUtils.getSearchClause("poll", parameters, Poll.PROPERTY_TITLE, search); } + if (StringUtils.isNotEmpty(filter)) { + hql +=" AND " + filterCondition(filter, parameters); + } + return findPage(hql, parameters, page); } - public PaginationResult<Poll> findAllInvited(PollenUser user, PaginationParameter page, String search) { + public PaginationResult<Poll> findAllInvited(PollenUser user, PaginationParameter page, String search, String filter) { Map<String, Object> parameters = Maps.newHashMap(); parameters.put("user", user); @@ -84,6 +101,10 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { hql += " AND " + DaoUtils.getSearchClause("poll", parameters, Poll.PROPERTY_TITLE, search); } + if (StringUtils.isNotEmpty(filter)) { + hql +=" AND " + filterCondition(filter, parameters); + } + PaginationOrder order = page.getOrderClauses().get(0); PaginationParameter page2 = PaginationParameter.of(page.getPageNumber(), page.getPageSize(), "poll." + order.getClause(), order.isDesc()); @@ -94,7 +115,7 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { } - public PaginationResult<Poll> findAllParticipated(PollenUser user, PaginationParameter page, String search) { + public PaginationResult<Poll> findAllParticipated(PollenUser user, PaginationParameter page, String search, String filter) { Map<String, Object> parameters = Maps.newHashMap(); parameters.put("user", user); @@ -107,6 +128,62 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { hql += " AND " + DaoUtils.getSearchClause("poll", parameters, Poll.PROPERTY_TITLE, search); } + if (StringUtils.isNotEmpty(filter)) { + hql +=" AND " + filterCondition(filter, parameters); + } + + PaginationOrder order = page.getOrderClauses().get(0); + + PaginationParameter page2 = PaginationParameter.of(page.getPageNumber(), page.getPageSize(), "poll." + order.getClause(), order.isDesc()); + + List<Poll> polls = find("SELECT poll " + hql, parameters, page2); + long count = count("SELECT COUNT(poll.topiaId) " + hql, parameters); + return PaginationResult.of(polls, count, page); + } + + private String filterCondition(String filter, Map<String, Object> parameters) { + switch (filter) { + case "PAST": + parameters.put("today", new Date()); + return "poll." + Poll.PROPERTY_END_DATE + " IS NOT NULL " + + " AND poll." + Poll.PROPERTY_END_DATE + " >= :today "; + + case "CURRENT": + parameters.put("today", new Date()); + return "(poll." + Poll.PROPERTY_BEGIN_DATE+ " IS NULL OR poll." + Poll.PROPERTY_BEGIN_DATE + " <= :today) " + + " AND ( poll." + Poll.PROPERTY_END_DATE + " IS NULL OR poll." + Poll.PROPERTY_END_DATE + ">= :today)"; + + case "UPCOMING": + parameters.put("today", new Date()); + return "poll." + Poll.PROPERTY_BEGIN_DATE + " IS NOT NULL " + + " AND poll." + Poll.PROPERTY_BEGIN_DATE + " >= :today "; + + default: + return ""; + } + } + + private PaginationResult<Poll> findAllUserPollsWithConditions(PollenUser user, PaginationParameter page, String search, Map<String, Object> parameters, String hqlCondition) { + + + String hql = "FROM " + Poll.class.getName() + " as poll " + + " WHERE (poll." + Poll.PROPERTY_CREATOR + "." + PollenPrincipal.PROPERTY_POLLEN_USER + " = :user" + + " OR EXISTS (SELECT 1 FROM " + VoterListMember.class.getName() + " memb" + + " WHERE memb." + VoterListMember.PROPERTY_VOTER_LIST + "." + VoterList.PROPERTY_POLL + "." + Poll.PROPERTY_TOPIA_ID + " = poll." + Poll.PROPERTY_TOPIA_ID + + " AND memb." + VoterListMember.PROPERTY_MEMBER + "." + PollenPrincipal.PROPERTY_POLLEN_USER + " = :user )" + + " OR EXISTS (SELECT 1 FROM " + Vote.class.getName() + " vote" + + " WHERE vote." + Vote.PROPERTY_VOTER + "." + PollenPrincipal.PROPERTY_POLLEN_USER + " = :user " + + " AND vote." + Vote.PROPERTY_QUESTION + "." + Question.PROPERTY_POLL + "." + Poll.PROPERTY_TOPIA_ID + " = poll." + Poll.PROPERTY_TOPIA_ID +")" + + ")"; + + if(StringUtils.isNotBlank(hqlCondition)) { + hql += " AND " + hqlCondition; + } + + if (StringUtils.isNotBlank(search)) { + hql += " AND " + DaoUtils.getSearchClause("poll", parameters, Poll.PROPERTY_TITLE, search); + } + PaginationOrder order = page.getOrderClauses().get(0); PaginationParameter page2 = PaginationParameter.of(page.getPageNumber(), page.getPageSize(), "poll." + order.getClause(), order.isDesc()); @@ -116,6 +193,7 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { return PaginationResult.of(polls, count, page); } + public Set<Poll> findAllFreePolls() { List<Poll> polls = forPollTypeEquals(PollType.FREE).findAll(); diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java index 4c64188b..da55f175 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java @@ -71,16 +71,23 @@ public class PollApi { public PaginationResultBean<PollBean> getPolls(@Context PollService pollService, @BeanParam PaginationParameterBean paginationParameter, @QueryParam("search") String search, - @QueryParam("use") String context) { + @QueryParam("use") String context, + @QueryParam("filter") String filter) { if (StringUtils.isBlank(context)) { + // Connection as admin return pollService.getPolls(paginationParameter, search); - } else if ("invited".equals(context)) { - return pollService.getInvitedPolls(paginationParameter, search); - } else if ("participated".equals(context)) { - return pollService.getParticipatedPolls(paginationParameter, search); - } else /*if ("created".equals(context))*/ { - return pollService.getCreatedPolls(paginationParameter, search); + } else { + switch (context) { + case "invited" : + return pollService.getInvitedPolls(paginationParameter, search, filter); + case "participated" : + return pollService.getParticipatedPolls(paginationParameter, search, filter); + case "created" : + return pollService.getCreatedPolls(paginationParameter, search, filter); + default : + return pollService.getAllPolls(paginationParameter, search, filter); + } } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index af67afe4..3f3e5940 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -204,32 +204,42 @@ public class PollService extends PollenServiceSupport { } - public PaginationResultBean<PollBean> getCreatedPolls(PaginationParameterBean paginationParameter, String search) { + public PaginationResultBean<PollBean> getAllPolls(PaginationParameterBean paginationParameter, String search, String filter) { PollenUser connectedUser = checkAndGetConnectedUser(); PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationResult<Poll> polls = getPollDao().findAllCreated(connectedUser, page, search); + PaginationResult<Poll> polls = getPollDao().findAllUserPolls(connectedUser, page, search, filter); return toPaginationListBean(polls, this::toPollBean); } - public PaginationResultBean<PollBean> getInvitedPolls(PaginationParameterBean paginationParameter, String search) { + public PaginationResultBean<PollBean> getCreatedPolls(PaginationParameterBean paginationParameter, String search, String filter) { PollenUser connectedUser = checkAndGetConnectedUser(); PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationResult<Poll> polls = getPollDao().findAllInvited(connectedUser, page, search); + PaginationResult<Poll> polls = getPollDao().findAllCreated(connectedUser, page, search, filter); return toPaginationListBean(polls, this::toPollBean); } - public PaginationResultBean<PollBean> getParticipatedPolls(PaginationParameterBean paginationParameter, String search) { + public PaginationResultBean<PollBean> getInvitedPolls(PaginationParameterBean paginationParameter, String search, String filter) { PollenUser connectedUser = checkAndGetConnectedUser(); PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationResult<Poll> polls = getPollDao().findAllParticipated(connectedUser, page, search); + PaginationResult<Poll> polls = getPollDao().findAllInvited(connectedUser, page, search, filter); + return toPaginationListBean(polls, this::toPollBean); + + } + + public PaginationResultBean<PollBean> getParticipatedPolls(PaginationParameterBean paginationParameter, String search, String filter) { + + PollenUser connectedUser = checkAndGetConnectedUser(); + + PaginationParameter page = getPaginationParameter(paginationParameter); + PaginationResult<Poll> polls = getPollDao().findAllParticipated(connectedUser, page, search, filter); return toPaginationListBean(polls, this::toPollBean); } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm