Added contract object to response of assigned application pagination API

This commit is contained in:
rajesh
2025-11-05 17:46:58 +05:30
parent 2bb63cd90a
commit 38fb338cb2
4 changed files with 32 additions and 10 deletions

View File

@@ -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<MultipartFile> contractDocuments, ApplicationContractRequest applicationContractRequest, UserEntity user) {
ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationId);
Optional<AssignedApplicationsEntity> 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<DocumentResponseBean> 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<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();

View File

@@ -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;
}

View File

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

View File

@@ -23,6 +23,7 @@ public class AssignedApplicationViewResponse extends BaseBean {
private String companyName;
private String assignedUserName;
private List<EmailSendResponse> emailSendResponse;
private ApplicationContractResponse contract;
}