diff --git a/backend/src/main/java/core/entities/timemanager/TaskSerieItem.java b/backend/src/main/java/core/entities/timemanager/TaskSerieItem.java index 3160a78..533a931 100644 --- a/backend/src/main/java/core/entities/timemanager/TaskSerieItem.java +++ b/backend/src/main/java/core/entities/timemanager/TaskSerieItem.java @@ -1,6 +1,7 @@ package core.entities.timemanager; import javax.persistence.*; +import java.util.Objects; @Entity @Table(name = "task_series_items") @@ -61,4 +62,17 @@ public class TaskSerieItem { public void setTask(Task task) { this.task = task; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TaskSerieItem that = (TaskSerieItem) o; + return itemID == that.itemID; + } + + @Override + public int hashCode() { + return Objects.hash(itemID); + } } diff --git a/backend/src/main/java/core/services/TaskSeriesService.java b/backend/src/main/java/core/services/TaskSeriesService.java index 8c5614b..5952dab 100644 --- a/backend/src/main/java/core/services/TaskSeriesService.java +++ b/backend/src/main/java/core/services/TaskSeriesService.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; @Service @@ -65,6 +66,7 @@ public class TaskSeriesService { public void deleteTaskSeriesItem(Task task) { TaskSerieItem item = task.getTaskSerieItem(); TaskSerie taskSerie = task.getTaskSerieItem().getTaskSerie(); + taskSerie.getTasks().remove(item); task.setTaskSerieItem(null); taskSerieItemRepository.delete(item); if(taskSerie.getTasks().isEmpty()) { @@ -73,9 +75,27 @@ public class TaskSeriesService { } taskSerie.getTasks().clear(); taskSeriesRepository.delete(taskSerie); + } else { + repearIndexing(taskSerie); } } + private void repearIndexing(TaskSerie taskSerie) { + taskSerie.getTasks().sort(Comparator.comparingInt(TaskSerieItem::getSeriesIndex)); + List updatedItems = new ArrayList<>(); + int currentIndex = 1; + for(TaskSerieItem taskSerieItem : taskSerie.getTasks()) { + if(taskSerieItem.getSeriesIndex() != currentIndex) { + taskSerieItem.setSeriesIndex(currentIndex); + updatedItems.add(taskSerieItem); + } + + currentIndex++; + } + + taskSerieItemRepository.saveAll(updatedItems); + } + public void deleteTaskSerieByTaskgroup(Taskgroup taskgroup) { taskSerieItemRepository.deleteByTaskgroup(taskgroup); taskSeriesRepository.deleteUnreferenced();