Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2020-12-20 15:34:48 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-12-20 15:34:48 +0300
commit5dafd60cb72f55087cb454af3e7ec3ea57943aa3 (patch)
tree179ca6d11ddd6e1d9db3b0309924db8c09dbf513 /app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
parent518b6467e47f6cecd0978a6b672868617084661e (diff)
#597 filter widget: added ability to filter by Project
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
index a1bad0c26..6be24bacc 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
@@ -57,6 +57,7 @@ import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidget;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetAccount;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetBoard;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetLabel;
+import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetProject;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetSort;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetStack;
import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidgetUser;
@@ -280,6 +281,19 @@ public class DataBaseAdapter {
query.append("and not exists(select 1 from joincardwithuser j where c.localId = cardId and j.status<>3) ");
}
+ if (!filter.getProjects().isEmpty()) {
+ query.append("and (exists(select 1 from joincardwithproject j where c.localId = cardId and projectId in (");
+ fillSqlWithEntityListValues(query, args, filter.getProjects());
+ query.append(") and j.status<>3) ");
+ if (filter.isNoAssignedProject()) {
+ query.append("or not exists(select 1 from joincardwithproject j where c.localId = cardId and j.status<>3)) ");
+ } else {
+ query.append(") ");
+ }
+ } else if (filter.isNoAssignedProject()) {
+ query.append("and not exists(select 1 from joincardwithproject j where c.localId = cardId and j.status<>3) ");
+ }
+
if (filter.getDueType() != EDueType.NO_FILTER) {
switch (filter.getDueType()) {
case NO_DUE:
@@ -1144,6 +1158,10 @@ public class DataBaseAdapter {
user.setFilterAccountId(accountId);
db.getFilterWidgetUserDao().insert(user);
}
+ for (FilterWidgetProject project : account.getProjects()) {
+ project.setFilterAccountId(accountId);
+ db.getFilterWidgetProjectDao().insert(project);
+ }
for (FilterWidgetBoard board : account.getBoards()) {
board.setFilterAccountId(accountId);
long boardId = db.getFilterWidgetBoardDao().insert(board);
@@ -1184,6 +1202,7 @@ public class DataBaseAdapter {
for (FilterWidgetAccount account : filterWidget.getAccounts()) {
account.setBoards(db.getFilterWidgetBoardDao().getFilterWidgetBoardsByFilterWidgetAccountIdDirectly(account.getId()));
account.setUsers(db.getFilterWidgetUserDao().getFilterWidgetUsersByFilterWidgetAccountIdDirectly(account.getId()));
+ account.setProjects(db.getFilterWidgetProjectDao().getFilterWidgetProjectsByFilterWidgetAccountIdDirectly(account.getId()));
for (FilterWidgetBoard board : account.getBoards()) {
board.setLabels(db.getFilterWidgetLabelDao().getFilterWidgetLabelsByFilterWidgetBoardIdDirectly(board.getId()));
board.setStacks(db.getFilterWidgetStackDao().getFilterWidgetStacksByFilterWidgetBoardIdDirectly(board.getId()));
@@ -1225,6 +1244,16 @@ public class DataBaseAdapter {
}
}
filter.setUsers(users);
+ filter.setNoAssignedProject(account.isIncludeNoProject());
+ List<OcsProject> projects = new ArrayList<>();
+ if (!account.getProjects().isEmpty()) {
+ for (FilterWidgetProject project : account.getProjects()) {
+ OcsProject u = new OcsProject();
+ u.setLocalId(project.getProjectId());
+ projects.add(u);
+ }
+ }
+ filter.setProjects(projects);
if (!account.getBoards().isEmpty()) {
for (FilterWidgetBoard board : account.getBoards()) {
filter.setNoAssignedLabel(board.isIncludeNoLabel());