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