checkin: ensure that users are checked out first
This commit is contained in:
parent
130d598a9e
commit
af1e1a8294
1 changed files with 16 additions and 0 deletions
16
index.pl
16
index.pl
|
@ -264,6 +264,22 @@ helper 'checkin' => sub {
|
||||||
return ( undef, "Train ${train_id} not found" );
|
return ( undef, "Train ${train_id} not found" );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
my $user = $self->get_user_status;
|
||||||
|
if ( $user->{checked_in} ) {
|
||||||
|
|
||||||
|
# If a user is already checked in, we assume that they forgot to
|
||||||
|
# check out and do it for them.
|
||||||
|
# XXX this is an ugly workaround for the UNIQUE constraint on
|
||||||
|
# (user id, action timestamp): Ensure that checkout and re-checkin
|
||||||
|
# work even if the previous checkin was less than a second ago.
|
||||||
|
sleep(1);
|
||||||
|
$self->checkout( $station, 1 );
|
||||||
|
|
||||||
|
# XXX same workaround: We can't checkin immediately after checkout.
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
my $success = $self->app->checkin_query->execute(
|
my $success = $self->app->checkin_query->execute(
|
||||||
$self->get_user_id,
|
$self->get_user_id,
|
||||||
$self->get_station_id(
|
$self->get_station_id(
|
||||||
|
|
Loading…
Reference in a new issue