package library.step3;

import java.util.List;

// Paso 3 · Move Function: cada cálculo se mudó a la clase que tiene los datos.
// Los días de atraso, a Loan; la tarifa diaria, a ItemKind; la multa, a
// MemberType (y Member la ofrece). En LibraryDesk ya no queda feature envy.
public class LibraryDesk {

    public String statement(Member member, List<Loan> loans) {
        String text = "Multas de " + member.name() + " (" + member.type() + ")\n";
        for (Loan loan : loans) {
            text += String.format("  %-18s %3d días  %s\n",
                    loan.title(), loan.daysLate(), money(member.fineFor(loan)));
        }
        return text + "Total: " + money(totalFine(member, loans)) + "\n";
    }

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

    private static String money(int cents) {
        return String.format("S/ %d.%02d", cents / 100, cents % 100);
    }
}
