diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationContractDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationContractDao.java index 52e29bd5..2f31d2dd 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationContractDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationContractDao.java @@ -3,10 +3,7 @@ package net.gepafin.tendermanagement.dao; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; -import net.gepafin.tendermanagement.entities.ApplicationContractEntity; -import net.gepafin.tendermanagement.entities.ApplicationEntity; -import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity; -import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.enums.*; import net.gepafin.tendermanagement.model.request.ApplicationContractRequest; import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; @@ -14,6 +11,7 @@ import net.gepafin.tendermanagement.model.response.ApplicationContractResponse; import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.repositories.ApplicationContractRepository; import net.gepafin.tendermanagement.repositories.ApplicationRepository; +import net.gepafin.tendermanagement.repositories.AssignedApplicationsRepository; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.LoggingUtil; @@ -25,10 +23,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Component @@ -67,9 +62,14 @@ public class ApplicationContractDao { @Autowired private UserService userService; + @Autowired + private AssignedApplicationsRepository assignedApplicationsRepository; + public ApplicationContractResponse createApplicationContract(Long applicationId, List contractDocuments, ApplicationContractRequest applicationContractRequest, UserEntity user) { ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationId); - + Optional optionalAssignedApplicationsEntity=assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationEntity.getId()); + AssignedApplicationsEntity assignedApplicationsEntity=optionalAssignedApplicationsEntity.get(); + AssignedApplicationsEntity oldAssignedApplicationEntity=Utils.getClonedEntityForData(assignedApplicationsEntity); if (Boolean.FALSE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.APPROVED.getValue()))) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.APPLICATION_NOT_APPROVED)); } @@ -85,9 +85,13 @@ public class ApplicationContractDao { loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(applicationContractEntity).build()); List documentResponseBeans = setContractDocuments(contractDocuments, user, applicationContractEntity); applicationEntity.setStatus(ApplicationStatusTypeEnum.AWAITING_CONTRACT.getValue()); + assignedApplicationsEntity.setStatus(AssignedApplicationEnum.AWAITING_CONTRACT.getValue()); applicationRepository.save(applicationEntity); + assignedApplicationsRepository.save(assignedApplicationsEntity); loggingUtil.addVersionHistory( VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationData).newData(applicationEntity).build()); + loggingUtil.addVersionHistory( + VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAssignedApplicationEntity).newData(assignedApplicationsEntity).build()); UserEntity userEntity = userService.validateUser(applicationEntity.getUserId()); emailNotificationDao.sendEmailForApplicationContracted(applicationEntity, applicationContractEntity, userEntity); return createApplicationContractResponse(applicationContractEntity, documentResponseBeans, null); @@ -152,11 +156,18 @@ public class ApplicationContractDao { VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationContract).newData(applicationContractEntity).build()); ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationContractEntity.getApplicationId()); ApplicationEntity oldApplicationData = Utils.getClonedEntityForData(applicationEntity); + Optional optionalAssignedApplicationsEntity=assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationEntity.getId()); + AssignedApplicationsEntity assignedApplicationsEntity=optionalAssignedApplicationsEntity.get(); + AssignedApplicationsEntity oldAssignedApplicationEntity=Utils.getClonedEntityForData(assignedApplicationsEntity); ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationDao.validateApplicationEvaluation(applicationEntity.getApplicationEvaluationId()); applicationEntity.setStatus(ApplicationStatusTypeEnum.CONTRACT_SIGNED.getValue()); + assignedApplicationsEntity.setStatus(AssignedApplicationEnum.CONTRACT_SIGNED.getValue()); applicationRepository.save(applicationEntity); + assignedApplicationsRepository.save(assignedApplicationsEntity); loggingUtil.addVersionHistory( VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationData).newData(applicationEntity).build()); + loggingUtil.addVersionHistory( + VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAssignedApplicationEntity).newData(assignedApplicationsEntity).build()); Map placeHolders = new HashMap<>(); placeHolders.put("{{call_name}}", applicationEntity.getCall().getName()); String protocolNumber = applicationEntity.getProtocol().getExternalProtocolNumber(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index 1a3c2e05..87c4dafe 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -14,6 +14,7 @@ import net.gepafin.tendermanagement.model.request.ApplicationEvaluationRequest; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.request.UpdateAssignedApplicationRequest; import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; +import net.gepafin.tendermanagement.model.response.ApplicationContractResponse; import net.gepafin.tendermanagement.model.response.AssignedApplicationViewResponse; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; import net.gepafin.tendermanagement.model.response.PageableResponseBean; @@ -82,6 +83,9 @@ public class AssignedApplicationsDao { @Autowired private AssignedApplicationsViewRepository assignedApplicationsViewRepository; + @Autowired + private ApplicationContractDao applicationContractDao; + public AssignedApplicationsResponse createAssignedApplications(Long applicationId, Long userId, UserEntity assignedByUser, AssignedApplicationsRequest assignedApplicationsRequest) { log.info("Assigning application to pre-Instructor with details: {}", applicationId, userId); @@ -492,6 +496,8 @@ public class AssignedApplicationsDao { response.setUpdatedDate(view.getUpdatedDate()); response.setEmailSendResponse(view.getEmailSendResponse()); response.setAssignedUserName(view.getAssignedUserName()); + ApplicationContractResponse applicationContractResponse=applicationContractDao.getContractByApplicationId(response.getApplicationId()); + response.setContract(applicationContractResponse); return response; } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/AssignedApplicationEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/AssignedApplicationEnum.java index be3f6b1a..c0206637 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/AssignedApplicationEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/AssignedApplicationEnum.java @@ -8,7 +8,11 @@ public enum AssignedApplicationEnum { AWAITING("AWAITING"), - CLOSE("CLOSE"); + CLOSE("CLOSE"), + + AWAITING_CONTRACT("AWAITING_CONTRACT"), + + CONTRACT_SIGNED("CONTRACT_SIGNED"); private final String value; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationViewResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationViewResponse.java index 22f00b0d..49271385 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationViewResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationViewResponse.java @@ -23,6 +23,7 @@ public class AssignedApplicationViewResponse extends BaseBean { private String companyName; private String assignedUserName; private List emailSendResponse; + private ApplicationContractResponse contract; }