pre-booking changed by post submit

This commit is contained in:
ragu 2024-05-13 10:56:02 +02:00
parent 934955117a
commit 991832f501
5 changed files with 63 additions and 42 deletions

View file

@ -254,7 +254,7 @@ elsif($q->param('request') eq "booking_request"){
if($bike_id && $bike_id == $record->{$id}->{barcode}){
$still_requested = 1;
$response->{response_state} = "OK, bike " . $bike . " already in timerange reserved";
$response->{response_text} = "Rad " . $bike . " ist für diesen Zeitraum nicht verfügbar.";
$response->{response_text} = "Rad " . $bike . " ist bereits gebucht.";
}
}

View file

@ -574,9 +574,6 @@ sub handler {
elsif($users_sharee->{c_id} && $R::sharee_edit && $R::sharee_edit =~ /generate_payonelink/ && $R::prepaid_amount && $R::prepaid_amount =~ /\d+/){
system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payonelink.pl '$varenv{syshost}' '$users_sharee->{c_id}' '$R::prepaid_amount' '$aowner' &");
}
elsif($users_sharee->{c_id} && $R::sharee_edit && $R::sharee_edit =~ /bike_reserv/){
$returnwww = $shwo->bike_reserv($q,\%varenv,$users_sharee->{c_id},$aowner);
}
if($returnwww && $returnwww =~ /failure::(.*)/){
$returnwww =~ s/::/=/g;

View file

@ -52,19 +52,6 @@ my $i_rows=0;
my $u_rows=0;
my $d_rows=0;
#bike reservation by CalReserv
sub bike_reserv {
my $self = shift;
my $q = shift;
my $varenv = shift;
my $ca_id = shift;
my $aowner = shift;
return;
}
#
#also done in src/Tpl/Anmelden.pm!?
sub delete_account {
my $self = shift;

View file

@ -96,7 +96,7 @@ print "<script src='$varenv->{metahost}/js/rentalator.js' type='text/JAVASCRIPT'
}
my $debug = "Mlogic --> (users_sharee->{c_id}: $users_sharee->{c_id} | ct_table: $node_meta->{ct_table} | parent_id: $node_meta->{parent_id} | main_id: $node_meta->{main_id} | tpl_id: $node_meta->{tpl_id})";
print $q->div({-style=>'position:fixed;bottom:0%;right:2%;z-index:10;font-size:13px;'},"$debug"),"\n" if($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test");
#print $q->div({-style=>'position:fixed;bottom:0%;right:2%;z-index:10;font-size:13px;'},"$debug"),"\n" if($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test");
}

View file

@ -21,6 +21,9 @@ use Mod::Buttons;
use Tpl::AccountSubmenu;
use Data::Dumper;
my $bw = new Basework;
my $dbt = new DBtank;
sub new {
my $class = shift;
my $self = {};
@ -28,6 +31,27 @@ sub new {
return $self;
}
#api workaround reserving bike by post request
sub bike_reserv {
my $self = shift;
my $uri_server = shift;
my $booking_request = shift;
my $booking_json = $self->fetchserver_json($uri_server,$booking_request);
my $response_booking = {};
eval {
$response_booking = decode_json($booking_json);
$bw->log("CalendarReserv booking_json response",$response_booking,"");
};
if ($@){
$bw->log("Failure, CalendarReserv booking_json not valid","","");
warn $@;
}
return $response_booking;
}
sub tpl {
my $self = shift;
my $q = shift;
@ -37,8 +61,6 @@ sub tpl {
my $users_sharee = shift || "";
my $feedb = shift || "";
my $bw = new Basework;
my $dbt = new DBtank;
my $but = new Buttons;
my $submenu = new AccountSubmenu;
my $path = $q->path_info();
@ -163,7 +185,7 @@ print "<div style='margin:5px 0 15px; 0' id='map'></div>\n";
my %selected_station = ();
if(1==1){
my $rest_stations = "request=stations_available&calreserv=1&authcookie=$coo";
my $stations_json = fetchserver_json("",$uri_server,$rest_stations);
my $stations_json = $self->fetchserver_json($uri_server,$rest_stations);
eval {
my $response_stations = {};
$response_stations = decode_json($stations_json);
@ -341,18 +363,18 @@ EOF
print "</div>\n";
}
if($R::sharee_edit =~ /calendar_bikes_available/ && $bike){
print $q->div({-style=>'margin:1em 0;text-align:center;clear:both;'},"<button type='submit' name='sharee_edit' value='calendar_bikes_available' class='btn btn-primary btn-block' style='border:1px solid #$bgcolor1;'>Fahrtzeit übernehmen</button>"),"\n";
print $q->hidden(-name=>"bike",-override=>1,-value=>"$bike");
}
#if($R::sharee_edit =~ /calendar_bikes_available/ && $bike){
# print $q->div({-style=>'margin:1em 0;text-align:center;clear:both;'},"<button type='submit' name='sharee_edit' value='calendar_bikes_available' class='btn btn-primary btn-block' style='border:1px solid #$bgcolor1;'>Fahrtzeit übernehmen</button>"),"\n";
# print $q->hidden(-name=>"bike",-override=>1,-value=>"$bike");
#}
my $but_search = "Suchen";
$but_search = "Erneut suchen" if($R::sharee_edit =~ /calendar_bikes_available/);
$but_search = "Erneut suchen" if($R::sharee_edit && $R::sharee_edit =~ /calendar_bikes_available|bike_reserv/);
print $q->div({-style=>'margin:1em 0;text-align:center;clear:both;'},"<button type='submit' name='sharee_edit' value='calendar_bikes_available_all' class='btn btn-primary btn-block' style='border:1px solid #$bgcolor1;'>$but_search</button>"),"\n";
print $q->div({-id=>'reserved_bikes'},""),"\n";#not used
#$bikes_json
if($R::sharee_edit =~ /calendar_bikes_available/){
if($R::sharee_edit && $R::sharee_edit =~ /calendar_bikes_available|bike_reserv/){
my $rest_bikes = "request=bikes_available&calreserv=1&reserv_starttime=$R::reserv_starttime&reserv_endtime=$R::reserv_endtime&authcookie=$coo&lang=de";
$rest_bikes .= "&station=$selected_station{station_id}" if($selected_station{station_id});
@ -369,7 +391,14 @@ EOF
$rest_bikes .= "&bike=$bike";
}
my $bikes_json = fetchserver_json("",$uri_server,$rest_bikes);
#api workaround reserving bike by post v3
my $response_booking = {};
if($R::sharee_edit =~ /bike_reserv/){
my $booking_request = "request=booking_request&bike=$bike&calreserv=1&reserv_starttime=$reserv_starttime&reserv_endtime=$reserv_endtime&authcookie=$coo";
$response_booking = $self->bike_reserv($uri_server,$booking_request);
}
my $bikes_json = $self->fetchserver_json($uri_server,$rest_bikes);
eval {
my $response_bikes = {};
$response_bikes = decode_json($bikes_json);
@ -388,14 +417,19 @@ EOF
print $q->div({-style=>'padding:0.5em;float:left;'},$q->img({-style=>'width:100px;', -src=>"$varenv->{metahost}/img/$bike_image"})),"\n";
print $q->div({-style=>'padding:0.5em;'},$q->span({-style=>'font-weight:bold;'},"$response_bikes->{shareejson}->{bikes}->{$bike}->{description} "),"$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}"),"\n";
my $dts = $strp->parse_datetime($reserv_starttime);
my $start_loc = $dts->strftime("%d.%m.%Y %H:%M");
my $dte = $strp->parse_datetime($reserv_endtime);
my $end_loc = $dte->strftime("%d.%m.%Y %H:%M");
print $q->div({-style=>''},"Beginn: $start_loc"),"\n";
print $q->div({-style=>''},"Ende:&nbsp;&nbsp;&nbsp; $end_loc"),"\n";
print $q->div({-id=>"return_state_$bike",-style=>'color:green;'},""),"\n";
if($response_booking->{shareejson}->{response_text}){
my $dts = $strp->parse_datetime($reserv_starttime);
my $start_loc = $dts->strftime("%d.%m.%Y %H:%M");
my $dte = $strp->parse_datetime($reserv_endtime);
my $end_loc = $dte->strftime("%d.%m.%Y %H:%M");
print $q->div({-style=>''},"Beginn: $start_loc"),"\n";
print $q->div({-style=>''},"Ende:&nbsp;&nbsp;&nbsp; $end_loc"),"\n";
#print $q->div({-id=>"return_state_$bike",-style=>'color:green;'},""),"\n";
my $reserve_style = "color:green;";
$reserve_style = "color:red;" if($response_booking->{shareejson}->{response_state} =~ /Failure/);
print $q->div({-style=>"$reserve_style"},"$response_booking->{shareejson}->{response_text}"),"\n";
}
#collect timerange
my $set_starttime = "";
@ -545,17 +579,20 @@ print <<EOF
EOF
;
if($reservbut){
print $q->div({-style=>'color:red;'},"Im gewähltem Zeitfenster nicht verfügbar"),"\n";
if($R::sharee_edit ne "bike_reserv" && $reservbut){
print $q->div({-style=>'color:red;'},"Im gewählten Zeitraum nicht verfügbar."),"\n";
}else{
#if(1==1){
#Mietrad buchen
print $q->div({-id=>"button_reserv_$bike",-style=>'clear:both;text-align:center;display:block;'},"<span class='btn btn-primary' style='margin:0.5em;width:300px;' onclick='rental_request(\"$response_bikes->{shareejson}->{bikes}->{$bike}->{uri_operator}/APIjsonserver?request=booking_request&bike=$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}&calreserv=1&reserv_starttime=$reserv_starttime&reserv_endtime=$reserv_endtime&authcookie=$coo\",\"$bike\",\"\")'>Mietrad buchen</span>"),"\n";
#print $q->div({-id=>"button_reserv_$bike",-style=>'clear:both;text-align:center;display:block;'},"<span class='btn btn-primary' style='margin:0.5em;width:300px;' onclick='rental_request(\"$response_bikes->{shareejson}->{bikes}->{$bike}->{uri_operator}/APIjsonserver?request=booking_request&bike=$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}&calreserv=1&reserv_starttime=$reserv_starttime&reserv_endtime=$reserv_endtime&authcookie=$coo\",\"$bike\",\"\")'>Mietrad buchen</span>"),"\n";
print $q->div({-id=>"button_reserv_$bike",-style=>'clear:both;text-align:center;display:block;'},"<button type='submit' name='sharee_edit' value='bike_reserv' class='btn btn-primary btn-block' style='border:1px solid #$bgcolor1;margin:0.5em;width:300px;'>Mietrad buchen</button>"),"\n";
print $q->hidden(-name=>"bike",-override=>1,-value=>"$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}");
#Buchung stornieren
print $q->div({-id=>"button_cancel_$bike",-style=>'clear:both;text-align:center;display:none;'},"<span class='btn btn-outline-primary' style='border:1px solid #$bgcolor1;color:#$bgcolor1;background-color:#fff;margin:0.5em;width:300px;' onclick='rental_request(\"$response_bikes->{shareejson}->{bikes}->{$bike}->{uri_operator}/APIjsonserver?request=booking_update&bike=$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}&state=canceled&reserv_starttime=$reserv_starttime&reserv_endtime=$reserv_endtime&authcookie=$coo\",\"$bike\",\"\")'>Buchung stornieren</span>"),"\n";
#print $q->div({-id=>"button_cancel_$bike",-style=>'clear:both;text-align:center;display:none;'},"<span class='btn btn-outline-primary' style='border:1px solid #$bgcolor1;color:#$bgcolor1;background-color:#fff;margin:0.5em;width:300px;' onclick='rental_request(\"$response_bikes->{shareejson}->{bikes}->{$bike}->{uri_operator}/APIjsonserver?request=booking_update&bike=$response_bikes->{shareejson}->{bikes}->{$bike}->{bike}&state=canceled&reserv_starttime=$reserv_starttime&reserv_endtime=$reserv_endtime&authcookie=$coo\",\"$bike\",\"\")'>Buchung stornieren</span>"),"\n";
}
#Weitere Verfügbarkeit anzeigen
#Verfügbarkeitsanzeige
print $q->div({-id=>"button_availablbility_$bike",-style=>'clear:both;text-align:center;display:block;'},"<span class='btn btn-outline-primary' style='border:1px solid #$bgcolor1;color:#$bgcolor1;background-color:#fff;margin:0.5em;width:300px;' data-bs-toggle='modal' data-bs-target='#$bike'>Verfügbarkeitsanzeige</span>"),"\n";
@ -600,7 +637,7 @@ EOF
print $q->end_form,"\n";
print $q->div({-id=>'scroll-top-wrapper'},"nach oben"),"\n" if($R::sharee_edit =~ /calendar_bikes_available/);
print $q->div({-style=>'position:fixed;bottom:2%;right:2%;z-index:10;font-size:13px;'},"--> $varenv->{syshost} | $varenv->{merchant_id} | $bgcolor1 | template -> $node_meta->{tpl_name},$node_meta->{tpl_id}"),"\n" if($users_sharee->{c_id} eq $dbt->{copri_conf}->{superu_id} || $dbt->{copri_conf}->{stage} eq "test");
#print $q->div({-style=>'position:fixed;bottom:2%;right:2%;z-index:10;font-size:13px;'},"--> $varenv->{syshost} | $varenv->{merchant_id} | $bgcolor1 | template -> $node_meta->{tpl_name},$node_meta->{tpl_id}"),"\n" if($users_sharee->{c_id} eq $dbt->{copri_conf}->{superu_id} || $dbt->{copri_conf}->{stage} eq "test");
print "</div>\n";
}