feat(#4): Add comparison for versions, refactor version restoring
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.betriebsratkanzlei.legalconsenthub.application_form
|
||||
|
||||
import com.betriebsratkanzlei.legalconsenthub.application_form_version.ApplicationFormVersion
|
||||
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSection
|
||||
import com.betriebsratkanzlei.legalconsenthub.user.User
|
||||
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus
|
||||
@@ -30,6 +31,8 @@ class ApplicationForm(
|
||||
var name: String = "",
|
||||
@OneToMany(mappedBy = "applicationForm", cascade = [CascadeType.ALL], orphanRemoval = true)
|
||||
var formElementSections: MutableList<FormElementSection> = mutableListOf(),
|
||||
@OneToMany(mappedBy = "applicationForm", cascade = [CascadeType.ALL], orphanRemoval = true)
|
||||
var versions: MutableList<ApplicationFormVersion> = mutableListOf(),
|
||||
@Column(nullable = false)
|
||||
var isTemplate: Boolean,
|
||||
var organizationId: String = "",
|
||||
|
||||
@@ -56,6 +56,7 @@ class ApplicationFormService(
|
||||
}
|
||||
|
||||
fun updateApplicationForm(applicationFormDto: ApplicationFormDto): ApplicationForm {
|
||||
val existingApplicationForm = getApplicationFormById(applicationFormDto.id)
|
||||
val applicationForm = applicationFormMapper.toApplicationForm(applicationFormDto)
|
||||
val updatedApplicationForm: ApplicationForm
|
||||
|
||||
@@ -66,7 +67,9 @@ class ApplicationFormService(
|
||||
}
|
||||
|
||||
val currentUser = userService.getCurrentUser()
|
||||
versionService.createVersion(updatedApplicationForm, currentUser)
|
||||
if (versionService.hasChanges(existingApplicationForm, updatedApplicationForm)) {
|
||||
versionService.createVersion(updatedApplicationForm, currentUser)
|
||||
}
|
||||
|
||||
return updatedApplicationForm
|
||||
}
|
||||
|
||||
@@ -47,6 +47,15 @@ class ApplicationFormVersionService(
|
||||
return versionRepository.save(version)
|
||||
}
|
||||
|
||||
fun hasChanges(
|
||||
existingForm: ApplicationForm,
|
||||
newForm: ApplicationForm,
|
||||
): Boolean {
|
||||
val existingSnapshot = createSnapshot(existingForm)
|
||||
val newSnapshot = createSnapshot(newForm)
|
||||
return existingSnapshot != newSnapshot
|
||||
}
|
||||
|
||||
fun getVersionsByApplicationFormId(applicationFormId: UUID): List<ApplicationFormVersion> =
|
||||
versionRepository.findByApplicationFormIdOrderByVersionNumberDesc(applicationFormId)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user