Booking calendar (beta intern) for calendar bike reservation

This commit is contained in:
ragu 2024-05-07 08:15:54 +02:00
parent 030091de20
commit d5a98d0c54
26 changed files with 1127 additions and 144 deletions

View file

@ -71,7 +71,7 @@ my $response = {
apiserver => "$apiserver",
response => "$respreq",
uri_primary => "$dbt->{primary}->{sharee_primary}->{primaryApp}",
copri_version => "4.1.23.29",
copri_version => "4.1.23.30",
user_id => "",
authcookie => "",
new_authcoo => "0",
@ -243,18 +243,31 @@ elsif($q->param('request') eq "booking_request"){
$bike_id = $1 if($bike_id =~ /(\d+)/);
#check count of occcupied/requested bikes
my $record = $apif->user_bikes_occupied($dbh,$authraw,"");
my $record = {};
my $max_rental_count = 3;
$max_rental_count = 10 if($authraw->{int09});
my $rental_count=0;
my $still_requested = 0;
foreach my $id (keys(%$record)){
if($R::calreserv){
$record = $apif->bikes_reserved($q,$dbh);
foreach my $id (keys(%$record)){
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.";
}
}
}else{
$record = $apif->user_bikes_occupied($q,$dbh,$authraw,"");
foreach my $id (keys(%$record)){
$rental_count++;
if($bike_id && $bike_id == $record->{$id}->{barcode}){
$still_requested = 1;
$response->{response_state} = "OK, bike " . $bike . " already requested or occupied";
$response->{response_text} = "Fahrrad Nr. " . $bike . " ist bereits reserviert";
$response->{response_text} = "Rad " . $bike . " ist bereits reserviert";
}
}
}
if(!$still_requested){
@ -293,7 +306,7 @@ elsif($q->param('request') eq "booking_request"){
rentalId => "",
};
if(!$ct_bike->{barcode} || !$ct_bike->{int10} || $ct_bike->{int10} != 1){
if(!$ct_bike->{barcode} || !$ct_bike->{int10}){
$response->{response_state} = "Failure 2001: booking bike $bike fails, bike not available";
$response->{response_text} = "Mietrad $bike ist nicht verfügbar. Ist das Mietrad für sie freigeschaltet? Bitte überprüfen Sie Ihre Profildaten auf Vollständigkeit";
}elsif(!$ct_tariff->{barcode}){#ist will not happen, because of prios tariff select in fetch_bike_tariff
@ -318,7 +331,7 @@ elsif($q->param('request') eq "booking_request"){
table => "contenttranspos",
fetch => "one",
barcode => "$bike_id",
int10 => "2",
int10 => "IN::('2','7')",
ca_id => "$authraw->{c_id}",
};
my $dbh = "";
@ -342,7 +355,7 @@ elsif($q->param('request') eq "booking_request"){
}
#return list of occupied/requested bikes
$record = $apif->user_bikes_occupied($dbh,$authraw,"");
$record = $apif->user_bikes_occupied($q,$dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
}#end still_requested
@ -379,7 +392,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
$bike_id =~ s/S[1-9]X/SX/;
$bike_id = $1 if($bike_id =~ /(\d+)/);
my $ctpos = {};
my $ctpos = {};#can be removed after sig
my $booking_pos = {
table => "contenttranspos",
fetch => "one",
@ -426,7 +439,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book);
$response = {%$response, %$booking_values};
my $record = $apif->user_bikes_occupied($dbh,$authraw,"show_dialog");
my $record = $apif->user_bikes_occupied($q,$dbh,$authraw,"show_dialog");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
#update on Ilockit
@ -435,12 +448,12 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
$apif->stations_caching($q,\%varenv,$authraw);
$response = {%$response, %$booking_values};
my $record = $apif->user_bikes_occupied($dbh,$authraw,"");
my $record = $apif->user_bikes_occupied($q,$dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
}
}#end occupied|available
else{
my $record = $apif->user_bikes_occupied($dbh,$authraw,"");
my $record = $apif->user_bikes_occupied($q,$dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
}
@ -478,7 +491,7 @@ elsif($q->param('request') eq "user_bikes_occupied"){
($auth,$authraw) = $apif->auth_verify($q);
if(ref($auth) eq "HASH" && $auth->{authcookie}){
$response = { %$response, %$auth };
my $record = $apif->user_bikes_occupied($dbh,$authraw,"show_dialog");
my $record = $apif->user_bikes_occupied($q,$dbh,$authraw,"show_dialog");
if($R::withoutkey){
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"");
}else{
@ -531,9 +544,12 @@ elsif($q->param('request') eq "bikes_available"){
my $station_id = "";
$station_id = $1 if($station =~ /(\d+)$/);
$record = $apif->user_bikes_occupied($dbh,$authraw,"",$station_id);
$record = $apif->user_bikes_occupied($q,$dbh,$authraw,"",$station_id);
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
}
#$response->{bikes_blocked} = $apif->bikes_reserved($q,$dbh) if($R::calreserv);
}
if(ref($response->{bikes}) ne "HASH"){
$response->{response_state} = "Failure 5003: cannot find any user defined bike tariff";
@ -742,13 +758,15 @@ elsif($q->param('request') eq "stations_available"){
}
#App merchant message
#if($user_agent =~ /konrad/i && $dbt->{copri_conf}->{betau_id}->{$authraw->{c_id}} && $varenv{cms}->{'App-merchant-message'}->{txt}){
if($user_agent =~ /konrad/i && $varenv{cms}->{'App-merchant-message'}->{txt}){
#if($epoch_now >= $epoch_start && $epoch_now <= $epoch_end){
$response->{merchant_message} = $varenv{cms}->{'App-merchant-message'}->{txt};
#}
}
#App merchant message bayern
if($user_agent =~ /bayern/i && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){
#if($user_agent =~ /bayern/i && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){
if($user_agent =~ /bayern/i && $user_agent_subversion <= 380 && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){
#if($epoch_now >= $epoch_start && $epoch_now <= $epoch_end){
$response->{merchant_message} = $varenv{cms}->{'App-merchant-message-bayern'}->{txt};
#}