GetTransactionHistoryUseCase.java
package com.github.jenkaby.bikerental.finance.application.usecase;
import com.github.jenkaby.bikerental.finance.PaymentMethod;
import com.github.jenkaby.bikerental.finance.domain.model.TransactionHistoryFilter;
import com.github.jenkaby.bikerental.finance.domain.model.TransactionSourceType;
import com.github.jenkaby.bikerental.finance.domain.model.TransactionType;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Page;
import com.github.jenkaby.bikerental.shared.domain.model.vo.PageRequest;
import org.jspecify.annotations.Nullable;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.UUID;
public interface GetTransactionHistoryUseCase {
Page<TransactionDto> execute(UUID customerId, TransactionHistoryFilter filter, PageRequest pageRequest);
record TransactionDto(
UUID customerId,
BigDecimal amount,
TransactionType type,
Instant recordedAt,
@Nullable PaymentMethod paymentMethod,
@Nullable String reason,
@Nullable TransactionSourceType sourceType,
@Nullable String sourceId
) {
}
}