package library;

import java.time.LocalDate;

/** Un préstamo: qué ejemplar, a quién, y hasta cuándo. */
public class Loan {
    private final Copy copy;
    private final Member member;
    private final LocalDate due;
    private boolean returned = false;

    Loan(Copy copy, Member member, LocalDate due) {
        this.copy = copy;
        this.member = member;
        this.due = due;
    }

    public Copy copy() {
        return copy;
    }

    public Member member() {
        return member;
    }

    public LocalDate due() {
        return due;
    }

    public boolean isReturned() {
        return returned;
    }

    /** Vencido: no se devolvió y la fecha límite ya pasó. Loan tiene los datos, así que decide Loan. */
    public boolean isOverdue(LocalDate today) {
        return !returned && today.isAfter(due);
    }

    void markReturned() {
        returned = true;
        copy.markReturned();
    }
}
