diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AuditFormDaoImpl.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AuditFormDaoImpl.java index 008fcf22..862b92c6 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AuditFormDaoImpl.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AuditFormDaoImpl.java @@ -7,9 +7,11 @@ import java.util.Map; import java.util.Optional; import dao.container.FormDaoImpl; +import org.jooq.DSLContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import ru.micord.ervu.account_applications.component.dao.AuditDao; +import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationList; import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.security.model.UserSession; import utils.DateTimeUtil; @@ -17,6 +19,7 @@ import utils.DateTimeUtil; import ru.cg.webbpm.modules.database.api.bean.TableFieldData; import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import static ru.micord.ervu.account_applications.enums.ApplicationStatus.CREATED; import static ru.micord.ervu.account_applications.enums.ApplicationStatus.SENT; /** @@ -43,10 +46,22 @@ public class AuditFormDaoImpl extends FormDaoImpl { .filter(data -> data.getField().getName().equals("user_application_list_id")) .map(data -> (Long) data.getData()) .findAny(); + if (status.isPresent() && appListId.isPresent() && !status.get().equals(SENT.name())) { - auditDao.insert(appListId.get(), userSession.name(), userSession.userId(), status.get(), Timestamp.valueOf( - DateTimeUtil.dateToLocalDateTimeUtc(new Date()))); + Timestamp timestamp = status.get().equals(CREATED.name()) + ? getStartDateByApplicationListId(appListId.get()) + : Timestamp.valueOf(DateTimeUtil.dateToLocalDateTimeUtc(new Date())); + + auditDao.insert(appListId.get(), userSession.name(), userSession.userId(), status.get(), timestamp); } return tableFieldData; } + + private Timestamp getStartDateByApplicationListId(Long appListId) { + return getDsl() + .select(UserApplicationList.USER_APPLICATION_LIST.START_DATE) + .from(UserApplicationList.USER_APPLICATION_LIST) + .where(UserApplicationList.USER_APPLICATION_LIST.USER_APPLICATION_LIST_ID.eq(appListId)) + .fetchOne(UserApplicationList.USER_APPLICATION_LIST.START_DATE); + } } diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/enums/ApplicationStatus.java b/backend/src/main/java/ru/micord/ervu/account_applications/enums/ApplicationStatus.java index 9e522257..443a2a65 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/enums/ApplicationStatus.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/enums/ApplicationStatus.java @@ -6,5 +6,6 @@ package ru.micord.ervu.account_applications.enums; public enum ApplicationStatus { AGREED, ACCEPTED, - SENT + SENT, + CREATED }