package model;

import java.time.LocalDate;

public class Loan {
    private String id;
    private Book book;
    private Member member;
    private LocalDate borrowDate;
    private LocalDate returnDate;
    private boolean returned;

    public Loan(String id, Book book, Member member) {
        this.id = id;
        this.book = book;
        this.member = member;
        this.borrowDate = LocalDate.now();
        this.returned = false;
    }

    public void returnBook() {
        this.returnDate = LocalDate.now();
        this.returned = true;
        this.book.setAvailable(true);
    }

    public String getId() { return id; }
    public Book getBook() { return book; }
    public Member getMember() { return member; }
    public boolean isReturned() { return returned; }

    @Override
    public String toString() {
        String status = returned
            ? "Returned on " + returnDate
            : "Borrowed on " + borrowDate + " (not returned)";
        return String.format("Loan[%s] %s -> \"%s\" | %s",
            id, member.getName(), book.getTitle(), status);
    }
}
