Added json field in company

This commit is contained in:
nisha
2024-12-04 20:02:45 +05:30
parent 346b550466
commit dcaa769903
13 changed files with 71 additions and 24 deletions

View File

@@ -305,5 +305,6 @@ public class GepafinConstant {
public static final String USER_ID = "userId"; public static final String USER_ID = "userId";
public static final String LOGIN_ATTEMPT_ID = "loginAttemptId"; public static final String LOGIN_ATTEMPT_ID = "loginAttemptId";
public static final String USER_ACTION_ID = "userActionId"; public static final String USER_ACTION_ID = "userActionId";
public static final String VALID_VATNUMBER_MSG = "valid.vatnumber.message";
} }

View File

@@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.dao;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Map;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.entities.*;
@@ -78,6 +79,8 @@ public class CompanyDao {
} else { } else {
validateCompany(userEntity, companyRequest); validateCompany(userEntity, companyRequest);
CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(userEntity, companyRequest); CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(userEntity, companyRequest);
companyEntity.setJson(Utils.convertMapIntoJsonString(companyRequest.getVatCheckResponse()) );
CompanyEntity companyData = companyRepository.save(companyEntity); CompanyEntity companyData = companyRepository.save(companyEntity);
/** This code is responsible for adding a version history log for "creating company" operation. **/ /** This code is responsible for adding a version history log for "creating company" operation. **/
@@ -178,7 +181,6 @@ public class CompanyDao {
CompanyEntity oldCompanyData = Utils.getClonedEntityForData(companyEntity); CompanyEntity oldCompanyData = Utils.getClonedEntityForData(companyEntity);
setIfUpdated(companyEntity::getCompanyName, companyEntity::setCompanyName, companyRequest.getCompanyName()); setIfUpdated(companyEntity::getCompanyName, companyEntity::setCompanyName, companyRequest.getCompanyName());
setIfUpdated(companyEntity::getVatNumber, companyEntity::setVatNumber, companyRequest.getVatNumber());
setIfUpdated(companyEntity::getCodiceFiscale, companyEntity::setCodiceFiscale, companyRequest.getCodiceFiscale()); setIfUpdated(companyEntity::getCodiceFiscale, companyEntity::setCodiceFiscale, companyRequest.getCodiceFiscale());
setIfUpdated(companyEntity::getAddress, companyEntity::setAddress, companyRequest.getAddress()); setIfUpdated(companyEntity::getAddress, companyEntity::setAddress, companyRequest.getAddress());
setIfUpdated(companyEntity::getPhoneNumber, companyEntity::setPhoneNumber, companyRequest.getPhoneNumber()); setIfUpdated(companyEntity::getPhoneNumber, companyEntity::setPhoneNumber, companyRequest.getPhoneNumber());
@@ -192,6 +194,17 @@ public class CompanyDao {
setIfUpdated(companyEntity::getAnnualRevenue, companyEntity::setAnnualRevenue, companyRequest.getAnnualRevenue()); setIfUpdated(companyEntity::getAnnualRevenue, companyEntity::setAnnualRevenue, companyRequest.getAnnualRevenue());
setIfUpdated(companyEntity::getContactName, companyEntity::setContactName, companyRequest.getContactName()); setIfUpdated(companyEntity::getContactName, companyEntity::setContactName, companyRequest.getContactName());
setIfUpdated(companyEntity::getContactEmail, companyEntity::setContactEmail, companyRequest.getContactEmail()); setIfUpdated(companyEntity::getContactEmail, companyEntity::setContactEmail, companyRequest.getContactEmail());
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());
String responseJson = companyRequest.getVatCheckResponse() != null ? Utils.convertMapIntoJsonString(companyRequest.getVatCheckResponse()) : null;
setIfUpdated(companyEntity::getJson, companyEntity::setJson, responseJson);
}
companyRepository.save(companyEntity); companyRepository.save(companyEntity);
/** This code is responsible for adding a version history log for the "Update company" operation. **/ /** This code is responsible for adding a version history log for the "Update company" operation. **/

View File

@@ -4,15 +4,11 @@ import feign.FeignException;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.entities.CompanyEntity;
import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
import net.gepafin.tendermanagement.model.request.UserActionRequest;
import net.gepafin.tendermanagement.service.feignClient.VatCheckService; import net.gepafin.tendermanagement.service.feignClient.VatCheckService;
import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.LoggingUtil;
import net.gepafin.tendermanagement.util.Utils; 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.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -49,10 +45,13 @@ public class VatCheckDao {
@Autowired @Autowired
private HttpServletRequest request; private HttpServletRequest request;
public Map<String, Object> checkVatNumberApi(String vatNumber) { 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))) { if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) {
return new HashMap<>(); vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
return vatCheckResponseBean;
} }
Map<String, Object> responseBody = new HashMap<>(); Map<String, Object> responseBody = new HashMap<>();
try { try {
@@ -77,22 +76,28 @@ public class VatCheckDao {
responseBody.remove("id"); responseBody.remove("id");
Map<String, Object> data = new LinkedHashMap<>(); Map<String, Object> data = new LinkedHashMap<>();
data.put("data", responseBody); data.put("data", responseBody);
return data; vatCheckResponseBean.setValid(true);
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.VALID_VATNUMBER_MSG));
vatCheckResponseBean.setVatCheckResponse(data);
} }
} }
} catch (FeignException ex) { } catch (FeignException ex) {
log.error("Exception occurred while checking vat number: {0}", ex); log.error("Exception occurred while checking vat number: {0}", ex);
Utils.callException(ex.status(), ex); Utils.callException(ex.status(), ex);
} }
return responseBody; return vatCheckResponseBean;
} }
public Map<String, Object> checkVatNumber(String vatNumber) { public VatCheckResponseBean checkVatNumber(String vatNumber) {
try { try {
return checkVatNumberApi(vatNumber); return checkVatNumberApi(vatNumber);
} catch (Exception e) { } catch (Exception e) {
throw new CustomValidationException(Status.VALIDATION_ERROR, log.error("Error in checkVatNumber: {}", e.getMessage());
Translator.toLocale(GepafinConstant.INVALID_VATNUMBER)); VatCheckResponseBean vatCheckResponseBean = new VatCheckResponseBean();
vatCheckResponseBean.setValid(false);
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
return vatCheckResponseBean;
} }
} }
} }

View File

@@ -63,4 +63,7 @@ public class CompanyEntity extends BaseEntity{
@JoinColumn(name = "HUB_ID") @JoinColumn(name = "HUB_ID")
private HubEntity hub; private HubEntity hub;
@Column(name = "JSON")
private String json;
} }

View File

@@ -1,6 +1,7 @@
package net.gepafin.tendermanagement.model.request; package net.gepafin.tendermanagement.model.request;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Map;
import lombok.Data; import lombok.Data;
@@ -23,4 +24,5 @@ public class CompanyRequest {
private Boolean isLegalRepresentant; private Boolean isLegalRepresentant;
private String contactName; private String contactName;
private String contactEmail; private String contactEmail;
private Map<String, Object> vatCheckResponse;
} }

View File

@@ -0,0 +1,12 @@
package net.gepafin.tendermanagement.model.response;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
@Getter
@Setter
public class VatCheckResponseBean {
private Boolean valid;
private Map<String, Object> vatCheckResponse;
private String message;
}

View File

@@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -26,7 +27,7 @@ public interface CompanyService {
List<CompanyResponse> getCompanyByUserId(HttpServletRequest request, Long userId); List<CompanyResponse> getCompanyByUserId(HttpServletRequest request, Long userId);
Map<String, Object> checkVatNumber(HttpServletRequest request, String vatNumber); VatCheckResponseBean checkVatNumber(HttpServletRequest request, String vatNumber);
CompanyEntity validateCompany(Long companyId); CompanyEntity validateCompany(Long companyId);
@@ -44,5 +45,4 @@ public interface CompanyService {
UserWithCompanyEntity getUserWithCompanyEntity(Long userId,Long companyId); UserWithCompanyEntity getUserWithCompanyEntity(Long userId,Long companyId);
void removeCompanyFromList(HttpServletRequest request, Long companyId); void removeCompanyFromList(HttpServletRequest request, Long companyId);
} }

View File

@@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
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;
@@ -78,7 +79,7 @@ public class CompanyServiceImpl implements CompanyService {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public Map<String, Object> checkVatNumber(HttpServletRequest request, String vatNumber) { public VatCheckResponseBean checkVatNumber(HttpServletRequest request, String vatNumber) {
return vatCheckDao.checkVatNumber(vatNumber); return vatCheckDao.checkVatNumber(vatNumber);
} }
@Override @Override

View File

@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.web.rest.api;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
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.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
@@ -94,7 +95,7 @@ public interface CompanyApi {
@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) })) })
@GetMapping(value = "/vatNumber", produces = { "application/json" }) @GetMapping(value = "/vatNumber", produces = { "application/json" })
ResponseEntity<Response<Map<String,Object>>> checkVatNumber(HttpServletRequest request, ResponseEntity<Response<VatCheckResponseBean>> checkVatNumber(HttpServletRequest request,
@Parameter(description = "The vatNumber of company", required = true) @RequestParam("vatNumber") String vatNumber); @Parameter(description = "The vatNumber of company", required = true) @RequestParam("vatNumber") String vatNumber);
@Operation(summary = "Api to download company delegation template", responses = { @ApiResponse(responseCode = "200", description = "OK"), @Operation(summary = "Api to download company delegation template", responses = { @ApiResponse(responseCode = "200", description = "OK"),

View File

@@ -7,6 +7,7 @@ import java.util.Map;
import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.enums.UserActionContextEnum;
import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum;
import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.request.UserActionRequest;
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.LoggingUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -111,15 +112,15 @@ public class CompanyApiController implements CompanyApi{
} }
@Override @Override
public ResponseEntity<Response<Map<String,Object>>> checkVatNumber(HttpServletRequest request, String vatNumber) { public ResponseEntity<Response<VatCheckResponseBean>> checkVatNumber(HttpServletRequest request, String vatNumber) {
log.info("check VatNumber with: {}", vatNumber); log.info("check VatNumber with: {}", vatNumber);
/** This code is responsible for creating user action logs for the "Check vat number" operation. **/ /** This code is responsible for creating user action logs for the "Check vat number" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.CHECK_COMPANY_VAT_NUMBER).build()); loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.CHECK_COMPANY_VAT_NUMBER).build());
Map<String,Object> data = companyService.checkVatNumber(request, vatNumber); VatCheckResponseBean vatCheckResponseBean = companyService.checkVatNumber(request, vatNumber);
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.CHECK_VATNUMBER_SUCCESS_MSG))); .body(new Response<>(vatCheckResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CHECK_VATNUMBER_SUCCESS_MSG)));
} }
@Override @Override

View File

@@ -1962,4 +1962,10 @@
</addColumn> </addColumn>
</changeSet> </changeSet>
<changeSet id="04-12-2024_2" author="Nisha Kashyap">
<addColumn tableName="company">
<column name="JSON" type="TEXT">
</column>
</addColumn>
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View File

@@ -313,3 +313,4 @@ company.id.required.for.preferred.call=Company ID is required when requesting on
response.days.not.null=Response days should not be null and greater than zero. response.days.not.null=Response days should not be null and greater than zero.
application.cannot.approved.or.rejected=Application cannot be approved and rejected because amendment is active. application.cannot.approved.or.rejected=Application cannot be approved and rejected because amendment is active.
valid.vatnumber.message=The VAT number is valid.

View File

@@ -307,3 +307,4 @@ user.must.be.associated.with.company.to.create.application=Devi essere associato
company.id.required.for.preferred.call=ID azienda obbligatorio quando si richiedono solo chiamate preferite. company.id.required.for.preferred.call=ID azienda obbligatorio quando si richiedono solo chiamate preferite.
response.days.not.null=I giorni di risposta non devono essere nulli e maggiori di zero. response.days.not.null=I giorni di risposta non devono essere nulli e maggiori di zero.
application.cannot.approved.or.rejected=La domanda non può essere approvata o rifiutata perché l'emendamento è attivo. application.cannot.approved.or.rejected=La domanda non può essere approvata o rifiutata perché l'emendamento è attivo.
valid.vatnumber.message=Il numero di partita IVA è valido.