diff --git a/src/main/java/org/tb/chicoree/ChicoreeSessionStore.java b/src/main/java/org/tb/chicoree/ChicoreeSessionStore.java index f9a8ad673..5a500ada4 100644 --- a/src/main/java/org/tb/chicoree/ChicoreeSessionStore.java +++ b/src/main/java/org/tb/chicoree/ChicoreeSessionStore.java @@ -4,6 +4,7 @@ import static java.util.Locale.GERMAN; import static org.tb.common.util.DateUtils.format; +import java.io.Serializable; import java.time.Duration; import java.time.LocalDate; import java.util.Collections; @@ -12,6 +13,7 @@ import java.util.Optional; import java.util.stream.Collectors; import javax.servlet.http.HttpSession; +import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.tb.common.OptionItem; @@ -111,6 +113,14 @@ public void setCustomerorder(long customerorderId, List orders) { httpSession.setAttribute("suborderOptions", suborderOptions); } + public void setLastStoredTimereport(TimereportData timereportData) { + httpSession.setAttribute("timereportData", timereportData); + } + + public Optional getLastStoredTimereport() { + return Optional.ofNullable((TimereportData) httpSession.getAttribute("timereportData")); + } + public void invalidate() { httpSession.removeAttribute("greeting"); httpSession.removeAttribute("loginEmployee"); @@ -128,6 +138,13 @@ public void invalidate() { httpSession.removeAttribute("overtimeStatus"); httpSession.removeAttribute("orderOptions"); httpSession.removeAttribute("suborderOptions"); + httpSession.removeAttribute("timereportData"); + } + + @Getter + @RequiredArgsConstructor + public static class TimereportData implements Serializable { + private final String orderId, suborderId; } } diff --git a/src/main/java/org/tb/chicoree/EditTimereportAction.java b/src/main/java/org/tb/chicoree/EditTimereportAction.java index bead2734a..81cfdd23a 100644 --- a/src/main/java/org/tb/chicoree/EditTimereportAction.java +++ b/src/main/java/org/tb/chicoree/EditTimereportAction.java @@ -39,9 +39,9 @@ protected ActionForward executeAuthenticated(ActionMapping mapping, TimereportFo // add new String date = request.getParameter("date"); if(date != null && !date.isBlank() && validateDate(date)) { - form.initNew(parse(date)); + form.initNew(parse(date), chicoreeSessionStore); } else { - form.initNew(today()); + form.initNew(today(), chicoreeSessionStore); } } diff --git a/src/main/java/org/tb/chicoree/StoreTimereportAction.java b/src/main/java/org/tb/chicoree/StoreTimereportAction.java index f20c6764e..d2baafa32 100644 --- a/src/main/java/org/tb/chicoree/StoreTimereportAction.java +++ b/src/main/java/org/tb/chicoree/StoreTimereportAction.java @@ -1,18 +1,16 @@ package org.tb.chicoree; -import static org.tb.common.util.DateUtils.parse; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.stereotype.Component; +import org.tb.chicoree.ChicoreeSessionStore.TimereportData; import org.tb.common.exception.AuthorizationException; import org.tb.common.exception.BusinessRuleException; import org.tb.common.exception.InvalidDataException; import org.tb.common.struts.LoginRequiredAction; -import org.tb.common.util.DateUtils; import org.tb.dailyreport.service.TimereportService; import org.tb.order.persistence.EmployeeorderDAO; @@ -63,6 +61,7 @@ protected ActionForward executeAuthenticated(ActionMapping mapping, TimereportFo addToMessages(request, e.getErrorCode()); return mapping.getInputForward(); } + chicoreeSessionStore.setLastStoredTimereport(new TimereportData(form.getOrderId(), form.getSuborderId())); chicoreeSessionStore.setDashboardDate(form.getDateTyped()); return mapping.findForward("success"); } diff --git a/src/main/java/org/tb/chicoree/TimereportForm.java b/src/main/java/org/tb/chicoree/TimereportForm.java index ce84e8d66..a12594ad1 100644 --- a/src/main/java/org/tb/chicoree/TimereportForm.java +++ b/src/main/java/org/tb/chicoree/TimereportForm.java @@ -106,7 +106,7 @@ public void init(TimereportDTO timereport) { comment = timereport.getTaskdescription(); } - public void initNew(LocalDate date) { + public void initNew(LocalDate date, ChicoreeSessionStore chicoreeSessionStore) { id = null; this.date = format(date); orderId = ""; @@ -114,6 +114,10 @@ public void initNew(LocalDate date) { hours = null; minutes = null; comment = null; + chicoreeSessionStore.getLastStoredTimereport().ifPresent(lastTimereportForm -> { + orderId = lastTimereportForm.getOrderId(); + suborderId = lastTimereportForm.getSuborderId(); + }); } }