Updated application contract flow

This commit is contained in:
rajesh
2025-11-13 16:04:14 +05:30
parent 53a9f2ae05
commit 57fcbf15ce
6 changed files with 100 additions and 101 deletions

View File

@@ -65,7 +65,7 @@ public class ApplicationContractDao {
@Autowired
private AssignedApplicationsRepository assignedApplicationsRepository;
public ApplicationContractResponse createApplicationContract(Long applicationId, List<MultipartFile> contractDocuments, ApplicationContractRequest applicationContractRequest, UserEntity user) {
public ApplicationContractResponse createApplicationContract(Long applicationId, List<MultipartFile> contractDocuments,UserEntity user) {
ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationId);
Optional<AssignedApplicationsEntity> optionalAssignedApplicationsEntity=assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationEntity.getId());
AssignedApplicationsEntity assignedApplicationsEntity=optionalAssignedApplicationsEntity.get();
@@ -73,19 +73,17 @@ public class ApplicationContractDao {
if (Boolean.FALSE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.APPROVED.getValue()))) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.APPLICATION_NOT_APPROVED));
}
if (applicationContractRequest.getSubject() == null || applicationContractRequest.getText() == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.SUBJECT_AND_BODY_REQUIRED));
}
ApplicationEntity oldApplicationData = Utils.getClonedEntityForData(applicationEntity);
ApplicationContractEntity existingApplicationContractEntity = applicationContractRepository.findByApplicationIdAndIsDeletedFalse(applicationId);
if (existingApplicationContractEntity != null) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.APPLICATION_CONTRACT_ALREADY_EXIST));
}
ApplicationContractEntity applicationContractEntity = createApplicationContractEntity(applicationContractRequest, user, applicationEntity);
ApplicationContractEntity applicationContractEntity = createApplicationContractEntity(user, applicationEntity);
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(applicationContractEntity).build());
List<DocumentResponseBean> documentResponseBeans = setContractDocuments(contractDocuments, user, applicationContractEntity);
applicationEntity.setStatus(ApplicationStatusTypeEnum.AWAITING_CONTRACT.getValue());
assignedApplicationsEntity.setStatus(AssignedApplicationEnum.AWAITING_CONTRACT.getValue());
List<DocumentResponseBean> documentResponseBeans = setBeneficiaryContractDocuments(contractDocuments, user, applicationContractEntity);
applicationEntity.setStatus(ApplicationStatusTypeEnum.CONTRACT_SIGNED.getValue());
assignedApplicationsEntity.setStatus(AssignedApplicationEnum.CONTRACT_SIGNED.getValue());
applicationContractEntity.setCompletionDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
applicationRepository.save(applicationEntity);
assignedApplicationsRepository.save(assignedApplicationsEntity);
loggingUtil.addVersionHistory(
@@ -93,18 +91,25 @@ public class ApplicationContractDao {
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,applicationEntity.getCall().getName());
Map<String, String> placeHolders = new HashMap<>();
placeHolders.put("{{call_name}}", applicationEntity.getCall().getName());
String protocolNumber = applicationEntity.getProtocol().getExternalProtocolNumber();
if (protocolNumber == null) {
protocolNumber = String.valueOf(applicationEntity.getProtocol().getProtocolNumber());
}
placeHolders.put("{{protocol_number}}", protocolNumber);
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationDao.validateApplicationEvaluation(applicationEntity.getApplicationEvaluationId());
notificationDao.sendNotificationToInstructor(placeHolders, applicationEvaluationEntity, NotificationTypeEnum.CONTRACT_UPLOAD);
return createApplicationContractResponse(applicationContractEntity, null, documentResponseBeans,applicationEntity.getCall().getName());
}
private ApplicationContractResponse createApplicationContractResponse(ApplicationContractEntity applicationContractEntity, List<DocumentResponseBean> instructorDocuments, List<DocumentResponseBean> beneficiaryDocuments,String callName) {
ApplicationContractResponse applicationContractResponse = new ApplicationContractResponse();
applicationContractResponse.setId(applicationContractEntity.getId());
applicationContractResponse.setText(applicationContractEntity.getText());
applicationContractResponse.setSubject(applicationContractEntity.getSubject());
applicationContractResponse.setInstructorId(applicationContractEntity.getInstructorId());
applicationContractResponse.setStatus(ApplicationContractStatusEnum.valueOf(applicationContractEntity.getStatus()));
applicationContractResponse.setInstructorDocuments(instructorDocuments);
applicationContractResponse.setBeneficiaryDocuments(beneficiaryDocuments);
applicationContractResponse.setCompletionDate(applicationContractEntity.getCompletionDate());
applicationContractResponse.setBeneficiaryUserId(applicationContractEntity.getBeneficiaryUserId());
@@ -126,15 +131,13 @@ public class ApplicationContractDao {
return documentResponseBeans;
}
private ApplicationContractEntity createApplicationContractEntity(ApplicationContractRequest applicationContractRequest, UserEntity user, ApplicationEntity applicationEntity) {
private ApplicationContractEntity createApplicationContractEntity(UserEntity user, ApplicationEntity applicationEntity) {
ApplicationContractEntity applicationContractEntity = new ApplicationContractEntity();
applicationContractEntity.setSubject(applicationContractRequest.getSubject());
applicationContractEntity.setText(applicationContractRequest.getText());
applicationContractEntity.setApplicationId(applicationEntity.getId());
applicationContractEntity.setInstructorId(user.getId());
applicationContractEntity.setIsDeleted(Boolean.FALSE);
applicationContractEntity.setApplicationId(applicationEntity.getId());
applicationContractEntity.setStatus(ApplicationContractStatusEnum.DRAFT.getValue());
applicationContractEntity.setStatus(ApplicationContractStatusEnum.SIGNED.getValue());
applicationContractEntity.setBeneficiaryUserId(applicationEntity.getUserId());
applicationContractRepository.save(applicationContractEntity);
return applicationContractEntity;
@@ -147,40 +150,40 @@ public class ApplicationContractDao {
return new ArrayList<>();
}
public ApplicationContractResponse updateApplicationContract(Long applicationContractId, List<MultipartFile> beneficiaryContractDocuments, UserEntity user) {
ApplicationContractEntity applicationContractEntity = validateApplicationContract(applicationContractId);
ApplicationContractEntity oldApplicationContract = Utils.getClonedEntityForData(applicationContractEntity);
applicationContractEntity.setCompletionDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
applicationContractEntity.setStatus(ApplicationContractStatusEnum.SIGNED.getValue());
List<DocumentResponseBean> beneficiaryContractDocuments1 = setBeneficiaryContractDocuments(beneficiaryContractDocuments, user, applicationContractEntity);
List<DocumentResponseBean> documentResponseBeans = applicationAmendmentRequestDao.getDocumentResponseBean(applicationContractEntity.getInstructorDocument());
loggingUtil.addVersionHistory(
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationContract).newData(applicationContractEntity).build());
ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationContractEntity.getApplicationId());
ApplicationEntity oldApplicationData = Utils.getClonedEntityForData(applicationEntity);
Optional<AssignedApplicationsEntity> 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<String, String> placeHolders = new HashMap<>();
placeHolders.put("{{call_name}}", applicationEntity.getCall().getName());
String protocolNumber = applicationEntity.getProtocol().getExternalProtocolNumber();
if (protocolNumber == null) {
protocolNumber = String.valueOf(applicationEntity.getProtocol().getProtocolNumber());
}
placeHolders.put("{{protocol_number}}", protocolNumber);
notificationDao.sendNotificationToInstructor(placeHolders, applicationEvaluationEntity, NotificationTypeEnum.CONTRACT_UPLOAD);
return createApplicationContractResponse(applicationContractEntity, documentResponseBeans, beneficiaryContractDocuments1,applicationEntity.getCall().getName());
}
// public ApplicationContractResponse updateApplicationContract(Long applicationContractId, List<MultipartFile> beneficiaryContractDocuments, UserEntity user) {
// ApplicationContractEntity applicationContractEntity = validateApplicationContract(applicationContractId);
// ApplicationContractEntity oldApplicationContract = Utils.getClonedEntityForData(applicationContractEntity);
// applicationContractEntity.setCompletionDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
// applicationContractEntity.setStatus(ApplicationContractStatusEnum.SIGNED.getValue());
// List<DocumentResponseBean> beneficiaryContractDocuments1 = setBeneficiaryContractDocuments(beneficiaryContractDocuments, user, applicationContractEntity);
// List<DocumentResponseBean> documentResponseBeans = applicationAmendmentRequestDao.getDocumentResponseBean(applicationContractEntity.getInstructorDocument());
// loggingUtil.addVersionHistory(
// VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationContract).newData(applicationContractEntity).build());
// ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationContractEntity.getApplicationId());
// ApplicationEntity oldApplicationData = Utils.getClonedEntityForData(applicationEntity);
// Optional<AssignedApplicationsEntity> 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<String, String> placeHolders = new HashMap<>();
// placeHolders.put("{{call_name}}", applicationEntity.getCall().getName());
// String protocolNumber = applicationEntity.getProtocol().getExternalProtocolNumber();
// if (protocolNumber == null) {
// protocolNumber = String.valueOf(applicationEntity.getProtocol().getProtocolNumber());
// }
// placeHolders.put("{{protocol_number}}", protocolNumber);
// notificationDao.sendNotificationToInstructor(placeHolders, applicationEvaluationEntity, NotificationTypeEnum.CONTRACT_UPLOAD);
//
// return createApplicationContractResponse(applicationContractEntity, documentResponseBeans, beneficiaryContractDocuments1,applicationEntity.getCall().getName());
// }
public ApplicationContractEntity validateApplicationContract(Long applicationContractId) {
ApplicationContractEntity applicationContractEntity = applicationContractRepository.findByIdAndIsDeletedFalse(applicationContractId);
@@ -198,8 +201,11 @@ public class ApplicationContractDao {
String contractDocumentId = contractDocumentIds.stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
ApplicationContractEntity oldApplicationContractEntity = Utils.getClonedEntityForData(applicationContractEntity);
applicationContractEntity.setBeneficiaryDocument(contractDocumentId);
applicationContractRepository.save(applicationContractEntity);
loggingUtil.addVersionHistory(
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationContractEntity).newData(applicationContractEntity).build());
return documentResponseBeans;
}
@@ -227,7 +233,7 @@ public class ApplicationContractDao {
public List<ApplicationContractResponse> getContractByBeneficiaryUserId(UserEntity user) {
List<ApplicationContractEntity> applicationContractEntities = applicationContractRepository.findByBeneficiaryUserIdAndStatusAndIsDeletedFalse(user.getId(), ApplicationContractStatusEnum.DRAFT.getValue());
List<ApplicationContractEntity> applicationContractEntities = applicationContractRepository.findByBeneficiaryUserIdAndStatusAndIsDeletedFalse(user.getId(), ApplicationContractStatusEnum.SIGNED.getValue());
if (applicationContractEntities.isEmpty()) {
return null;
}