class PiisConsentValidation {

    public PiisConsentValidationResult validatePiisConsentData(List<PiisConsent> piisConsents) {
        if (CollectionUtils.isEmpty(piisConsents)) {
            return new PiisConsentValidationResult(ErrorHolder.builder(PIIS_400)
                                                       .tppMessages(TppMessageInformation.of(NO_PIIS_ACTIVATION))
                                                       .build());
        }

        Optional<PiisConsent> filteredPiisConsent = piisConsents.stream()
                                                        .filter(e -> EnumSet.of(ConsentStatus.VALID, ConsentStatus.RECEIVED).contains(e.getConsentStatus()))
                                                        .filter(this::isNotExpired)
                                                        .filter(this::filterByTpp)
                                                        .sorted(Comparator.comparing(PiisConsent::getCreationTimestamp, Comparator.nullsLast(Comparator.reverseOrder())))
                                                        .findAny();

        return filteredPiisConsent.map(PiisConsentValidationResult::new)
                   .orElseGet(() -> new PiisConsentValidationResult(ErrorHolder.builder(PIIS_400)
                                                                        .tppMessages(TppMessageInformation.of(CONSENT_UNKNOWN_400))
                                                                        .build()));

    }

}