
=head1 check_person_braucht_nicht

Überprüft, ob bei der Person aufgrund einer bestehenden Assoziierung unter einem
entsprechend markierten Dienst ein bestimmte Attribut gesetzt sein muss.

=head2 Argumente

=over 4

=item $person_id

ID des fraglichen Personenobjekts

=item $attr

Name des Attributs, also der Spalte in Tabelle C<person>

=back

=head2 Beispiel

	return if check_person_braucht_nicht( 3050, 'email' );

=head2 Ergebnis

Falls die Person das Attribut benötigt, wird ein Problem zurückgemeldet,
andernfalls ein wahrer Wert.

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(aufzaehlung get_gruppen get_descr test_gruppe);
use Dbase::Help qw(DoSelect);
use Fehler qw(problem);

sub check_person_braucht_nicht($$) {
	my ( $person_id, $attr ) = @_;
	my $ok = 1;

	my ( $requires_attr_grs, $requires_attr_grc ) =
	  get_gruppen( dienst_ident => "requires_$attr" );
	return $ok unless $requires_attr_grs; # jibbet nich

	DoSelect {
		my ( $dienst, $kunden ) = @_;

		return
		  unless test_gruppe(
			dienst => $dienst,
			$requires_attr_grs, $requires_attr_grc
		  );

		problem('Diese Person ist bei '
			  . aufzaehlung( split /,/, $kunden )
			  . ' unter Dienst '
			  . get_descr( dienst => $dienst )
			  . "\nassoziiert und braucht daher dieses Attribut.\n" );
		$ok = '';
	  }
	  <<_;
	SELECT   kundemail.dienst, GROUP_CONCAT(kunde.name)
	FROM     kunde, kundemail
	WHERE    kundemail.person = $person_id
	     AND kundemail.kunde  = kunde.id
	GROUP BY kundemail.dienst
	ORDER BY kundemail.dienst, kunde.name
_
	return $ok;
}

1;
