diff --git a/build.gradle b/build.gradle index 6a9cb63..f4f1d0d 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { apply plugin: 'io.spring.dependency-management' group = 'de.jottyfan' -version = '1.5.2' +version = '1.5.3' 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 1e1f041..6160015 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneController.java @@ -24,6 +24,7 @@ import de.jottyfan.timetrack.modules.done.model.SlotBean; import de.jottyfan.timetrack.modules.done.model.SlotRangeBean; import de.jottyfan.timetrack.modules.done.model.SummaryBean; import jakarta.annotation.security.RolesAllowed; +import jakarta.websocket.server.PathParam; /** * @@ -82,6 +83,13 @@ public class DoneController extends CommonController { return getList(model, doneModel); } + @RolesAllowed("timetrack_user") + @GetMapping("/done/update/{id}") + public String updateField(@PathVariable("id") Integer fkDone, @PathParam("field") String field, @PathParam("value") Integer value) { + doneService.updateField(fkDone, field, value); + return "redirect:/done/list"; + } + @RolesAllowed("timetrack_user") @GetMapping("/done/abort/{day}") public String abort(@PathVariable("day") String day, Model model) { diff --git a/src/main/java/de/jottyfan/timetrack/modules/done/DoneRepository.java b/src/main/java/de/jottyfan/timetrack/modules/done/DoneRepository.java index bf1ddf2..35c14ba 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneRepository.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneRepository.java @@ -1,5 +1,6 @@ package de.jottyfan.timetrack.modules.done; +import static de.jottyfan.timetrack.db.done.Tables.T_DONE; import static de.jottyfan.timetrack.db.done.Tables.T_OVERTIME; import static de.jottyfan.timetrack.db.done.Tables.T_REQUIRED_WORKTIME; import static de.jottyfan.timetrack.db.done.Tables.V_DAY; @@ -32,12 +33,14 @@ import org.jooq.Row4; import org.jooq.SelectConditionStep; import org.jooq.SelectHavingStep; import org.jooq.SelectSeekStep1; +import org.jooq.TableField; import org.jooq.UpdateConditionStep; import org.jooq.impl.DSL; import org.jooq.types.YearToSecond; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; +import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord; import de.jottyfan.timetrack.db.done.tables.records.TOvertimeRecord; import de.jottyfan.timetrack.db.done.tables.records.TRequiredWorktimeRecord; import de.jottyfan.timetrack.modules.done.model.DaysumBean; @@ -295,4 +298,22 @@ public class DoneRepository { LOGGER.trace(sql); sql.execute(); } + + /** + * update the field only + * + * @param fkDone the ID + * @param value the value + * @param tableField the field + */ + public void updateField(Integer fkDone, Integer value, TableField tableField) { + UpdateConditionStep sql = jooq + // @formatter:off + .update(T_DONE) + .set(tableField, value) + .where(T_DONE.PK.eq(fkDone)); + // @formatter:on + LOGGER.trace(sql); + sql.execute(); + } } 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 25e05ea..42c8fcf 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java +++ b/src/main/java/de/jottyfan/timetrack/modules/done/DoneService.java @@ -1,5 +1,7 @@ package de.jottyfan.timetrack.modules.done; +import static de.jottyfan.timetrack.db.done.Tables.T_DONE; + import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; @@ -327,4 +329,16 @@ public class DoneService { } repository.addSlotRange(minutes, username, reason, days); } + + public void updateField(Integer fkDone, String field, Integer value) { + if ("project".equals(field)) { + repository.updateField(fkDone, value, T_DONE.FK_PROJECT); + } else if ("module".equals(field)) { + repository.updateField(fkDone, value, T_DONE.FK_MODULE); + } else if ("job".equals(field)) { + repository.updateField(fkDone, value, T_DONE.FK_JOB); + } else { + LOGGER.error("field {} not supported yet", field); + } + } } diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index c1ab301..babbc5c 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -75,6 +75,17 @@
+ @@ -108,15 +119,24 @@ - - - + + +
- - - - - - + + + + + +