use utf8;
use strict;
use warnings; no warnings "redefine";
use Fehler qw(problem);
use Loader qw(acct_postfach line_printer);
use noris::Table;
use Number::Format;

# Der DECIMAL_POINT wirt hier zwar nicht gebraucht, aber Number::Format legt
# Wert darauf, dass er auf was Anderes gesetzt ist als der THOUSANDS_SEP, vgl.
# Ticket 10093131:
my $format = Number::Format->new(
    THOUSANDS_SEP => '.',
    DECIMAL_POINT => ',',
) or die;

sub list_person_postfach($;$) {
	my ( $person_id, $kn ) = @_;
	my $t = noris::Table->new();
	my ( $number, $octets, $folders ) = acct_postfach($person_id, sub { $t->info("Prüfe:", shift); } ) or return;
	line_printer;

	{
		no warnings 'void';
		$Db::pr_fh; # once-Warnung
	}

	print $Db::pr_fh 'In diesem Postfach lieg'
	  . ( $number == 1
		? 't eine Mail'
		: 'en ' . $format->format_number($number) . ' Mails' )
	  . ( $octets > 0
		  && ' mit einer Gesamtgröße von '
		  . $format->format_number($octets) . ' Byte'
		  . ( $octets != 1 && 's' ) );

	if ( !$folders || keys %$folders > 9 ) {
		print $Db::pr_fh ".\n";
	}
	else {
		print $Db::pr_fh ":\n";
		$t->titel(
			{ name => 'Ordner', format => '%-20s' },
			{ name => 'Anzahl', format => ' %6s'  },
			{ name => 'Größe',  format => ' %15s' },
		);
		$t->ausrichten( right => ( 2, 3 ) );

		$t->daten(
			$_,
			$folders->{$_}{messages},
			$format->format_number( $folders->{$_}{size} )
		) for keys %$folders;

		$t->drucken();
	}

}

1;
