use utf8;
use warnings; no warnings "redefine";
use strict;

use Loader qw(
	check_perm current_user
	delete_stunde
	line_in list_stunde log_view
	set_stunde_art
	set_stunde_beginn
	set_stunde_dauer
	set_stunde_info
	set_stunde_kunde
	set_stunde_person
	set_stunde_ticket
	strip_kn
	valid_kunde valid_person valid_stunde
	warn_arbeit warn_kunde warn_person
  );
use Dbase::Help qw(DoFn);
use Fehler qw(report_fehler problem);

=head4 edit_stunde

C<edit_stunde( id [person] [kunde] [prompt] )

Editiert einen Stundeneintrag.

Funktionen:

=over 4

=item d

Dauer setzen

=item del

Löschen

=item f

Faktor ändern

=item ff

Faktor "Standard"

=item fp

Faktor "Pause"

=item i

Infotext ändern

=item K

Kunde ändern

=item l

Anzeigen

=item P

Person ändern

=item t

Ticket zuordnen

=item x

Beginn setzen

=back

=cut

sub edit_stunde($;$$$) {
	my($id,$pid,$kid,$kn) = @_;

	return unless valid_stunde($id);

	return problem('Das darfst Du nicht.') unless check_perm( perso => 1 );

	if($kid) {
		return unless valid_kunde($kid,1);
		warn_kunde("stunden",$id,$kid);
	} else {
		$kid = DoFn("select kunde from stunden where id = $id");
	}

	if($pid) {
		return unless valid_person($pid,1);
		warn_person("stunden",$id,$pid);
	} else {
		$pid = DoFn("select person from stunden where id = $id");
	}

	$kn = strip_kn($kn)."Zeit_$id:";
	my $work = warn_arbeit("stunde",$id,"*",$kn);

	my $act;
	zeitkt: while(1) {
		$act = line_in "$kn >",4; last if $act eq "";
		if($act eq "?") {
			print <<'END';
l   auflisten
x   Beginn setzen     d   Zeitdauer setzen
i   Infotext ändern   a   Art ändern
f   Faktor ändern     ff  Standard   fp  Pause
t   Ticket zuordnen
P   anderer Person,   K   anderem Kunden zuordnen
del löschen
END
			next;
		}
		if($act eq "l") { list_stunde($id,$kn); next; }
		if($act eq "K") { set_stunde_kunde($id,$kn); next; }
		if($act eq "P") { set_stunde_person($id,$kn); next; }
		if($act eq "a") { set_stunde_art($id,$kn); next; }
		if($act eq "H") { log_view($kn,"stunden","id",$id); next; }
		if($act eq "i") { set_stunde_info($id,$kn); next; }
		if($act eq "t") { set_stunde_ticket($id,$kn); next; }
		if($act eq "x") { set_stunde_beginn($id,$kn); next; }
		if($act eq "d") { set_stunde_dauer($id,$kn); next; }
		if($act eq "del") { delete_stunde($id,$kn); return undef; }

		print "Aktion '$act' kenne ich nicht.\n";
		next; fehler: report_fehler(4);
	}
}

1;
