From 15eea97fe503e56a3d4f76ba6a0441d5388a3a01 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 23 Jan 2025 18:51:31 +0530 Subject: [PATCH] Updated code for create assigned application --- .../dao/AssignedApplicationsDao.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index cc281df7..f9a3476f 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -8,7 +8,6 @@ import net.gepafin.tendermanagement.entities.ApplicationEntity; import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity; import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity; import net.gepafin.tendermanagement.entities.CompanyEntity; -import net.gepafin.tendermanagement.entities.FaqEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; @@ -80,8 +79,13 @@ public class AssignedApplicationsDao { log.info("Assigning application to pre-Instructor with details: {}", applicationId, userId); AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); - if (assignedApplications != null) { + if (assignedApplications != null && assignedApplications.getUserId().equals(userId)) { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_ASSIGNED)); + } else if(assignedApplications != null) { + assignedApplications = reassignApplication(userId, assignedByUser, assignedApplications); + AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignedApplications); + log.info("Application re-assigned succesfully {}", assignApplicationToInstructorResponse); + return assignApplicationToInstructorResponse; } ApplicationEntity application = applicationService.validateApplication(applicationId); @@ -107,6 +111,30 @@ public class AssignedApplicationsDao { return assignApplicationToInstructorResponse; } + private AssignedApplicationsEntity reassignApplication(Long userId, UserEntity assignedByUser, + AssignedApplicationsEntity assignedApplication) { + + AssignedApplicationsEntity oldAssignedApplicationEntity = Utils.getClonedEntityForData(assignedApplication); + + setIfUpdated(assignedApplication::getAssignedBy, assignedApplication::setAssignedBy, assignedByUser.getId()); + setIfUpdated(assignedApplication::getUserId, assignedApplication::setUserId, userId); + assignedApplication.setAssignedAt(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); + Optional entityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplication.getId()); + if(entityOptional.isPresent()) { + ApplicationEvaluationEntity oldApplicationEvaluationEntity = Utils.getClonedEntityForData(entityOptional.get()); + setIfUpdated(entityOptional.get()::getUserId, entityOptional.get()::setUserId, userId); + applicationEvaluationRepository.save(entityOptional.get()); + /** This code is responsible for adding a version history log for the "Create Application" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationEvaluationEntity).newData(entityOptional.get()).build()); + + }; + assignedApplication = assignedApplicationsRepository.save(assignedApplication); + /** This code is responsible for adding a version history log for the "Create Application" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAssignedApplicationEntity).newData(assignedApplication).build()); + + return assignedApplication; + } + public AssignedApplicationsEntity createAssignmentEntity(ApplicationEntity application, Long userId, UserEntity assignedByUser, AssignedApplicationsRequest assignedApplicationsRequest) { AssignedApplicationsEntity assignApplication = new AssignedApplicationsEntity(); assignApplication.setApplication(application);