@EventListener public void onClaimed(final RequestClaimedEvent claimedEvent) { requestClaimRepository.findByRequestId(claimedEvent.getRequestDto().getId()) .forEach(requestClaim -> { requestClaim.setStatus(ClaimRequestStatus.PROCESSED); requestClaimRepository.save(requestClaim); }); } }
@Scheduled(fixedDelay = 300_000L) public void cleanClaims() { final List<RequestClaim> claims = requestClaimRepository.findByStatus(ClaimRequestStatus.APPROVED); claims.stream() .filter(x -> x.getTransactionHash() != null) .filter(x -> azraelClient.getTransactionStatus(x.getTransactionHash()).equals(TransactionStatus.FAILED)) .forEach(x -> { x.setStatus(ClaimRequestStatus.TRANSACTION_FAILED); requestClaimRepository.save(x); }); }
@Transactional @Override public void decline(Long requestClaimId) { RequestClaim requestClaim = requestClaimRepository.findOne(requestClaimId).orElseThrow(() -> new RuntimeException("Request claim not found")); Request request = requestRepository.findOne(requestClaim.getRequestId()).orElseThrow(ResourceNotFoundException::new); request.setStatus(RequestStatus.FUNDED); requestClaim.setStatus(ClaimRequestStatus.DECLINED); requestRepository.save(request); requestClaimRepository.save(requestClaim); }
@Transactional @Override public void approve(Long requestClaimId) { RequestClaim requestClaim = requestClaimRepository.findOne(requestClaimId).orElseThrow(() -> new RuntimeException("Request claim not found")); Request request = requestRepository.findOne(requestClaim.getRequestId()).orElseThrow(ResourceNotFoundException::new); ClaimSignature sig = azraelClient.getSignature(createSignClaimCommand(requestClaim, request)); try { final ClaimTransaction claimTransaction = azraelClient.submitClaim(sig); request.setStatus(RequestStatus.CLAIM_APPROVED); requestClaim.setStatus(ClaimRequestStatus.APPROVED); requestClaim.setTransactionHash(prettify(claimTransaction.getTransactionHash())); requestClaim.setTransactionSubmitTime(LocalDateTime.now()); requestRepository.save(request); requestClaimRepository.save(requestClaim); } catch (final Exception ex) { throw new IllegalArgumentException("Unable to submit claim transaction: " + ex.getMessage()); } }