package net.gepafin.tendermanagement.dao; import feign.FeignException; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.model.response.VatCheckResponseBean; import net.gepafin.tendermanagement.service.feignClient.VatCheckService; import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import java.net.URI; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; @Component public class VatCheckDao { @Autowired private VatCheckService vatCheckService; @Value("${vatCheckNewToken}") public String vatCheckNewToken; @Value("${isVatCheckGloballyDisabled}") public String isVatCheckGloballyDisabled; public final Logger log = LoggerFactory.getLogger(VatCheckDao.class); @Autowired private LoggingUtil loggingUtil; @Autowired private HttpServletRequest request; public VatCheckResponseBean checkVatNumberApi(String vatNumber) { VatCheckResponseBean vatCheckResponseBean = new VatCheckResponseBean(); vatCheckResponseBean.setValid(false); vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER)); if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) { vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER)); return vatCheckResponseBean; } Map responseBody = new HashMap<>(); try { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); headers.setContentType(MediaType.APPLICATION_JSON); headers.set(GepafinConstant.AUTHORIZATION, "Bearer " + vatCheckNewToken); headers.add(org.apache.http.HttpHeaders.USER_AGENT, "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"); URI baseUrl = URI.create(GepafinConstant.CHECK_VATNUMBER_V2_NEW_URL); ResponseEntity> response = vatCheckService.checkVatNumber(baseUrl, vatNumber, headers); if (response.getStatusCode() == HttpStatus.OK && response.hasBody()) { log.info("Successfully checked vat number"); Map responseMap = response.getBody(); if (responseMap != null && responseMap.containsKey("data")) { responseBody = (Map) responseMap.get("data"); responseBody.remove("timestamp_creation"); responseBody.remove("timestamp_last_update"); responseBody.remove("data_iscrizione"); responseBody.remove("id"); Map data = new LinkedHashMap<>(); data.put("data", responseBody); vatCheckResponseBean.setValid(true); vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.VALID_VATNUMBER_MSG)); vatCheckResponseBean.setVatCheckResponse(data); } } } catch (FeignException ex) { log.error("Exception occurred while checking vat number: {0}", ex); Utils.callException(ex.status(), ex); } return vatCheckResponseBean; } public VatCheckResponseBean checkVatNumber(String vatNumber) { try { return checkVatNumberApi(vatNumber); } catch (Exception e) { log.error("Error in checkVatNumber: {}", e.getMessage()); VatCheckResponseBean vatCheckResponseBean = new VatCheckResponseBean(); vatCheckResponseBean.setValid(false); vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER)); return vatCheckResponseBean; } } }