deliver bikes_occupied by stations_available request

This commit is contained in:
ragu 2023-03-22 08:24:08 +01:00
parent a638aad485
commit be17c401cc
6 changed files with 57 additions and 50 deletions

View file

@ -2223,8 +2223,6 @@ sub stations_available(){
}
}
$return->{$id}->{bike_count} = "$bike_count";
$return->{$id}->{uri_operator} = "$varenv->{wwwhost}";
$return->{$id}->{authed} = "$authed";
$return->{$id}->{capacity} = "$record->{$id}->{int05}" || "1";
@ -3000,15 +2998,6 @@ sub auth_verify(){
print FILE "users_serviceapp: $users_serviceapp->{u_id} | $return->{authcookie}\n" if($debug);
}
#if any no public user on request, then don't generate cache
#my $public_user = 1;
#if(ref($adrtarif_hash) eq "HASH"){
# foreach my $atid (keys (%$adrtarif_hash)){
# $public_user = 0 if($adrtarif_hash->{$atid} == 1);
# }
#}
#$return->{public_user} = "$public_user";
print FILE "final return: $return->{authcookie}\n" if($debug);
close(FILE) if($debug);

View file

@ -42,6 +42,7 @@ sub loop_sharees {
my $auth = shift;
my $authraw = shift;
my $return_merchant = shift || "";
my $last_used_operator = shift || "";
my @keywords = $q->param;
#only request keys which initated by sharee primary requests to operator
@ -85,9 +86,9 @@ sub loop_sharees {
#every sharee client must have a merchant_id which associate a project
if($op_name->{operatorApp} && ($users_serviceapp->{u_id} || $return_merchant->{merchant_id} eq $globalconf{website}->{'shareeweb-sharee'}->{merchant_id} || ($return_merchant->{project_id} eq $op_name->{project}))){
$o++;
#stations_available with optional caching
if($rest_hash->{request} eq "stations_available"){
push(@uri_operator_array, $op_name->{operatorApp});
#station caching (empty user_group)
#if disabled, reads DB
if($op_name->{cache_station} == 1){
#primary authraw
@ -175,13 +176,21 @@ sub loop_sharees {
}
}
}#end caching_stations
}#end cache_station
else{
$ret_json = $self->fetch_operator_json("$op_name->{operatorApp}/APIjsonserver",$rest);
$bw->log("$o $key) Caching disabled, No reading json-caching, taking: $op_name->{operatorApp}/APIjsonserver?$rest",$ret_json,"");
}
}#end stations_available
#user_bike_occupied by $last_used_operator
elsif($last_used_operator && $rest_hash->{request} eq "user_bikes_occupied"){
if($last_used_operator eq $op_name->{database}->{dbname}){
#$bw->log("fetch_operator_json >> user_bikes_occupied by last_used_operator:$last_used_operator ","","");
$ret_json = $self->fetch_operator_json("$op_name->{operatorApp}/APIjsonserver","$rest&withoutkey=1");
}
}
#all other operator requests
else{
$ret_json = $self->fetch_operator_json("$op_name->{operatorApp}/APIjsonserver",$rest);
}
@ -245,8 +254,7 @@ sub fetch_operator_json {
my $rest = shift || "";
my $operator_request = "$operator_server?$rest";
#$bw->log("fetch_operator_json >> ","$operator_request","");
#$bw->log("fetch_operator_json >> $operator_request","$operator_request","");
my $req = HTTP::Request->new(GET => "$operator_request");
$req->content_type('application/x-www-form-urlencoded');
$req->content($rest);

View file

@ -431,7 +431,7 @@ elsif($q->param('request') eq "user_bikes_occupied"){
my ($auth,$authraw) = $apif->auth_verify($q);
if(ref($auth) eq "HASH" && $auth->{authcookie}){
$response = { %$response, %$auth };
($response->{bikes_occupied},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant);
($response->{bikes_occupied},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,"");
}else{
$response->{response_state} = "Failure 1001: authcookie not defined";
$response->{response_text} = "Entschuldigung, die Sitzung wurde unterbrochen";
@ -443,7 +443,11 @@ elsif($q->param('request') eq "user_bikes_occupied"){
if(ref($auth) eq "HASH" && $auth->{authcookie}){
$response = { %$response, %$auth };
my $record = $apif->user_bikes_occupied($dbh,$authraw,"show_dialog");
$response->{bikes_occupied} = $apif->rentals($record,$authraw,"1");
if($R::withoutkey){
$response->{bikes_occupied} = $apif->rentals($record,$authraw,"");
}else{
$response->{bikes_occupied} = $apif->rentals($record,$authraw,"1");
}
}else{
$response->{response_state} = "Failure 1001: authcookie not defined";
$response->{response_text} = "Entschuldigung, die Sitzung wurde unterbrochen";
@ -463,7 +467,7 @@ elsif($q->param('request') eq "bikes_available"){
my $authraw = {};
($auth,$authraw) = $apif->auth_verify($q);
$response = { %$response, %$auth };
($response->{bikes},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant);
($response->{bikes},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,"");
#$bw->log("X bikes_available $varenv{syshost} $stamp: $response->{user_group}",$response,"");
}else{
($aowner,my $return_merchant) = $apif->fetch_merchant($q,\%varenv,$coo,$q->param('merchant_id'));
@ -499,7 +503,7 @@ elsif($q->param('request') eq "bikes_all"){
my ($auth,$authraw) = $apif->auth_verify($q);
$response = { %$response, %$auth };
($response->{bikes},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant);
($response->{bikes},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,"");
}else{
($aowner,my $return_merchant) = $apif->fetch_merchant($q,\%varenv,$coo,$q->param('merchant_id'));
$varenv{merchant_id} = $return_merchant->{merchant_id};
@ -640,7 +644,7 @@ elsif($q->param('request') eq "stations_all"){
my ($auth,$authraw) = $apif->auth_verify($q);
$response = { %$response, %$auth };
($response->{stations},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant);
($response->{stations},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,"");
}else{
($aowner,my $return_merchant) = $apif->fetch_merchant($q,\%varenv,$coo,$q->param('merchant_id'));
$varenv{merchant_id} = $return_merchant->{merchant_id};
@ -686,38 +690,23 @@ elsif($q->param('request') eq "stations_available"){
};
my $uadr = { c_id => 0 };
$uadr = $dbt->fetch_tablerecord($dbh,$pref_ctu);
$response->{merchant_message} = $uadr->{txt01} . $user_agent;
$response->{merchant_message} = $uadr->{txt01};
$response->{merchant_message} = $uadr->{txt02} if($q->param('lang') eq "en");
}else{
$apif->authout($q,$coo);
}
}
#user_rental
$response->{user_rental} = {};
if($authraw->{txt19} && $authraw->{txt19} =~ /sharee_/){
my $last_used_operator = $authraw->{txt19};
my $dbh_operator = $dbt->dbconnect_extern("$last_used_operator");
my $record_rentals = {};
$record_rentals = $apif->user_bikes_occupied($dbh_operator,$authraw,"");
foreach my $r_id (keys (%$record_rentals)){
if($record_rentals->{$r_id}->{c_id}){
my $prefix = $record_rentals->{$r_id}->{txt12};
my $station_type = "A-B";
$station_type = "A-A" if($record_rentals->{$r_id}->{int41});
$response->{user_rental} = { $record_rentals->{$r_id}->{c_id} => {
bike_id => "$prefix$record_rentals->{$r_id}->{barcode}",
station_id => "$prefix$record_rentals->{$r_id}->{int06}",
station_group => "$prefix$record_rentals->{$r_id}->{int29}",
station_type => "$station_type",
}};
}
}
}
$response = { %$response, %$auth };
($response->{stations},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant);
($response->{stations},$response->{uri_operator_array},$response->{user_group},$response->{user_tour}) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,"");
#user_rental
if($authraw->{txt19} && $authraw->{txt19} =~ /sharee_/){
my $last_used_operator = $authraw->{txt19};
$q->param(-name=>'request',-value=>"user_bikes_occupied");
($response->{bikes_occupied},my $uri_operator_array,my $user_group,my $user_tour) = $jsc->loop_sharees($q,$auth,$authraw,$return_merchant,$last_used_operator);
}
}else{
($aowner,my $return_merchant) = $apif->fetch_merchant($q,\%varenv,$coo,$q->param('merchant_id'));
$varenv{merchant_id} = $return_merchant->{merchant_id};