package library.step4;

import java.util.List;

// Paso 4 · Extract Class: el formato del estado de cuenta se fue a
// StatementFormatter. LibraryDesk solo coordina: pide multas y las junta.
public class LibraryDesk {

    private final StatementFormatter formatter = new StatementFormatter();

    public String statement(Member member, List<Loan> loans) {
        StringBuilder text = new StringBuilder(formatter.header(member));
        for (Loan loan : loans) {
            text.append(formatter.line(loan, member.fineFor(loan)));
        }
        text.append(formatter.footer(totalFine(member, loans)));
        return text.toString();
    }

    public int totalFine(Member member, List<Loan> loans) {
        int total = 0;
        for (Loan loan : loans) {
            total += member.fineFor(loan);
        }
        return total;
    }
}
