CustomerAccount.java
package com.github.jenkaby.bikerental.finance.domain.model;
import com.github.jenkaby.bikerental.shared.domain.CustomerRef;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Money;
import lombok.Getter;
import lombok.experimental.SuperBuilder;
@Getter
@SuperBuilder
public class CustomerAccount extends Account {
private final CustomerRef customerRef;
@Override
public AccountType getAccountType() {
return AccountType.CUSTOMER;
}
public SubLedger getWallet() {
return getSubLedger(LedgerType.CUSTOMER_WALLET);
}
public SubLedger getOnHold() {
return getSubLedger(LedgerType.CUSTOMER_HOLD);
}
public boolean isBalanceSufficient(Money amount) {
var available = availableBalance();
return !available.isLessThan(amount);
}
public final Money availableBalance() {
return getWallet().getBalance();
}
}