From f0f904dabe77eea94e94c0d46597e3318bcb1c06 Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 10 Mar 2026 16:50:00 +0530 Subject: [PATCH 1/5] Managed company creation --- .../config/MessageSourceConfig.java | 2 +- .../config/WebSocketConfig.java | 16 ++++- .../constants/GepafinConstant.java | 3 +- .../tendermanagement/dao/AppointmentDao.java | 3 + .../tendermanagement/dao/CompanyDao.java | 65 ++++++++++++++++--- .../entities/CompanyEntity.java | 3 + src/main/resources/application-dev.properties | 4 +- .../resources/application-local.properties | 3 +- .../application-production.properties | 4 +- .../resources/application-testing.properties | 3 +- .../db/changelog/db.changelog-1.0.0.xml | 5 ++ src/main/resources/message_en.properties | 2 + src/main/resources/message_it.properties | 4 +- 13 files changed, 100 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/config/MessageSourceConfig.java b/src/main/java/net/gepafin/tendermanagement/config/MessageSourceConfig.java index 79ef4d11..1159a0aa 100644 --- a/src/main/java/net/gepafin/tendermanagement/config/MessageSourceConfig.java +++ b/src/main/java/net/gepafin/tendermanagement/config/MessageSourceConfig.java @@ -14,7 +14,7 @@ public class MessageSourceConfig { public ResourceBundleMessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("message"); - messageSource.setDefaultEncoding("UTF-8"); + messageSource.setDefaultEncoding("ISO-8859-1"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } diff --git a/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java b/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java index 0212f720..1b9a9e36 100644 --- a/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java +++ b/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java @@ -23,10 +23,22 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Value("${spring.rabbitmq.password}") private String clientPassword; + @Value("${rabbitmq.enabled:false}") + private boolean rabbitmqEnabled; + @Override public void configureMessageBroker(MessageBrokerRegistry config) { - - config.enableStompBrokerRelay("/topic").setRelayHost(relayHost).setRelayPort(relayPort).setClientLogin(clientUserName).setClientPasscode(clientPassword); + if (rabbitmqEnabled) { + // Use external RabbitMQ broker + config.enableStompBrokerRelay("/topic") + .setRelayHost(relayHost) + .setRelayPort(relayPort) + .setClientLogin(clientUserName) + .setClientPasscode(clientPassword); + } else { + // Use in-memory simple broker + config.enableSimpleBroker("/topic"); + } config.setApplicationDestinationPrefixes("/app"); } diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index d312f062..46a8eb23 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -199,6 +199,7 @@ public class GepafinConstant { public static final String VALIDATION_ERROR_FILE_EMPTY = "validation.error.file.empty"; public static final String VALIDATION_ERROR_FILE_INVALIDTYPE = "validation.error.file.invalidType"; public static final String UPLOAD_ERROR_S3 = "upload.error.s3"; + public static final String VAT_OR_TAX_CODE_REQUIRED = "vat.or.tax.code.required"; public static final String CALL_NOT_STARTED_YET = "call.not.started.yet"; public static final String CALL_ALREADY_ENDED = "call.already.ended"; @@ -638,7 +639,7 @@ public class GepafinConstant { public static final String UPLOAD_COMPANY_DOCUMENT_TO_APPLICATION_MSG="upload.company.document.to.application"; public static final String COMPANY_DOCUMENT_NOT_FOUND_WITH_IDS="company.document.not.found.with.ids"; public static final String REQUIRED_AMOUNT_FIELD_NOT_PROVIDED = "amount.field.not.provided"; - + public static final String PLEASE_PROVIDE_VALID_VAT_NUMBER="provide.valid.vat.number"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AppointmentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AppointmentDao.java index 069d823d..0e25e8d4 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AppointmentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AppointmentDao.java @@ -163,6 +163,9 @@ public class AppointmentDao { NdgResponse ndgResponse = new NdgResponse(); CompanyEntity company = companyService.validateCompany(application.getCompanyId()); + if(Boolean.FALSE.equals(company.getValidVat())){ + throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.PLEASE_PROVIDE_VALID_VAT_NUMBER)); + } NdganagEntity ndganagEntity = ndganagRepository.findByVatNumber(company.getVatNumber()); if (ndganagEntity != null && ndganagEntity.getNdg() != null) { ndgResponse.setNdg(ndganagEntity.getNdg()); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 8b59eebe..8c6a8b1b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -69,13 +69,26 @@ public class CompanyDao { @Autowired private HttpServletRequest request; + @Autowired + private VatCheckDao vatCheckDao; + private static final String NOT_FOUND_JSON = "{\"data\": \"not found\"}"; public CompanyResponse createCompany(UserEntity userEntity, CompanyRequest companyRequest) { log.info("Initiating company creation by userId: {}", userEntity.getId()); - CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); + Boolean validVat=Boolean.FALSE; + if(companyRequest.getVatNumber()!=null){ + VatCheckResponseBean vatCheckResponseBean=vatCheckDao.checkVatNumber(companyRequest.getVatNumber(), userEntity.getHub().getId()); + if(vatCheckResponseBean!=null && Boolean.TRUE.equals(vatCheckResponseBean.getValid())){ + validVat=Boolean.TRUE; + } + } + CompanyEntity existingCompany = null; + if (!StringUtils.isEmpty(companyRequest.getVatNumber())) { + existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); + } UserWithCompanyEntity userWithCompanyEntity = null; if (existingCompany != null) { UserWithCompanyEntity existingRelation = userWithCompanyRepository.findByUserIdAndCompanyIdAndIsDeletedFalse(userEntity.getId(), existingCompany.getId()).orElse(null); @@ -93,6 +106,7 @@ public class CompanyDao { } else { validateCompany(userEntity, companyRequest); CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(userEntity, companyRequest); + companyEntity.setValidVat(validVat); CompanyEntity companyData = companyRepository.save(companyEntity); /** This code is responsible for adding a version history log for "creating company" operation. **/ @@ -112,12 +126,16 @@ public class CompanyDao { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_EMAIL)); } - if (StringUtils.isEmpty(companyRequest.getVatNumber())) { + // At least one identifier required + if (StringUtils.isEmpty(companyRequest.getVatNumber()) + && StringUtils.isEmpty(companyRequest.getCodiceFiscale())) { throw new CustomValidationException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.VATNUMBER_MANDATORY)); + Translator.toLocale(GepafinConstant.VAT_OR_TAX_CODE_REQUIRED)); } - if (companyRepository.existsByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId())) { - throw new CustomValidationException(Status.VALIDATION_ERROR, + // Only check VAT uniqueness if VAT provided + if (!StringUtils.isEmpty(companyRequest.getVatNumber()) + && companyRepository.existsByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId())) { + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); } } @@ -140,7 +158,7 @@ public class CompanyDao { UserWithCompanyEntity userWithCompany = userWithCompanyRepository.save(userWithCompanyEntity); /** This code is responsible for adding a version history log for the "adding user with company" operation. **/ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(userWithCompany).build()); - if (StringUtils.isEmpty(companyEntity.getJson())) { + if (StringUtils.isEmpty(companyEntity.getJson()) && companyRequest.getVatCheckResponse() != null) { companyEntity.setJson(Utils.convertMapIntoJsonString(companyRequest.getVatCheckResponse())); updateCodiceAtecoFieldWithNewJson(companyEntity); companyEntity = companyRepository.save(companyEntity); @@ -161,7 +179,11 @@ public class CompanyDao { private CompanyEntity convertCompanyRequestToCompanyEntity(UserEntity userEntity, CompanyRequest request) { CompanyEntity entity = new CompanyEntity(); entity.setCompanyName(request.getCompanyName()); - entity.setVatNumber(request.getVatNumber()); + if(request.getVatNumber()==null){ + entity.setVatNumber(request.getCodiceFiscale()); + }else { + entity.setVatNumber(request.getVatNumber()); + } entity.setCodiceFiscale(request.getCodiceFiscale()); entity.setAddress(request.getAddress()); entity.setPhoneNumber(request.getPhoneNumber()); @@ -182,7 +204,11 @@ public class CompanyDao { CompanyResponse response = new CompanyResponse(); response.setId(entity.getId()); response.setCompanyName(entity.getCompanyName()); - response.setVatNumber(entity.getVatNumber()); + if(entity.getVatNumber()==null){ + response.setVatNumber(entity.getCodiceFiscale()); + }else { + response.setVatNumber(entity.getVatNumber()); + } response.setCodiceFiscale(entity.getCodiceFiscale()); response.setAddress(entity.getAddress()); response.setPhoneNumber(entity.getPhoneNumber()); @@ -231,6 +257,29 @@ public class CompanyDao { // companyEntity.setVatNumber(companyRequest.getVatNumber()); // // } + + //allow adding VAT later + if(StringUtils.isNotBlank(companyRequest.getVatNumber()) + && StringUtils.isBlank(companyEntity.getVatNumber())) { + CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); + if(existingCompany!=null){ + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); + } + Boolean validVat=Boolean.FALSE; + if(companyRequest.getVatNumber()!=null){ + VatCheckResponseBean vatCheckResponseBean=vatCheckDao.checkVatNumber(companyRequest.getVatNumber(), userEntity.getHub().getId()); + if(vatCheckResponseBean!=null && Boolean.TRUE.equals(vatCheckResponseBean.getValid())){ + validVat=Boolean.TRUE; + } + } + companyEntity.setVatNumber(companyRequest.getVatNumber()); + companyEntity.setValidVat(validVat); + if(companyRequest.getVatCheckResponse() != null) { + String responseJson = Utils.convertMapIntoJsonString(companyRequest.getVatCheckResponse()); + companyEntity.setJson(responseJson); + updateCodiceAtecoFieldWithNewJson(companyEntity); + } + } companyRepository.save(companyEntity); log.info("Company updated and saved. companyId: {}", companyEntity.getId()); diff --git a/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java index 8a6c94e1..0f47d5d9 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java @@ -64,4 +64,7 @@ public class CompanyEntity extends BaseEntity{ @Column(name = "PEC") private String pec; + + @Column(name = "VALID_VAT") + private Boolean validVat; } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 356735fb..6db0a637 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -29,4 +29,6 @@ spring.rabbitmq.host=172.18.0.7 spring.rabbitmq.port=61613 spring.rabbitmq.username=guest spring.rabbitmq.password=guest -spring.rabbitmq.virtual-host=/ \ No newline at end of file +spring.rabbitmq.virtual-host=/ + +rabbitmq.enabled=false \ No newline at end of file diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties index 3563166f..bcae6352 100644 --- a/src/main/resources/application-local.properties +++ b/src/main/resources/application-local.properties @@ -26,4 +26,5 @@ spring.rabbitmq.host=localhost spring.rabbitmq.port=61613 spring.rabbitmq.username=guest spring.rabbitmq.password=guest -spring.rabbitmq.virtual-host=/ \ No newline at end of file +spring.rabbitmq.virtual-host=/ +rabbitmq.enabled=false \ No newline at end of file diff --git a/src/main/resources/application-production.properties b/src/main/resources/application-production.properties index a38014af..bfb4a6c3 100644 --- a/src/main/resources/application-production.properties +++ b/src/main/resources/application-production.properties @@ -38,4 +38,6 @@ spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ -isSviluppumbriaProtocolEnabled = false \ No newline at end of file +isSviluppumbriaProtocolEnabled = false + +rabbitmq.enabled=true \ No newline at end of file diff --git a/src/main/resources/application-testing.properties b/src/main/resources/application-testing.properties index 532deb3f..912727b9 100644 --- a/src/main/resources/application-testing.properties +++ b/src/main/resources/application-testing.properties @@ -24,4 +24,5 @@ spring.rabbitmq.host=rabbitmq.bflows.ai spring.rabbitmq.port=61613 spring.rabbitmq.username=guest spring.rabbitmq.password=guest -spring.rabbitmq.virtual-host=/ \ No newline at end of file +spring.rabbitmq.virtual-host=/ +rabbitmq.enabled=false \ No newline at end of file diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 32c8690d..36e1c630 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -3193,5 +3193,10 @@ + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index b26ec2c2..64331f3d 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -431,6 +431,8 @@ amendment.appropiate.status=Application amendment is not in appropiate status fo upload.company.document.to.application=Uploaded company document to application successfully. company.document.not.found.with.ids=Company document not found. Missing IDs: {0}. amount.field.not.provided= Please provide the required amount fields. +vat.or.tax.code.required=VAT Number or Tax Code is required. +provide.valid.vat.number=Please provide a valid vat number to proceed NDG. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 041e08a2..5265325f 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -71,7 +71,7 @@ email.already.exists=Esiste gi? un utente con questa email. invalid_user=Validazione utente fallita. Controlla le informazioni, lo stato dell'account e la scadenza del token. #Global messages -common_message=qualcosa � andato storto. Per favore riprova +common_message=Qualcosa è andato storto. Riprova. invalid_signature=Gettone non valido. invalid_login=Nome utente o password errati req_validation_er=Errore di convalida @@ -422,3 +422,5 @@ amendment.appropiate.status=L'emendamento dell'applicazione non � in stato app upload.company.document.to.application=Documento aziendale caricato correttamente nell'applicazione. company.document.not.found.with.ids=Documento aziendale non trovato. ID mancanti: {0} amount.field.not.provided= Si prega di fornire i campi obbligatori per l'importo. +vat.or.tax.code.required=È obbligatorio il numero di partita IVA o il codice fiscale. +provide.valid.vat.number=Inserisci un numero di partita IVA valido per procedere con NDG. \ No newline at end of file From e2c73db9f748e6d79edde8bd736b2e8d74aab09d Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 10 Mar 2026 18:32:21 +0530 Subject: [PATCH 2/5] Updated code --- src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 8c6a8b1b..92c90f23 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -1,5 +1,6 @@ package net.gepafin.tendermanagement.dao; +import net.gepafin.tendermanagement.model.util.NanoIdUtils; import org.springframework.data.domain.Pageable; // Correct package import java.util.ArrayList; @@ -180,7 +181,7 @@ public class CompanyDao { CompanyEntity entity = new CompanyEntity(); entity.setCompanyName(request.getCompanyName()); if(request.getVatNumber()==null){ - entity.setVatNumber(request.getCodiceFiscale()); + entity.setVatNumber(NanoIdUtils.randomNanoId()); }else { entity.setVatNumber(request.getVatNumber()); } From 5fe2291a3ec1b067a3524db65bb4717c73af0862 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 11 Mar 2026 12:20:06 +0530 Subject: [PATCH 3/5] Created new endpoint to reject emails by director --- .../constants/GepafinConstant.java | 1 + .../tendermanagement/dao/PecMailDao.java | 18 ++++++++++++++++++ .../entities/EmailLogEntity.java | 3 +++ .../tendermanagement/enums/StatusTypeEnum.java | 3 ++- .../enums/UserActionContextEnum.java | 1 + .../model/response/PecEmailLogResponse.java | 2 ++ .../service/PecMailService.java | 2 ++ .../service/impl/PecMailSerivceImpl.java | 5 +++++ .../web/rest/api/PecMailApi.java | 11 +++++++++++ .../web/rest/api/impl/PecMailController.java | 11 +++++++++++ .../db/changelog/db.changelog-1.0.0.xml | 6 ++++++ src/main/resources/message_en.properties | 1 + src/main/resources/message_it.properties | 1 + 13 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 46a8eb23..f223d922 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -634,6 +634,7 @@ public class GepafinConstant { public static final String APPLICATION_NOT_APPROVED="application.not.approved"; public static final String SUBJECT_AND_BODY_REQUIRED="subject.body.required"; public static final String MAIL_SENT_SUCCESSFULLY="mail.send.successfully"; + public static final String PEC_EMAIL_REJECTED_SUCCESSFULLY="pec.email.rejected.successfully"; public static final String EMAIL_LOG_FETCHED="email.log.fetched"; public static final String APPLICATION_AMENDMENT_APPROPIATE_STATUS="amendment.appropiate.status"; public static final String UPLOAD_COMPANY_DOCUMENT_TO_APPLICATION_MSG="upload.company.document.to.application"; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/PecMailDao.java b/src/main/java/net/gepafin/tendermanagement/dao/PecMailDao.java index 18240044..fcaecbcc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/PecMailDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/PecMailDao.java @@ -15,6 +15,7 @@ import net.gepafin.tendermanagement.repositories.EmailLogRepository; import net.gepafin.tendermanagement.repositories.UserActionsRepository; import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.service.CallService; +import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Validator; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; @@ -24,6 +25,7 @@ import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -74,6 +76,21 @@ public class PecMailDao { return pecMailResponses; } + public PecMailResponse rejectPecMail(HttpServletRequest request, Long userActionId, String motivation) { + List emailLogs = getEmailLogEntities(request, userActionId); + LocalDateTime rejectedAt = DateTimeUtil.DateServerToUTC(LocalDateTime.now()); + for (EmailLogEntity log : emailLogs) { + log.setSendStatus(StatusTypeEnum.REJECTED.getValue()); + log.setMotivation(motivation); + log.setSendDateTime(rejectedAt); + } + emailLogRepository.saveAll(emailLogs); + EmailLogEntity firstLog = emailLogs.get(0); + ApplicationEntity applicationEntity = applicationService.validateApplication(firstLog.getApplicationId()); + String callName = applicationEntity.getCall().getName(); + return createPecMailResponse(firstLog.getUserAction().getId(), firstLog, callName); + } + private List getEmailLogEntities(HttpServletRequest request, Long userActionId) { UserActionEntity userActionEntity = userActionsRepository.findUserActionByIdAndIsDeletedFalse(userActionId); if (userActionEntity == null) { @@ -117,6 +134,7 @@ public class PecMailDao { pecEmailLogResponse.setSubject(emailLogEntity.getEmailSubject()); pecEmailLogResponse.setHtmlContent(emailLogEntity.getEmailBody()); pecEmailLogResponse.setCallId(emailLogEntity.getCallId()); + pecEmailLogResponse.setMotivation(emailLogEntity.getMotivation()); return pecEmailLogResponse; } private PecMailResponse createPecMailResponse(Long userActionId, EmailLogEntity emailLogEntity, String callName) { diff --git a/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java index 0a4dfc90..ba21ec3d 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java @@ -62,5 +62,8 @@ public class EmailLogEntity extends BaseEntity{ @Column(name = "ATTACHMENTS") private String attachments; + + @Column(name = "MOTIVATION", columnDefinition = "TEXT") + private String motivation; } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/StatusTypeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/StatusTypeEnum.java index 738a6a17..65e9c262 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/StatusTypeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/StatusTypeEnum.java @@ -5,7 +5,8 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum StatusTypeEnum { PENDING ("PENDING"), SUCCESS ("SUCCESS"), - FAILED("FAILED"); + FAILED("FAILED"), + REJECTED("REJECTED"); private String value; diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 9092c769..8ada4d3c 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -231,6 +231,7 @@ public enum UserActionContextEnum { FETCH_APPLICATION_CONTRACT_BY_APPLICATION_ID("FETCH_APPLICATION_CONTRACT_BY_APPLICATION_ID"), FETCH_APPLICATION_CONTRACT_BY_BENEFICIARY_USER_ID("FETCH_APPLICATION_CONTRACT_BY_BENEFICIARY_USER_ID"), SEND_PEC_MAIL("SEND_PEC_MAIL"), + REJECT_PEC_MAIL("REJECT_PEC_MAIL"), FETCH_EMAIL_LOG("FETCH_EMAIL_LOG"), FETCH_ALL_EMAIL_LOG("FETCH_ALL_EMAIL_LOG"), UPLOAD_COMPANY_DOCUMENT_TO_APPLICATION("UPLOAD_COMPANY_DOCUMENT_TO_APPLICATION"); diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/PecEmailLogResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/PecEmailLogResponse.java index 6b0ada2f..7b646e84 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/PecEmailLogResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/PecEmailLogResponse.java @@ -27,4 +27,6 @@ public class PecEmailLogResponse { private Long callId; + private String motivation; + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/PecMailService.java b/src/main/java/net/gepafin/tendermanagement/service/PecMailService.java index 77339aae..2d26dec4 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/PecMailService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/PecMailService.java @@ -10,6 +10,8 @@ public interface PecMailService { public List sendPecMail(HttpServletRequest request, List userActionIds); + public PecMailResponse rejectPecMail(HttpServletRequest request, Long userActionId, String motivation); + public List getEmailLogByUserActionId(HttpServletRequest request, Long userActionId); public List getAllEmailLogs(HttpServletRequest request); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/PecMailSerivceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/PecMailSerivceImpl.java index 8e0daef1..f87b74b8 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/PecMailSerivceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/PecMailSerivceImpl.java @@ -21,6 +21,11 @@ public class PecMailSerivceImpl implements PecMailService { return pecMailDao.sendPecMail(request,userActionIds); } + @Override + public PecMailResponse rejectPecMail(HttpServletRequest request, Long userActionId, String motivation) { + return pecMailDao.rejectPecMail(request, userActionId, motivation); + } + @Override public List getEmailLogByUserActionId(HttpServletRequest request, Long userActionId) { return pecMailDao.getEmailLogByUserActionId(request,userActionId); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/PecMailApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/PecMailApi.java index 27fdcc27..461c3087 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/PecMailApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/PecMailApi.java @@ -31,6 +31,17 @@ public interface PecMailApi { ResponseEntity>> sendPecMail(HttpServletRequest request, @Parameter(description = "The user action id", required = true) @RequestParam("userActionIds") List userActionIds); + @Operation(summary = "Api to reject PEC email for a user action with motivation.", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = + ErrorConstants.NOTFOUND_ERROR_EXAMPLE))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = + ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE))), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = + ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) }) + @PostMapping(value = "/userAction/{userActionId}/reject", produces = "application/json") + ResponseEntity> rejectPecMail(HttpServletRequest request, + @Parameter(description = "The user action id", required = true) @PathVariable("userActionId") Long userActionId, + @Parameter(description = "Motivation for rejection", required = true) @RequestParam("motivation") String motivation); @Operation(summary = "Api to get email log by user action id", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/PecMailController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/PecMailController.java index 41e8ed58..e22be37a 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/PecMailController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/PecMailController.java @@ -44,6 +44,17 @@ public class PecMailController implements PecMailApi { } + @Override + public ResponseEntity> rejectPecMail(HttpServletRequest request, Long userActionId, String motivation) { + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.EMAIL) + .actionContext(UserActionContextEnum.REJECT_PEC_MAIL).build()); + + PecMailResponse pecMailResponse = pecMailService.rejectPecMail(request, userActionId, motivation); + + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(pecMailResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.PEC_EMAIL_REJECTED_SUCCESSFULLY))); + } + @Override public ResponseEntity>> getEmailLogByUserActionId(HttpServletRequest request, Long userActionId) { loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.EMAIL) diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 36e1c630..7f005f1f 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -3199,4 +3199,10 @@ + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 64331f3d..65b69eff 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -426,6 +426,7 @@ application.contract.already.exist=Application contract already exist for this a application.not.approved=Application is not approved. subject.body.required=Subject and body is required to create contract. mail.send.successfully=Mail sent succesfully. +pec.email.rejected.successfully=Email rejected successfully. email.log.fetched=Email log fetched successfully. amendment.appropiate.status=Application amendment is not in appropiate status for this operation. upload.company.document.to.application=Uploaded company document to application successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 5265325f..2437fa0b 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -417,6 +417,7 @@ application.contract.already.exist=Il contratto di applicazione esiste gi� per application.not.approved=La domanda non � stata approvata. subject.body.required=Per creare un contratto sono necessari oggetto e corpo. mail.send.successfully=Email inviata con successo. +pec.email.rejected.successfully=Email rifiutata con successo. email.log.fetched=Registro email recuperato correttamente. amendment.appropiate.status=L'emendamento dell'applicazione non � in stato appropriato per questa operazione. upload.company.document.to.application=Documento aziendale caricato correttamente nell'applicazione. From 00080d6a6c27b0e294c8c5e400cf60939588db28 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 11 Mar 2026 16:20:35 +0530 Subject: [PATCH 4/5] Created new endpoint to update VAT number of company --- .../tendermanagement/dao/CompanyDao.java | 57 ++++++++++++------- .../enums/UserActionContextEnum.java | 1 + .../model/response/CompanyResponse.java | 1 + .../service/CompanyService.java | 2 + .../service/impl/CompanyServiceImpl.java | 8 +++ .../web/rest/api/CompanyApi.java | 13 +++++ .../rest/api/impl/CompanyApiController.java | 9 +++ 7 files changed, 69 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 92c90f23..400d30f6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -229,6 +229,7 @@ public class CompanyDao { response.setUpdatedDate(entity.getUpdatedDate()); response.setContactName(userWithCompanyEntity.getContactName()); response.setContactEmail(userWithCompanyEntity.getContactEmail()); + response.setValidVat(entity.getValidVat()); return response; } @@ -259,28 +260,6 @@ public class CompanyDao { // // } - //allow adding VAT later - if(StringUtils.isNotBlank(companyRequest.getVatNumber()) - && StringUtils.isBlank(companyEntity.getVatNumber())) { - CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); - if(existingCompany!=null){ - throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); - } - Boolean validVat=Boolean.FALSE; - if(companyRequest.getVatNumber()!=null){ - VatCheckResponseBean vatCheckResponseBean=vatCheckDao.checkVatNumber(companyRequest.getVatNumber(), userEntity.getHub().getId()); - if(vatCheckResponseBean!=null && Boolean.TRUE.equals(vatCheckResponseBean.getValid())){ - validVat=Boolean.TRUE; - } - } - companyEntity.setVatNumber(companyRequest.getVatNumber()); - companyEntity.setValidVat(validVat); - if(companyRequest.getVatCheckResponse() != null) { - String responseJson = Utils.convertMapIntoJsonString(companyRequest.getVatCheckResponse()); - companyEntity.setJson(responseJson); - updateCodiceAtecoFieldWithNewJson(companyEntity); - } - } companyRepository.save(companyEntity); log.info("Company updated and saved. companyId: {}", companyEntity.getId()); @@ -311,6 +290,40 @@ public class CompanyDao { return convertCompanyEntityToCompanyResponse(companyEntity, userWithCompanyEntity); } + /** + * Updates only the VAT number for the given company: runs VAT check, sets validVat and json (vat check response), and updates codiceAteco from response. + */ + public CompanyResponse updateCompanyVatNumber(UserEntity userEntity, Long companyId, String vatNumber) { + log.info("Updating company VAT number. companyId: {}, userId: {}", companyId, userEntity.getId()); + if (StringUtils.isBlank(vatNumber)) { + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VAT_OR_TAX_CODE_REQUIRED)); + } + CompanyEntity companyEntity = validateCompany(companyId); + Long hubId = userEntity.getHub().getId(); + CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(vatNumber, hubId); + if (existingCompany != null && !existingCompany.getId().equals(companyId)) { + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); + } + VatCheckResponseBean vatCheckResponseBean = vatCheckDao.checkVatNumber(vatNumber, hubId); + Boolean validVat = Boolean.FALSE; + if (vatCheckResponseBean != null && Boolean.TRUE.equals(vatCheckResponseBean.getValid())) { + validVat = Boolean.TRUE; + } + CompanyEntity oldCompanyData = Utils.getClonedEntityForData(companyEntity); + companyEntity.setVatNumber(vatNumber); + companyEntity.setValidVat(validVat); + if (vatCheckResponseBean != null && vatCheckResponseBean.getVatCheckResponse() != null) { + companyEntity.setJson(Utils.convertMapIntoJsonString(vatCheckResponseBean.getVatCheckResponse())); + updateCodiceAtecoFieldWithNewJson(companyEntity); + } + companyRepository.save(companyEntity); + log.info("Company VAT number updated and saved. companyId: {}", companyEntity.getId()); + loggingUtil.addVersionHistory( + VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldCompanyData).newData(companyEntity).build()); + UserWithCompanyEntity userWithCompanyEntity = getUserWithCompany(userEntity.getId(), companyId); + return convertCompanyEntityToCompanyResponse(companyEntity, userWithCompanyEntity); + } + public CompanyEntity validateCompany(Long companyId) { log.info("Validating company. companyId: {}", companyId); return companyRepository.findById(companyId).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 8ada4d3c..9dc8b16d 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -60,6 +60,7 @@ public enum UserActionContextEnum { CREATE_COMPANY("CREATE_COMPANY"), GET_COMPANY("GET_COMPANY"), UPDATE_COMPANY("UPDATE_COMPANY"), + UPDATE_COMPANY_VAT_NUMBER("UPDATE_COMPANY_VAT_NUMBER"), DELETE_COMPANY("DELETE_COMPANY"), UPLOAD_COMPANY_DELEGATION("UPLOAD_COMPANY_DELEGATION"), DOWNLOAD_COMPANY_DELEGATION_TEMPLATE("DOWNLOAD_COMPANY_DELEGATION_TEMPLATE"), diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CompanyResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/CompanyResponse.java index ddd62f38..4752eed7 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CompanyResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CompanyResponse.java @@ -25,4 +25,5 @@ public class CompanyResponse extends BaseBean{ private String contactName; private String contactEmail; private String codiceAteco; + private Boolean validVat; } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java index 4c868f1e..6427341f 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java @@ -21,6 +21,8 @@ public interface CompanyService { CompanyResponse updateCompany(HttpServletRequest request, Long companyId, CompanyRequest companyRequest); + CompanyResponse updateCompanyVatNumber(HttpServletRequest request, Long companyId, String vatNumber); + CompanyResponse getCompany(HttpServletRequest request, Long companyId); void deleteCompany(HttpServletRequest request, Long companyId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java index f9a8b8c8..ba8779bb 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java @@ -56,6 +56,14 @@ public class CompanyServiceImpl implements CompanyService { validator.validateUserWithCompany(request, companyId); return companyDao.updateCompany(userEntity, companyId, companyRequest); } + + @Override + @Transactional(rollbackFor = Exception.class) + public CompanyResponse updateCompanyVatNumber(HttpServletRequest request, Long companyId, String vatNumber) { + UserEntity userEntity = validator.validateUser(request); + validator.validateUserWithCompany(request, companyId); + return companyDao.updateCompanyVatNumber(userEntity, companyId, vatNumber); + } @Override @Transactional(readOnly = true) diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java index a30e18be..3f566b5d 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java @@ -55,6 +55,19 @@ public interface CompanyApi { @Parameter(description = "The company id", required = true) @PathVariable("companyId") Long companyId, @Parameter(description = "Company request object", required = true) @RequestBody CompanyRequest companyRequest); + @Operation(summary = "Api to update only company VAT number", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @PutMapping(value = "/{companyId}/vatNumber", produces = { "application/json" }) + ResponseEntity> updateCompanyVatNumber(HttpServletRequest request, + @Parameter(description = "The company id", required = true) @PathVariable("companyId") Long companyId, + @Parameter(description = "VAT number", required = true) @RequestParam("vatNumber") String vatNumber); + + @Operation(summary = "Api to delete company", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java index 08d34ccf..d798ccfb 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java @@ -73,6 +73,15 @@ public class CompanyApiController implements CompanyApi{ .body(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMPANY_UPDATED_SUCCESS_MSG))); } + @Override + public ResponseEntity> updateCompanyVatNumber(HttpServletRequest request, Long companyId, String vatNumber) { + log.info("Update company VAT number with companyId: {}, vatNumber: {}", companyId, vatNumber); + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.UPDATE_COMPANY_VAT_NUMBER).build()); + CompanyResponse data = companyService.updateCompanyVatNumber(request, companyId, vatNumber); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMPANY_UPDATED_SUCCESS_MSG))); + } + @Override public ResponseEntity> getCompany(HttpServletRequest request, Long companyId) { From bdb7b7d885214b801d6286b926424b063d639622 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 12 Mar 2026 16:30:22 +0530 Subject: [PATCH 5/5] Updated the update company API --- .../tendermanagement/dao/CompanyDao.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 400d30f6..dd487692 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -250,15 +250,26 @@ public class CompanyDao { setIfUpdated(companyEntity::getCountry, companyEntity::setCountry, companyRequest.getCountry()); setIfUpdated(companyEntity::getNumberOfEmployees, companyEntity::setNumberOfEmployees, companyRequest.getNumberOfEmployees()); setIfUpdated(companyEntity::getAnnualRevenue, companyEntity::setAnnualRevenue, companyRequest.getAnnualRevenue()); -// -// if(StringUtils.isNotBlank(companyRequest.getVatNumber())) { -// CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); -// if(existingCompany!=null){ -// throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); -// } -// companyEntity.setVatNumber(companyRequest.getVatNumber()); -// -// } + + // Same VAT logic as updateCompanyVatNumber: run VAT check, set validVat, json, and codiceAteco when vatNumber is provided + if (StringUtils.isNotBlank(companyRequest.getVatNumber())) { + Long hubId = userEntity.getHub().getId(); + CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), hubId); + if (existingCompany != null) { + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); + } + VatCheckResponseBean vatCheckResponseBean = vatCheckDao.checkVatNumber(companyRequest.getVatNumber(), hubId); + Boolean validVat = Boolean.FALSE; + if (vatCheckResponseBean != null && Boolean.TRUE.equals(vatCheckResponseBean.getValid())) { + validVat = Boolean.TRUE; + } + companyEntity.setVatNumber(companyRequest.getVatNumber()); + companyEntity.setValidVat(validVat); + if (vatCheckResponseBean != null && vatCheckResponseBean.getVatCheckResponse() != null) { + companyEntity.setJson(Utils.convertMapIntoJsonString(vatCheckResponseBean.getVatCheckResponse())); + updateCodiceAtecoFieldWithNewJson(companyEntity); + } + } companyRepository.save(companyEntity); log.info("Company updated and saved. companyId: {}", companyEntity.getId());