From b220f14c4ce52a815eccbec0dc1a4e36b653c5fa Mon Sep 17 00:00:00 2001
From: Lene Wasskog <lene.wasskog@nibio.no>
Date: Fri, 16 May 2025 10:46:01 +0200
Subject: [PATCH] feat: Set last modified fields at first save

This is also done when posting from app
---
 .../ObservationTimeSeriesController.java      | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
index 1c2aca5f..d2a3acdf 100644
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationTimeSeriesController.java
@@ -156,20 +156,21 @@ public class ObservationTimeSeriesController extends HttpServlet {
                         SessionLocaleUtil.getI18nBundle(request),
                         getServletContext()
                     );
-                    Integer observationTimeSeriesId =
-                        formValidation.getFormField("observationTimeSeriesId").getValueAsInteger();
-                    if (observationTimeSeriesId > 0) {
-                        observationTimeSeries = em.find(ObservationTimeSeries.class, observationTimeSeriesId);
-                    }
                     if (formValidation.isValid()) {
+                        observationTimeSeries.setUserId(user.getUserId()); // Should only be set for new time series
                         Long observationCount = 0L;
-                        observationTimeSeries.setUserId(user.getUserId());
-                        if(observationTimeSeriesId >= 0) {
-                            observationTimeSeries.setLastModifiedBy(user.getUserId());
-                            observationTimeSeries.setLastModified(new Date());
+
+                        Integer observationTimeSeriesId =
+                            formValidation.getFormField("observationTimeSeriesId").getValueAsInteger();
+                        if (observationTimeSeriesId > 0) {
+                            // Fetch existing time series if id > 0
+                            observationTimeSeries = em.find(ObservationTimeSeries.class, observationTimeSeriesId);
                             observationCount = em.createNamedQuery("Observation.findCountByObservationTimeSeries", Long.class)
                                 .setParameter("observationTimeSeries", observationTimeSeries).getSingleResult();
                         }
+                        observationTimeSeries.setLastModifiedBy(user.getUserId());
+                        observationTimeSeries.setLastModified(new Date());
+
                         // Only observation time series without observations can set the crop, pest and location
                         if (observationCount == 0) {
                             observationTimeSeries.setOrganism(em.find(Organism.class, formValidation.getFormField("organismId").getValueAsInteger()));
-- 
GitLab