Merge pull request #178 from Kitzanos/re-assign-application-changes-prod

Cherry-pick (Updated code for re-assigned application)
This commit is contained in:
Rinaldo
2025-01-23 16:02:43 +01:00
committed by GitHub

View File

@@ -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<ApplicationEvaluationEntity> 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);