Done ticket GEPAFINBE-215
This commit is contained in:
@@ -420,7 +420,8 @@ public class FormDao {
|
||||
.matchesPattern(value, fieldValidatorBean.getPattern(), fieldLabel) // Only applies if pattern is present
|
||||
.validateCustom(value, fieldValidatorBean.getCustom(), fieldLabel,contentResponseBean); // Add the custom validation here
|
||||
if (fieldValidatorBean.getCustom() != null && fieldValidatorBean.getCustom().equals(GepafinConstant.IS_PIVA)) {
|
||||
String error = validateVatNumber(value, fieldValidatorBean.getCustom(), fieldLabel);
|
||||
Long hubId = applicationEntity.getHubId();
|
||||
String error = validateVatNumber(value, fieldLabel,hubId);
|
||||
if(error != null) {
|
||||
validator.addError(error);
|
||||
}
|
||||
@@ -504,14 +505,14 @@ public class FormDao {
|
||||
}).filter(value -> !value.isEmpty()).findFirst().orElse(contentResponseBean.getId());
|
||||
}
|
||||
|
||||
public String validateVatNumber(String value,String customRule,String fieldId){
|
||||
public String validateVatNumber(String value,String fieldId, Long hubId){
|
||||
String error=null;
|
||||
|
||||
if (value!=null && value.matches("^\\d{1,11}$")) {
|
||||
// Map<String, Object> customData=null;
|
||||
try {
|
||||
// Map<String, Object> vatCheckResponse = vatCheckDao.checkVatNumberApi(value);
|
||||
vatCheckDao.checkVatNumber(value);
|
||||
vatCheckDao.checkVatNumber(value, hubId);
|
||||
// if (Boolean.FALSE.equals(CollectionUtils.isEmpty(vatCheckResponse))) {
|
||||
// customData = vatCheckResponse;
|
||||
// }
|
||||
|
||||
@@ -3,12 +3,17 @@ package net.gepafin.tendermanagement.dao;
|
||||
import feign.FeignException;
|
||||
import net.gepafin.tendermanagement.config.Translator;
|
||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||
import net.gepafin.tendermanagement.entities.CompanyEntity;
|
||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
||||
import net.gepafin.tendermanagement.enums.VatCheckVersionTypeEnum;
|
||||
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
|
||||
import net.gepafin.tendermanagement.repositories.CompanyRepository;
|
||||
import net.gepafin.tendermanagement.repositories.GlobalConfigRepository;
|
||||
import net.gepafin.tendermanagement.service.feignClient.VatCheckV1Service;
|
||||
import net.gepafin.tendermanagement.service.feignClient.VatCheckV2Service;
|
||||
import net.gepafin.tendermanagement.util.Utils;
|
||||
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
||||
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -48,6 +53,9 @@ public class VatCheckDao {
|
||||
@Autowired
|
||||
private GlobalConfigRepository globalConfigRepository;
|
||||
|
||||
@Autowired
|
||||
private CompanyRepository companyRepository;
|
||||
|
||||
public final Logger log = LoggerFactory.getLogger(VatCheckDao.class);
|
||||
|
||||
public VatCheckResponseBean checkVatNumberV1(String vatNumber) {
|
||||
@@ -56,6 +64,7 @@ public class VatCheckDao {
|
||||
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
|
||||
if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) {
|
||||
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
|
||||
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V1);
|
||||
return vatCheckResponseBean;
|
||||
}
|
||||
try {
|
||||
@@ -96,6 +105,7 @@ public class VatCheckDao {
|
||||
|
||||
public static void processValidResponseV1(Map<String, Object> responseMap, VatCheckResponseBean vatCheckResponseBean) {
|
||||
Object dataObj = responseMap.get("data");
|
||||
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V1);
|
||||
if (dataObj instanceof Map<?, ?> rawDataMap) {
|
||||
Map<String, Object> responseBody = new LinkedHashMap<>();
|
||||
rawDataMap.forEach((k, v) -> {
|
||||
@@ -118,9 +128,20 @@ public class VatCheckDao {
|
||||
|
||||
}
|
||||
|
||||
public VatCheckResponseBean checkVatNumber(String vatNumber) {
|
||||
public VatCheckResponseBean checkVatNumber(String vatNumber, Long hubId) {
|
||||
|
||||
try {
|
||||
CompanyEntity company = companyRepository.findByVatNumberAndHubId(vatNumber, hubId);
|
||||
|
||||
if (company != null && Boolean.FALSE.equals(StringUtils.isEmpty(company.getJson()))) {
|
||||
Map<String, Object> responseMap = Utils.convertJsonStringToMap(company.getJson());
|
||||
|
||||
VatCheckResponseBean jsonResponse = validateJsonFromDb(responseMap);
|
||||
if (jsonResponse != null) {
|
||||
return jsonResponse;
|
||||
}
|
||||
}
|
||||
|
||||
String vatApiVersion = getVatCheckVersion();
|
||||
if(!isVatCheckApiV2(vatApiVersion)){
|
||||
return checkVatNumberV1(vatNumber);
|
||||
@@ -134,6 +155,26 @@ public class VatCheckDao {
|
||||
return vatCheckResponseBean;
|
||||
}
|
||||
}
|
||||
private VatCheckResponseBean validateJsonFromDb(Map<String, Object> responseMap) {
|
||||
if (responseMap == null || !responseMap.containsKey("data")) return null;
|
||||
|
||||
Object data = responseMap.get("data");
|
||||
|
||||
if (data instanceof Map<?, ?> dataMap && !dataMap.isEmpty()) {
|
||||
VatCheckResponseBean response = new VatCheckResponseBean();
|
||||
processValidResponseV1(responseMap, response);
|
||||
return response;
|
||||
}
|
||||
|
||||
if (data instanceof List<?> dataList && !dataList.isEmpty()) {
|
||||
VatCheckResponseBean response = new VatCheckResponseBean();
|
||||
processValidResponse(responseMap, response);
|
||||
return response;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public VatCheckResponseBean checkVatNumberV2(String vatNumber) {
|
||||
|
||||
@@ -142,6 +183,7 @@ public class VatCheckDao {
|
||||
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
|
||||
if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) {
|
||||
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
|
||||
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V2);
|
||||
return vatCheckResponseBean;
|
||||
}
|
||||
try {
|
||||
@@ -175,6 +217,7 @@ public class VatCheckDao {
|
||||
|
||||
public static void processValidResponse(Map<String, Object> responseMap, VatCheckResponseBean vatCheckResponseBean) {
|
||||
|
||||
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V2);
|
||||
if (responseMap == null || !responseMap.containsKey("data")) {
|
||||
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package net.gepafin.tendermanagement.model.response;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.gepafin.tendermanagement.enums.VatCheckVersionTypeEnum;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
@@ -9,4 +11,5 @@ public class VatCheckResponseBean {
|
||||
private Boolean valid;
|
||||
private Map<String, Object> vatCheckResponse;
|
||||
private String message;
|
||||
private VatCheckVersionTypeEnum version;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,9 @@ public class CompanyServiceImpl implements CompanyService {
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public VatCheckResponseBean checkVatNumber(HttpServletRequest request, String vatNumber) {
|
||||
return vatCheckDao.checkVatNumber(vatNumber);
|
||||
UserEntity userEntity = validator.validateUser(request);
|
||||
Long hubId = userEntity.getHub().getId();
|
||||
return vatCheckDao.checkVatNumber(vatNumber, hubId);
|
||||
}
|
||||
@Override
|
||||
public CompanyEntity validateCompany(Long companyId) {
|
||||
|
||||
Reference in New Issue
Block a user