Resolved conflict of PR Updated Application Rejection Flow
This commit is contained in:
@@ -621,6 +621,7 @@ public class GepafinConstant {
|
|||||||
public static final String SUBJECT = "subject";
|
public static final String SUBJECT = "subject";
|
||||||
public static final List<String> MANUAL_EMAIL_KEYS = Arrays.asList(SUBJECT, MESSAGE);
|
public static final List<String> MANUAL_EMAIL_KEYS = Arrays.asList(SUBJECT, MESSAGE);
|
||||||
public static final String INVALID_EMAIL_JSON = "invalid.email.json";
|
public static final String INVALID_EMAIL_JSON = "invalid.email.json";
|
||||||
|
public static final String MORE_FIELDS_REQUIRED_FOR_REJECTION="more.fields.required";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -604,6 +604,8 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
String body = emailContent.getBody();
|
String body = emailContent.getBody();
|
||||||
response.setEmailTemplate(body);
|
response.setEmailTemplate(body);
|
||||||
}
|
}
|
||||||
|
response.setAmendmentType(entity.getType());
|
||||||
|
response.setAmendmentDocumentType(entity.getAmendmentDocumentType());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,10 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
@@ -146,6 +148,11 @@ public class ApplicationEvaluationDao {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmailDao emailDao;
|
private EmailDao emailDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DocumentDao documentDao;
|
||||||
|
|
||||||
|
@Value("${default.hub.uuid}")
|
||||||
|
private String defaultHubUuid;
|
||||||
|
|
||||||
private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) {
|
private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) {
|
||||||
|
|
||||||
@@ -182,7 +189,7 @@ public class ApplicationEvaluationDao {
|
|||||||
|
|
||||||
ApplicationEvaluationResponse response = new ApplicationEvaluationResponse();
|
ApplicationEvaluationResponse response = new ApplicationEvaluationResponse();
|
||||||
populateBasicDetails(entity, response);
|
populateBasicDetails(entity, response);
|
||||||
|
ApplicationEntity applicationEntity=entity.getAssignedApplicationsEntity().getApplication();
|
||||||
CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId());
|
CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId());
|
||||||
List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository
|
List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository
|
||||||
.findByCallIdAndLookupDataTypeAndIsDeletedFalse(call.getId(), LookUpDataEntity.LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue());
|
.findByCallIdAndLookupDataTypeAndIsDeletedFalse(call.getId(), LookUpDataEntity.LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue());
|
||||||
@@ -201,10 +208,39 @@ public class ApplicationEvaluationDao {
|
|||||||
List<EvaluationDocumentRequest> allDocs = prepareEvaluationDocumentBeanList(entity);
|
List<EvaluationDocumentRequest> allDocs = prepareEvaluationDocumentBeanList(entity);
|
||||||
setEvaluationDocResponse(response, allDocs);
|
setEvaluationDocResponse(response, allDocs);
|
||||||
setApplicationDetails(response, entity);
|
setApplicationDetails(response, entity);
|
||||||
|
setRejectedDocuments(applicationEntity, response);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setRejectedDocuments(ApplicationEntity applicationEntity, ApplicationEvaluationResponse response) {
|
||||||
|
List<DocumentResponseBean> initialDocumentBeans = new ArrayList<>();
|
||||||
|
String initialDocuments = applicationEntity.getRejectedDocument();
|
||||||
|
|
||||||
|
if (initialDocuments != null && !initialDocuments.trim().isEmpty()) {
|
||||||
|
// Split the comma-separated values and process them
|
||||||
|
List<String> documentIds = Arrays.stream(initialDocuments.split(","))
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(id -> !id.isEmpty())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
initialDocumentBeans.addAll(
|
||||||
|
documentIds.stream()
|
||||||
|
.map(id -> {
|
||||||
|
try {
|
||||||
|
return applicationAmendmentRequestDao.createDocumentResponseBean(id); // Convert to Long
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// Handle invalid document IDs gracefully
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(Objects::nonNull) // Skip null responses
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
response.setRejectedDocument(initialDocumentBeans);
|
||||||
|
}
|
||||||
|
|
||||||
private void setAmendmentDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) {
|
private void setAmendmentDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) {
|
||||||
List<ApplicationAmendmentRequestEntity> amendmentRequests=applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse(entity.getId());
|
List<ApplicationAmendmentRequestEntity> amendmentRequests=applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse(entity.getId());
|
||||||
List<AmendmentDocumentResponseBean> amendmentDocumentResponseBeans=new ArrayList<>();
|
List<AmendmentDocumentResponseBean> amendmentDocumentResponseBeans=new ArrayList<>();
|
||||||
@@ -653,7 +689,7 @@ public class ApplicationEvaluationDao {
|
|||||||
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
||||||
UserEntity user,
|
UserEntity user,
|
||||||
ApplicationEvaluationRequest req,
|
ApplicationEvaluationRequest req,
|
||||||
Long assignedApplicationId) {
|
Long assignedApplicationId, List<MultipartFile> rejectedDocuments) {
|
||||||
|
|
||||||
log.info("Start createOrUpdateApplicationEvaluation: assignedApplicationId={}, userId={}", assignedApplicationId, user.getId());
|
log.info("Start createOrUpdateApplicationEvaluation: assignedApplicationId={}, userId={}", assignedApplicationId, user.getId());
|
||||||
Optional<ApplicationEvaluationEntity> existingEntityOptional =
|
Optional<ApplicationEvaluationEntity> existingEntityOptional =
|
||||||
@@ -741,7 +777,7 @@ public class ApplicationEvaluationDao {
|
|||||||
|
|
||||||
if (status != null) {
|
if (status != null) {
|
||||||
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplications.get();
|
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplications.get();
|
||||||
return updateApplicationEvaluationStatus(application, assignedApplicationsEntity, status);
|
return updateApplicationEvaluationStatus(application, assignedApplicationsEntity, status,rejectedDocuments,req);
|
||||||
} else {
|
} else {
|
||||||
return convertToResponse(entity);
|
return convertToResponse(entity);
|
||||||
}
|
}
|
||||||
@@ -1903,7 +1939,7 @@ public class ApplicationEvaluationDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationEvaluationResponse updateApplicationEvaluationStatus(ApplicationEntity application, AssignedApplicationsEntity assignedApplicationsEntity,
|
public ApplicationEvaluationResponse updateApplicationEvaluationStatus(ApplicationEntity application, AssignedApplicationsEntity assignedApplicationsEntity,
|
||||||
ApplicationStatusForEvaluation newStatus) {
|
ApplicationStatusForEvaluation newStatus, List<MultipartFile> files,ApplicationEvaluationRequest applicationEvaluationRequest) {
|
||||||
|
|
||||||
log.info("Starting updateApplicationEvaluationStatus for applicationId: {}, assignedApplicationId: {}, newStatus: {}",
|
log.info("Starting updateApplicationEvaluationStatus for applicationId: {}, assignedApplicationId: {}, newStatus: {}",
|
||||||
application.getId(), assignedApplicationsEntity.getId(), newStatus);
|
application.getId(), assignedApplicationsEntity.getId(), newStatus);
|
||||||
@@ -1942,17 +1978,17 @@ public class ApplicationEvaluationDao {
|
|||||||
log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
|
log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(newStatus.equals(ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED)) {
|
if(newStatus.equals(ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED)) {
|
||||||
// application.setStatus(newStatus.getValue());
|
application.setStatus(newStatus.getValue());
|
||||||
// log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
|
log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
|
||||||
// emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application,hub,existingEntity);
|
emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application,hub,existingEntity);
|
||||||
// application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||||
// emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
||||||
// responses = List.of(emailSendResponse);
|
responses = List.of(emailSendResponse);
|
||||||
// if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
||||||
// saveEmailSendResponseToEvaluation(emailSendResponse, existingEntity);
|
saveEmailSendResponseToEvaluation(emailSendResponse, existingEntity);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
application = applicationRepository.save(application);
|
application = applicationRepository.save(application);
|
||||||
|
|
||||||
ApplicationEvaluationEntity oldApplicationEvaluation = Utils.getClonedEntityForData(existingEntity);
|
ApplicationEvaluationEntity oldApplicationEvaluation = Utils.getClonedEntityForData(existingEntity);
|
||||||
@@ -1997,10 +2033,28 @@ public class ApplicationEvaluationDao {
|
|||||||
notificationDao.sendNotificationToBeneficiary(application, NotificationTypeEnum.EVALUATION_RESULT);
|
notificationDao.sendNotificationToBeneficiary(application, NotificationTypeEnum.EVALUATION_RESULT);
|
||||||
}
|
}
|
||||||
if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) {
|
if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) {
|
||||||
|
String tipoInammissibilita =null;
|
||||||
|
if(Boolean.TRUE.equals(hub.getUniqueUuid().equals(defaultHubUuid))) {
|
||||||
|
if (applicationEvaluationRequest.getMotivation() == null || applicationEvaluationRequest.getRejectedReason() == null) {
|
||||||
|
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.MORE_FIELDS_REQUIRED_FOR_REJECTION));
|
||||||
|
}
|
||||||
|
if (files != null) {
|
||||||
|
List<DocumentResponseBean> documentResponseBeans = uploadRejectedDocument(user.getId(), files, application);
|
||||||
|
List<Long> rejectedDocumentIds = documentResponseBeans.stream()
|
||||||
|
.map(DocumentResponseBean::getId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
String rejectedDocumentId = rejectedDocumentIds.stream()
|
||||||
|
.map(String::valueOf)
|
||||||
|
.collect(Collectors.joining(","));
|
||||||
|
application.setRejectedDocument(rejectedDocumentId);
|
||||||
|
}
|
||||||
|
tipoInammissibilita=applicationEvaluationRequest.getRejectedReason();
|
||||||
|
application.setRejectedReason(applicationEvaluationRequest.getRejectedReason());
|
||||||
|
}
|
||||||
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||||
application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||||
application = applicationRepository.save(application);
|
application = applicationRepository.save(application);
|
||||||
emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity);
|
emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity,tipoInammissibilita);
|
||||||
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
||||||
responses = List.of(emailSendResponse);
|
responses = List.of(emailSendResponse);
|
||||||
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
||||||
@@ -2083,7 +2137,7 @@ public class ApplicationEvaluationDao {
|
|||||||
return convertToResponse(savedEntity);
|
return convertToResponse(savedEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationFormId, Long assignedApplicationId){
|
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> files, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationFormId, Long assignedApplicationId){
|
||||||
|
|
||||||
log.info("Start createApplicationEvaluation - assignedApplicationId: {}, evaluationFormId: {}", assignedApplicationId, evaluationFormId);
|
log.info("Start createApplicationEvaluation - assignedApplicationId: {}, evaluationFormId: {}", assignedApplicationId, evaluationFormId);
|
||||||
UserEntity user = validator.validateUser(request);
|
UserEntity user = validator.validateUser(request);
|
||||||
@@ -2094,7 +2148,7 @@ public class ApplicationEvaluationDao {
|
|||||||
ApplicationEvaluationRequest req = convertToApplicationEvaluationRequest(applicationEvaluationFormRequestBean);
|
ApplicationEvaluationRequest req = convertToApplicationEvaluationRequest(applicationEvaluationFormRequestBean);
|
||||||
|
|
||||||
// Call the existing method to create or update evaluation
|
// Call the existing method to create or update evaluation
|
||||||
ApplicationEvaluationResponse evaluationResponse = createOrUpdateApplicationEvaluation(user, req, assignedApplicationId);
|
ApplicationEvaluationResponse evaluationResponse = createOrUpdateApplicationEvaluation(user, req, assignedApplicationId,files);
|
||||||
|
|
||||||
ApplicationEvaluationEntity entity = applicationEvaluationService.validateApplicationEvaluation(evaluationResponse.getId());
|
ApplicationEvaluationEntity entity = applicationEvaluationService.validateApplicationEvaluation(evaluationResponse.getId());
|
||||||
|
|
||||||
@@ -2415,7 +2469,7 @@ public class ApplicationEvaluationDao {
|
|||||||
request.setApplicationStatus(formRequestBean.getApplicationStatus());
|
request.setApplicationStatus(formRequestBean.getApplicationStatus());
|
||||||
request.setMotivation(formRequestBean.getMotivation());
|
request.setMotivation(formRequestBean.getMotivation());
|
||||||
request.setAmountAccepted(formRequestBean.getAmountAccepted());
|
request.setAmountAccepted(formRequestBean.getAmountAccepted());
|
||||||
|
request.setRejectedReason(formRequestBean.getRejectedReason());
|
||||||
request.setCriteria(null);
|
request.setCriteria(null);
|
||||||
request.setChecklist(null);
|
request.setChecklist(null);
|
||||||
|
|
||||||
@@ -2625,7 +2679,6 @@ public class ApplicationEvaluationDao {
|
|||||||
log.info("Application status updated to {} for applicationId: {}", ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED, application.getId());
|
log.info("Application status updated to {} for applicationId: {}", ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED, application.getId());
|
||||||
emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application, hub, existingEntity);
|
emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application, hub, existingEntity);
|
||||||
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||||
application.setEmailJson(Utils.convertMapIntoJsonString(applicationRequest.getEmailJson()));
|
|
||||||
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
|
||||||
responses = List.of(emailSendResponse);
|
responses = List.of(emailSendResponse);
|
||||||
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
|
||||||
@@ -2643,5 +2696,11 @@ public class ApplicationEvaluationDao {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
public List<DocumentResponseBean> uploadRejectedDocument(Long userId,List<MultipartFile> files,ApplicationEntity application){
|
||||||
|
if(files!=null) {
|
||||||
|
return documentDao.uploadFiles(userId, files, application.getId(), DocumentSourceTypeEnum.APPLICATION, DocumentTypeEnum.DOCUMENT);
|
||||||
|
}
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class AssignedApplicationsDao {
|
|||||||
|
|
||||||
UserEntity user = userService.validateUser(userId);
|
UserEntity user = userService.validateUser(userId);
|
||||||
AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest);
|
AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest);
|
||||||
applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, new ApplicationEvaluationRequest(), assignment.getId());
|
applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, new ApplicationEvaluationRequest(), assignment.getId(),null);
|
||||||
AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment);
|
AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment);
|
||||||
log.info("Application assigned succesfully {}", assignApplicationToInstructorResponse);
|
log.info("Application assigned succesfully {}", assignApplicationToInstructorResponse);
|
||||||
return assignApplicationToInstructorResponse;
|
return assignApplicationToInstructorResponse;
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
|
|||||||
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
|
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
|
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
|
|
||||||
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
|
import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
|
||||||
import net.gepafin.tendermanagement.repositories.CommunicationRepository;
|
import net.gepafin.tendermanagement.repositories.CommunicationRepository;
|
||||||
@@ -117,7 +116,7 @@ public class CommunicationDao {
|
|||||||
return "Deleted Comment Successfully.";
|
return "Deleted Comment Successfully.";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationAmendmentResponse getAmendmentComments(Long amendmentId) {
|
public List<CommunicationResponseBean> getAmendmentComments(Long amendmentId) {
|
||||||
|
|
||||||
ApplicationAmendmentRequestEntity amendmentData = applicationAmendmentRequestService.validateApplicationAmendmentRequest(amendmentId);
|
ApplicationAmendmentRequestEntity amendmentData = applicationAmendmentRequestService.validateApplicationAmendmentRequest(amendmentId);
|
||||||
List<CommunicationEntity> commentsList = communicationRepository.findByApplicationAmendmentRequestIdAndIsDeletedFalse(amendmentId);
|
List<CommunicationEntity> commentsList = communicationRepository.findByApplicationAmendmentRequestIdAndIsDeletedFalse(amendmentId);
|
||||||
@@ -130,7 +129,7 @@ public class CommunicationDao {
|
|||||||
CommunicationResponseBean communicationResponseBean=convertToCommunicationResponseBean(communicationEntity,communicationDocumentBeans);
|
CommunicationResponseBean communicationResponseBean=convertToCommunicationResponseBean(communicationEntity,communicationDocumentBeans);
|
||||||
communicationResponseBeans.add(communicationResponseBean);
|
communicationResponseBeans.add(communicationResponseBean);
|
||||||
}
|
}
|
||||||
return new ApplicationAmendmentResponse(amendmentData, communicationResponseBeans);
|
return communicationResponseBeans;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommunicationResponseBean updateAmendmentComment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) {
|
public CommunicationResponseBean updateAmendmentComment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) {
|
||||||
|
|||||||
@@ -158,6 +158,13 @@ public class EmailNotificationDao {
|
|||||||
: new HashSet<>(documentIds);
|
: new HashSet<>(documentIds);
|
||||||
documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds);
|
documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds);
|
||||||
}
|
}
|
||||||
|
if(Boolean.TRUE.equals(userEntity.getHub().getUniqueUuid().equals(defaultHubUuid)) && Boolean.TRUE.equals(systemEmailTemplateResponse.getEmailScenario().equals(EmailScenarioTypeEnum.APPLICATION_REJECTED))) {
|
||||||
|
List<Long> documentIds=applicationDao.validateDocumentIds(applicationEntity.getRejectedDocument());
|
||||||
|
Set<Long> setOfDocumentIds = (documentIds == null)
|
||||||
|
? Collections.emptySet()
|
||||||
|
: new HashSet<>(documentIds);
|
||||||
|
documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds);
|
||||||
|
}
|
||||||
|
|
||||||
urls = documentEntities.stream()
|
urls = documentEntities.stream()
|
||||||
.map(DocumentEntity::getFilePath) // or getUrl()
|
.map(DocumentEntity::getFilePath) // or getUrl()
|
||||||
@@ -376,7 +383,7 @@ public class EmailNotificationDao {
|
|||||||
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null);
|
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity) {
|
public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity,String tipoInammissibilita) {
|
||||||
Map<String, String> bodyPlaceholders = new HashMap<>();
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
|
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
|
||||||
String protocolNumber=applicationEntity.getProtocol().getExternalProtocolNumber();
|
String protocolNumber=applicationEntity.getProtocol().getExternalProtocolNumber();
|
||||||
@@ -390,8 +397,9 @@ public class EmailNotificationDao {
|
|||||||
}
|
}
|
||||||
bodyPlaceholders.put("{{protocol_date}}", protocolDate);
|
bodyPlaceholders.put("{{protocol_date}}", protocolDate);
|
||||||
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS));
|
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS));
|
||||||
|
HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId());
|
||||||
|
bodyPlaceholders.put("{{tipo_inammissibilita}}", tipoInammissibilita);
|
||||||
bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getMotivation());
|
bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getMotivation());
|
||||||
|
|
||||||
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null);
|
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,10 @@ public class ApplicationEntity extends BaseEntity {
|
|||||||
|
|
||||||
@Column(name = "PREVIOUS_STATUS")
|
@Column(name = "PREVIOUS_STATUS")
|
||||||
private String previousStatus;
|
private String previousStatus;
|
||||||
@Column(name = "EMAIL_JSON")
|
|
||||||
private String emailJson;
|
|
||||||
|
|
||||||
|
@Column(name = "REJECTED_REASON")
|
||||||
|
private String rejectedReason;
|
||||||
|
|
||||||
|
@Column(name = "REJECTED_DOCUMENT")
|
||||||
|
private String rejectedDocument;
|
||||||
}
|
}
|
||||||
@@ -16,4 +16,5 @@ public class ApplicationEvaluationFormRequestBean {
|
|||||||
private List<ApplicationFormFieldRequestBean> formFields;
|
private List<ApplicationFormFieldRequestBean> formFields;
|
||||||
private String motivation;
|
private String motivation;
|
||||||
private BigDecimal amountAccepted;
|
private BigDecimal amountAccepted;
|
||||||
|
private String rejectedReason;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,4 +17,5 @@ public class ApplicationEvaluationRequest {
|
|||||||
private ApplicationStatusForEvaluation applicationStatus;
|
private ApplicationStatusForEvaluation applicationStatus;
|
||||||
private String motivation;
|
private String motivation;
|
||||||
private BigDecimal amountAccepted;
|
private BigDecimal amountAccepted;
|
||||||
|
private String rejectedReason;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,4 +34,6 @@ public class ApplicationAmendmentRequestResponse {
|
|||||||
private String emailTemplate;
|
private String emailTemplate;
|
||||||
private List<EmailSendResponse> emailSendResponse;
|
private List<EmailSendResponse> emailSendResponse;
|
||||||
private List<DocumentResponseBean> amendmentInitialDocuments;
|
private List<DocumentResponseBean> amendmentInitialDocuments;
|
||||||
|
private String amendmentType;
|
||||||
|
private String amendmentDocumentType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,5 +50,6 @@ public class ApplicationEvaluationResponse {
|
|||||||
private String companyVatNumber;
|
private String companyVatNumber;
|
||||||
private String companyCodiceAteco;
|
private String companyCodiceAteco;
|
||||||
private List<EmailSendResponse> emailSendResponse;
|
private List<EmailSendResponse> emailSendResponse;
|
||||||
|
private List<DocumentResponseBean> rejectedDocument;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
|
|||||||
import net.gepafin.tendermanagement.enums.FormActionEnum;
|
import net.gepafin.tendermanagement.enums.FormActionEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.*;
|
import net.gepafin.tendermanagement.model.request.*;
|
||||||
import net.gepafin.tendermanagement.model.response.*;
|
import net.gepafin.tendermanagement.model.response.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -12,7 +13,7 @@ public interface ApplicationEvaluationService {
|
|||||||
ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
ApplicationEvaluationRequest applicationEvaluationRequest,
|
ApplicationEvaluationRequest applicationEvaluationRequest,
|
||||||
Long assignedApplicationsId);
|
Long assignedApplicationsId, List<MultipartFile> rejectedDocuments);
|
||||||
|
|
||||||
void deleteApplicationEvaluation(HttpServletRequest request,Long id);
|
void deleteApplicationEvaluation(HttpServletRequest request,Long id);
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ public interface ApplicationEvaluationService {
|
|||||||
|
|
||||||
ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId);
|
ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId);
|
||||||
|
|
||||||
ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationId, Long evaluationFormId);
|
ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationId, Long evaluationFormId);
|
||||||
|
|
||||||
ApplicationEvaluationFormResponse getApplicationEvaluationForm(HttpServletRequest request, Long applicationId, Long assignedApplicationId);
|
ApplicationEvaluationFormResponse getApplicationEvaluationForm(HttpServletRequest request, Long applicationId, Long assignedApplicationId);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package net.gepafin.tendermanagement.service;
|
|||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
|
|
||||||
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@@ -15,5 +14,5 @@ public interface CommunicationService {
|
|||||||
|
|
||||||
CommunicationResponseBean updateAmendmentComment(HttpServletRequest request,CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId);
|
CommunicationResponseBean updateAmendmentComment(HttpServletRequest request,CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId);
|
||||||
|
|
||||||
ApplicationAmendmentResponse getAmendmentComments(HttpServletRequest request,Long id);
|
List<CommunicationResponseBean> getAmendmentComments(HttpServletRequest request,Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import net.gepafin.tendermanagement.util.Validator;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -47,13 +48,13 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe
|
|||||||
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
ApplicationEvaluationRequest req,
|
ApplicationEvaluationRequest req,
|
||||||
Long assignedApplicationsId) {
|
Long assignedApplicationsId, List<MultipartFile> rejectedDocuments) {
|
||||||
|
|
||||||
AssignedApplicationsEntity assignedApplication =assignedApplicationsService.validateAssignedApplication(assignedApplicationsId);
|
AssignedApplicationsEntity assignedApplication =assignedApplicationsService.validateAssignedApplication(assignedApplicationsId);
|
||||||
|
|
||||||
UserEntity user = validator.validatePreInstructor(request, assignedApplication.getUserId());
|
UserEntity user = validator.validatePreInstructor(request, assignedApplication.getUserId());
|
||||||
|
|
||||||
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, req, assignedApplication.getId());
|
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, req, assignedApplication.getId(),rejectedDocuments);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -88,10 +89,10 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
|
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
|
||||||
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
|
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
|
||||||
validator.validatePreInstructor(request, assignedApplicationsEntity.getUserId());
|
validator.validatePreInstructor(request, assignedApplicationsEntity.getUserId());
|
||||||
return applicationEvaluationDao.createApplicationEvaluation(request,applicationEvaluationFormRequestBean,evaluationFormId,assignedApplicationId);
|
return applicationEvaluationDao.createApplicationEvaluation(request,rejectedDocuments,applicationEvaluationFormRequestBean,evaluationFormId,assignedApplicationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao;
|
|||||||
import net.gepafin.tendermanagement.dao.CommunicationDao;
|
import net.gepafin.tendermanagement.dao.CommunicationDao;
|
||||||
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
||||||
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
|
|
||||||
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
import net.gepafin.tendermanagement.service.CommunicationService;
|
import net.gepafin.tendermanagement.service.CommunicationService;
|
||||||
import net.gepafin.tendermanagement.util.Validator;
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
@@ -66,7 +65,7 @@ public class CommunicationServiceImpl implements CommunicationService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ApplicationAmendmentResponse getAmendmentComments(HttpServletRequest request,Long id) {
|
public List<CommunicationResponseBean> getAmendmentComments(HttpServletRequest request,Long id) {
|
||||||
ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(id);
|
ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(id);
|
||||||
if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) {
|
if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) {
|
||||||
validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId());
|
validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId());
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants;
|
|||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -28,11 +29,12 @@ public interface ApplicationEvaluationApi {
|
|||||||
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))
|
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))
|
||||||
})
|
})
|
||||||
@PutMapping(value = "/{assignedApplicationsId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PutMapping(value = "/{assignedApplicationsId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
|
ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
@Parameter(description = "Assigned Application ID", required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId,
|
@Parameter(description = "Assigned Application ID", required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId, @Parameter(description = "List of files to upload", required = false)
|
||||||
@Parameter(description = "Application Evaluation Request Body", required = true) @Valid @RequestBody ApplicationEvaluationRequest evaluationRequest);
|
@RequestPart(required = false) List<MultipartFile> rejectedDocuments,
|
||||||
|
@Parameter(description = "Application Evaluation Request Body", required = true) @RequestPart ApplicationEvaluationRequest evaluationRequest);
|
||||||
|
|
||||||
@Operation(summary = "API to get ApplicationEvaluation data for evaluation process",
|
@Operation(summary = "API to get ApplicationEvaluation data for evaluation process",
|
||||||
responses = {
|
responses = {
|
||||||
@@ -67,9 +69,10 @@ public interface ApplicationEvaluationApi {
|
|||||||
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
||||||
@PutMapping(value = "/v2/assignedApplication/{id}",
|
@PutMapping(value = "/v2/assignedApplication/{id}",
|
||||||
produces = { "application/json" })
|
produces = { "application/json" },consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request,
|
ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, @Parameter(description = "List of files to upload", required = false)
|
||||||
@Valid @RequestBody ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean,
|
@RequestPart(required = false) List<MultipartFile> rejectedDocuments,
|
||||||
|
@RequestPart ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean,
|
||||||
@Parameter(description = "Assigned Application ID", required = true) @PathVariable(value = "id", required = true) Long assignedApplicationId,
|
@Parameter(description = "Assigned Application ID", required = true) @PathVariable(value = "id", required = true) Long assignedApplicationId,
|
||||||
@Parameter(description = "The evaluation form ID", required = true) @RequestParam("evaluationFormId") Long evaluationFormId);
|
@Parameter(description = "The evaluation form ID", required = true) @RequestParam("evaluationFormId") Long evaluationFormId);
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import io.swagger.v3.oas.annotations.media.ExampleObject;
|
|||||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
|
|
||||||
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
import net.gepafin.tendermanagement.model.util.Response;
|
import net.gepafin.tendermanagement.model.util.Response;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants;
|
import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants;
|
||||||
@@ -44,7 +43,7 @@ public interface CommunicationApi {
|
|||||||
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value =
|
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value =
|
||||||
ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) })
|
ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) })
|
||||||
@GetMapping(value = "/{amendmentId}", produces = "application/json")
|
@GetMapping(value = "/{amendmentId}", produces = "application/json")
|
||||||
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(HttpServletRequest request,@PathVariable(value = "amendmentId") Long amendmentId);
|
public ResponseEntity<Response<List<CommunicationResponseBean>>> getAmendmentComments(HttpServletRequest request,@PathVariable(value = "amendmentId") Long amendmentId);
|
||||||
|
|
||||||
@Operation(summary = "Api to update communication comments", responses = { @ApiResponse(responseCode = "200", description = "OK"),
|
@Operation(summary = "Api to update communication comments", responses = { @ApiResponse(responseCode = "200", description = "OK"),
|
||||||
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -34,7 +35,7 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
|
|||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
|
public ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
Long assignedApplicationsId,
|
Long assignedApplicationsId, List<MultipartFile> rejectedDocuments,
|
||||||
ApplicationEvaluationRequest evaluationRequest) {
|
ApplicationEvaluationRequest evaluationRequest) {
|
||||||
|
|
||||||
/** This code is responsible for creating user action logs for the "Create or update Application Evaluation" operation. **/
|
/** This code is responsible for creating user action logs for the "Create or update Application Evaluation" operation. **/
|
||||||
@@ -43,7 +44,7 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
|
|||||||
|
|
||||||
|
|
||||||
ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation(
|
ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation(
|
||||||
request, evaluationRequest, assignedApplicationsId);
|
request, evaluationRequest, assignedApplicationsId,rejectedDocuments);
|
||||||
|
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.CREATED)
|
||||||
.body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_REQUEST_COMPLETED)));
|
.body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_REQUEST_COMPLETED)));
|
||||||
@@ -82,13 +83,13 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
|
public ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
|
||||||
|
|
||||||
/** This code is responsible for creating user action logs for the "Create or update application evaluation form" operation. **/
|
/** This code is responsible for creating user action logs for the "Create or update application evaluation form" operation. **/
|
||||||
loggingUtil.logUserAction(
|
loggingUtil.logUserAction(
|
||||||
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.CREATE_UPDATE_APPLICATION_EVALUATION_FORM).build());
|
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.CREATE_UPDATE_APPLICATION_EVALUATION_FORM).build());
|
||||||
|
|
||||||
ApplicationEvaluationFormResponse applicationEvaluationResponseBean = applicationEvaluationService.createApplicationEvaluation(request, applicationEvaluationFormRequestBean, assignedApplicationId, evaluationFormId);
|
ApplicationEvaluationFormResponse applicationEvaluationResponseBean = applicationEvaluationService.createApplicationEvaluation(request,rejectedDocuments, applicationEvaluationFormRequestBean, assignedApplicationId, evaluationFormId);
|
||||||
|
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.CREATED)
|
||||||
.body(new Response<>(applicationEvaluationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CREATED_SUCCESSFULLY)));
|
.body(new Response<>(applicationEvaluationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CREATED_SUCCESSFULLY)));
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import net.gepafin.tendermanagement.enums.UserActionContextEnum;
|
|||||||
import net.gepafin.tendermanagement.enums.UserActionLogsEnum;
|
import net.gepafin.tendermanagement.enums.UserActionLogsEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.request.UserActionRequest;
|
import net.gepafin.tendermanagement.model.request.UserActionRequest;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
|
|
||||||
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
import net.gepafin.tendermanagement.model.util.Response;
|
import net.gepafin.tendermanagement.model.util.Response;
|
||||||
import net.gepafin.tendermanagement.service.CommunicationService;
|
import net.gepafin.tendermanagement.service.CommunicationService;
|
||||||
@@ -45,12 +44,12 @@ public class CommunicationController implements CommunicationApi {
|
|||||||
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
|
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(HttpServletRequest request,Long amendmentId) {
|
public ResponseEntity<Response<List<CommunicationResponseBean>>> getAmendmentComments(HttpServletRequest request,Long amendmentId) {
|
||||||
|
|
||||||
/** This code is responsible for creating user action logs for the "getting comment of amendment" operation. **/
|
/** This code is responsible for creating user action logs for the "getting comment of amendment" operation. **/
|
||||||
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_AMENDMENT_COMMENT).build());
|
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_AMENDMENT_COMMENT).build());
|
||||||
|
|
||||||
ApplicationAmendmentResponse response = communicationService.getAmendmentComments(request,amendmentId);
|
List<CommunicationResponseBean> response = communicationService.getAmendmentComments(request,amendmentId);
|
||||||
return ResponseEntity.ok(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.AMENDMENT_FOUND_SUCCESS)));
|
return ResponseEntity.ok(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.AMENDMENT_FOUND_SUCCESS)));
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3067,4 +3067,17 @@
|
|||||||
<column name="previous_status" type="VARCHAR(255)"></column>
|
<column name="previous_status" type="VARCHAR(255)"></column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="15-10-2025_RK_152435" author="Rajesh Khore">
|
||||||
|
<dropColumn tableName="application" columnName="email_json"/>
|
||||||
|
|
||||||
|
<addColumn tableName="application">
|
||||||
|
<column name="rejected_reason" type="VARCHAR(255)"/>
|
||||||
|
<column name="rejected_document" type="VARCHAR(255)"/>
|
||||||
|
</addColumn>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="16-10-2025_RK_13352" author="Rajesh Khore">
|
||||||
|
<sqlFile dbms="postgresql" path="db/dump/update_system_email_template_of_application_rejected_16_10_2025.sql"/>
|
||||||
|
</changeSet>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
UPDATE gepafin_schema.system_email_template
|
||||||
|
SET html_content = '<html>
|
||||||
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>Si comunica che, in riferimento alla domanda a valere sul bando “<strong>{{call_name}}</strong>” di cui al
|
||||||
|
<strong>Protocollo n. {{protocol_number}} del {{protocol_date}} alle {{protocol_time}}</strong>,
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{tipo_inammissibilita}}.</p>
|
||||||
|
<p>Le motivazioni sono le seguenti: <strong>{{form_text}}</strong></p>
|
||||||
|
<p>Vi ricordiamo che i Beneficiari che hanno presentato richieste valutate non ammissibili entro 10 giorni dalla data di ricevimento della presente potranno finoltrare richiesta di chiarimenti e/o osservazioni alla scrivente Società ai sensi e per gli effetti dell’art.10 bis della L.241/1990 e s.m.i.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>'
|
||||||
|
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION' and "email_scenario" = 'APPLICATION_REJECTED' and "system" = true;
|
||||||
@@ -415,5 +415,6 @@ end.date.greater.than.now=End date must be greater than the current date and tim
|
|||||||
pec.email.required=PEC email is required.
|
pec.email.required=PEC email is required.
|
||||||
application.technical.evaluation.rejected.success=Application changes to status application technical evaluation rejected successfully.
|
application.technical.evaluation.rejected.success=Application changes to status application technical evaluation rejected successfully.
|
||||||
invalid.email.json=Invalid email json.
|
invalid.email.json=Invalid email json.
|
||||||
|
more.fields.required=Subject, reason, and motivation are required when rejecting the application.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -406,3 +406,4 @@ end.date.greater.than.now=La data di fine deve essere successiva alla data e all
|
|||||||
pec.email.required=Obbligatorio l'indirizzo e-mail PEC.
|
pec.email.required=Obbligatorio l'indirizzo e-mail PEC.
|
||||||
application.technical.evaluation.rejected.success=Lo stato dell'applicazione cambia: valutazione tecnica dell'applicazione rifiutata con successo.
|
application.technical.evaluation.rejected.success=Lo stato dell'applicazione cambia: valutazione tecnica dell'applicazione rifiutata con successo.
|
||||||
invalid.email.json=Codice email json non valido.
|
invalid.email.json=Codice email json non valido.
|
||||||
|
more.fields.required=Per rifiutare la domanda sono richiesti oggetto, motivo e motivazione.
|
||||||
|
|||||||
Reference in New Issue
Block a user