Loan externalId unique validation

This commit is contained in:
Jose Alberto Hernandez
2022-07-04 15:55:05 +02:00
committed by Arnold Gálovics
parent 2d07e8c867
commit 357062a186
6 changed files with 74 additions and 2 deletions
@@ -161,4 +161,6 @@ public interface LoanRepository extends JpaRepository<Loan, Long>, JpaSpecificat
@Query(FIND_BY_ACCOUNT_NUMBER)
Loan findLoanAccountByAccountNumber(@Param("accountNumber") String accountNumber);
boolean existsByExternalId(@Param("externalId") String externalId);
}
@@ -240,6 +240,10 @@ public class LoanRepositoryWrapper {
return this.repository.findNonClosedLoanByAccountNumber(accountNumber);
}
public boolean existLoanByExternalId(final String externalId) {
return this.repository.existsByExternalId(externalId);
}
// Looks like we need complete entity
@Transactional(readOnly = true)
public Loan findNonClosedLoanThatBelongsToClient(@Param("loanId") Long loanId, @Param("clientId") Long clientId) {
@@ -303,6 +303,16 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
this.fromApiJsonDeserializer.validateForCreate(command.json(), isMeetingMandatoryForJLGLoans, loanProduct);
// Validate If the externalId is already registered
final String externalId = this.fromJsonHelper.extractStringNamed("externalId", command.parsedJson());
if (StringUtils.isNotBlank(externalId)) {
final boolean existByExternalId = this.loanRepositoryWrapper.existLoanByExternalId(externalId);
if (existByExternalId) {
throw new GeneralPlatformDomainRuleException("error.msg.loan.with.externalId.already.used",
"Loan with externalId is already registered.");
}
}
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loan");