diff --git a/build.gradle b/build.gradle index 597fd87..d25aba2 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { apply plugin: 'io.spring.dependency-management' group = 'de.jottyfan' -version = '1.5.8' +version = '1.5.9' description = """timetrack""" diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java index 6160015..8b6e8b4 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java @@ -195,6 +195,13 @@ public class DoneController extends CommonController { return "redirect:/done/list"; } + @RolesAllowed("timetrack_user") + @GetMapping(value = "/done/unfavorize_by_id/{id}") + public String unfavorizeById(@PathVariable("id") Integer id) { + doneService.unfavorizeById(id); + return "redirect:/done/list"; + } + @RolesAllowed("timetrack_user") @GetMapping(value = "/done/usefav/{id}") public String usefavorite(@PathVariable("id") Integer id) { diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneGateway.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneGateway.java index cbee009..0a75d3a 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneGateway.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneGateway.java @@ -30,8 +30,8 @@ import org.jooq.Record7; import org.jooq.Record8; import org.jooq.Result; import org.jooq.SelectConditionStep; -import org.jooq.SelectHavingStep; import org.jooq.SelectLimitPercentStep; +import org.jooq.SelectSeekStep4; import org.jooq.UpdateConditionStep; import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; @@ -494,9 +494,19 @@ public class DoneGateway { sql.execute(); } + public void unfavorizeById(Integer id) { + DeleteConditionStep sql = getJooq() + // @formatter:off + .deleteFrom(T_FAVORITE) + .where(T_FAVORITE.PK_FAVORITE.eq(id)); + // @formatter:on + LOGGER.trace(sql); + sql.execute(); + } + public List getFavorites(Integer login) { Name COUNT = DSL.name("cnt"); - SelectHavingStep> sql = getJooq() + SelectSeekStep4, String, String, String, String> sql = getJooq() // @formatter:off .select(T_FAVORITE.PK_FAVORITE, V_PROJECT.NAME, @@ -513,7 +523,8 @@ public class DoneGateway { .and(T_DONE.FK_MODULE.eq(T_FAVORITE.FK_MODULE)) .and(T_DONE.FK_JOB.eq(T_FAVORITE.FK_JOB)) .where(T_FAVORITE.FK_LOGIN.eq(login)) - .groupBy(T_FAVORITE.PK_FAVORITE, V_PROJECT.NAME, V_MODULE.NAME, V_JOB.NAME, V_BILLING.NAME); + .groupBy(T_FAVORITE.PK_FAVORITE, V_PROJECT.NAME, V_MODULE.NAME, V_JOB.NAME, V_BILLING.NAME) + .orderBy(V_PROJECT.NAME, V_MODULE.NAME, V_JOB.NAME, V_BILLING.NAME); // @formatter:on LOGGER.trace(sql); List list = new ArrayList<>(); @@ -527,7 +538,6 @@ public class DoneGateway { bean.setLoad(r.get(COUNT, Integer.class)); list.add(bean); } - list.sort((o1, o2) -> o1 != null && o1.getModule() != null && o2 != null ? o1.getModule().compareTo(o2.getModule()) : 0); return list; } diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java index 42c8fcf..1e40012 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java @@ -223,6 +223,13 @@ public class DoneService { } } + public void unfavorizeById(Integer id) { + try { + new DoneGateway(dsl).unfavorizeById(id); + } catch (Exception e) { + } + } + public List getFavorites(String username) { try { DoneGateway gw = new DoneGateway(dsl); diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index f50d3ea..127d996 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -100,14 +100,17 @@