package library;

import java.time.LocalDate;
import java.util.ArrayList;

/** Un socio de la biblioteca. Invariante: nunca tiene más de MAX_LOANS préstamos activos. */
public class Member {
    public static final int MAX_LOANS = 3;

    private final String id;
    private final String name;
    private final ArrayList<Loan> activeLoans = new ArrayList<>();

    public Member(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String id() {
        return id;
    }

    public String name() {
        return name;
    }

    public int activeLoanCount() {
        return activeLoans.size();
    }

    public boolean canBorrow() {
        return activeLoans.size() < MAX_LOANS;
    }

    /** Cuántos de sus préstamos están vencidos hoy. */
    public int overdueCount(LocalDate today) {
        int n = 0;
        for (Loan loan : activeLoans) {
            if (loan.isOverdue(today)) {
                n++;
            }
        }
        return n;
    }

    void addLoan(Loan loan) {
        activeLoans.add(loan);
    }

    void removeLoan(Loan loan) {
        activeLoans.remove(loan);
    }
}
