use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn Do qquote);
use Dbase::Globals qw(content);
use Fehler qw(problem);
use Loader qw(line_in log_update);

sub set_hardware_hardware_id($;$) {
	my ( $idi, $kn ) = @_;
	content( my $hardware_id =
		  line_in 'Hardware-ID' . ( !defined $idi && ' (optional)' ) . ': ' )
	  or return defined $idi ? () : 'NULL';

	if ( $hardware_id eq '-' ) { $hardware_id = 'NULL' }
	else {
		$hardware_id = uc $hardware_id;

		return problem(
			qq(Das ist keine gültige Hardware-ID ("D" + sechs Ziffern).) )
		  if $hardware_id !~ /^D\d{6}\z/;

		$hardware_id = qquote($hardware_id);

		if ( my ($id) =
			DoFn("SELECT id FROM hardware WHERE hardware_id = $hardware_id") )
		{
			return problem("Diese ID ist schon bei Hardware #$id vergeben.");
		}
	}

	return $hardware_id unless defined $idi;

	log_update(
		hardware =>
		  id     => $idi,
		undef, 'hardware_id', undef,
		DoFn("SELECT hardware_id FROM hardware WHERE id = $idi") || '-'
	);
	Do("UPDATE hardware SET hardware_id = $hardware_id WHERE id = $idi");
}

1;
