diff --git a/copri4/main/src/Mod/APIsigclient.pm b/copri4/main/src/Mod/APIsigclient.pm
index 36117dc..907e13d 100755
--- a/copri4/main/src/Mod/APIsigclient.pm
+++ b/copri4/main/src/Mod/APIsigclient.pm
@@ -113,6 +113,11 @@ sub sig_available {
if($station && looks_like_number($resp->{site}->{id}) && ref($bike_group) eq "ARRAY" && @{$bike_group}[0]){
print FILE "Station: $station\n\n";
$response_out->{$station}->{station} = "$station";
+
+ if($resp->{status} && $resp->{status} =~ /ACTIVE|PRIVATE/i && !$resp->{reservation_state}){
+ $response_out->{$station}->{bike_count}++;
+ }
+
$response_out->{$station}->{authed} = "$authed";
$response_out->{$station}->{uri_operator} = "$dbt->{operator}->{$varenv->{dbname}}->{operatorApp}";
diff --git a/copri4/main/src/Mod/GBFSout.pm b/copri4/main/src/Mod/GBFSout.pm
index a5988df..92bdb2d 100755
--- a/copri4/main/src/Mod/GBFSout.pm
+++ b/copri4/main/src/Mod/GBFSout.pm
@@ -100,6 +100,7 @@ sub station_information {
$gbfs_station{$station}{station_id} = $response_stations->{shareejson}->{stations}->{$station}->{station};
$gbfs_station{$station}{name} = Encode::encode('utf-8', Encode::decode('iso-8859-1',$response_stations->{shareejson}->{stations}->{$station}->{description}));
$gbfs_station{$station}{capacity} = $response_stations->{shareejson}->{stations}->{$station}->{capacity};
+ $gbfs_station{$station}{bike_count} = $response_stations->{shareejson}->{stations}->{$station}->{bike_count};
$gbfs_station{$station}{lat} = $response_stations->{shareejson}->{stations}->{$station}->{gps}->{latitude};
$gbfs_station{$station}{lon} = $response_stations->{shareejson}->{stations}->{$station}->{gps}->{longitude};
#$gbfs_station{$station}{is_charging_station} = 1 if(grep(/300102/, @{$response_stations->{shareejson}->{stations}->{$station}->{station_group}}));#E-L
diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm
index f192f36..57970c6 100755
--- a/copri4/main/src/Mod/Payment.pm
+++ b/copri4/main/src/Mod/Payment.pm
@@ -488,13 +488,14 @@ sub rpc {
#$update_adr->{txt28} = $val if($key eq "mandate_text" && ($val =~ /SEPA/ || !$val));
$update_adr->{txt28} = $now_dt . " $todo\n" . $q->escapeHTML($res->content);
}
- $update_adr->{int12} = 0;#Vde
+ $update_adr->{int12} = 0 if($vde_on_fail != 2);#Vde
$dbt->update_record($dbh,$update_adr,$ctadr) if($ctadr->{c_id} > 0);
my $ret = $self->pdfmandat($varenv,$ctadr->{c_id});
print FILE "pdfmandat call generates: $ret\n" if($debug);
}elsif($ctadr->{c_id}){
$update_adr->{int12} = $vde_on_fail;#Vde
}
+ print FILE "managemandate update_adr:" . Dumper($update_adr) . "\n" if($debug);
}
my $txidval = "";
diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm
index a3f0bae..089845d 100755
--- a/copri4/main/src/Mod/Shareework.pm
+++ b/copri4/main/src/Mod/Shareework.pm
@@ -238,8 +238,8 @@ sub save_account(){
}
$u_rows = $dbt->update_one($dbh,$update_primary,"txt17='@operators'");
}
- #Web-Login|Rabatt|Vde|payone cron-intervall|Ilockit-Admin|miniq
- elsif($_ =~ /int05|int07|int16|int19|int23/){
+ #Rabatt|payone cron-intervall|Ilockit-Admin|miniq
+ elsif($_ =~ /int07|int16|int19|int23/){
$u_rows = $dbt->update_one("",$update_primary,"$_=$valxx");
}
#user_tour
@@ -442,6 +442,9 @@ sub save_account(){
}
$u_rows = $dbt->update_one($dbh,$update_primary,"$_='$valxx'");
}
+ }elsif($_ eq "int05"){#Web-login
+ $u_rows = $dbt->update_one($dbh,$update_primary,"$_=$valxx");
+ $u_rows = $dbt->update_one($dbh,$update_primary,"txt05=null") if($valxx != 1);
}elsif($_ eq "int12" && $varenv{dbname} ne $dbt->{primary}->{sharee_primary}->{database}->{dbname}){
my $vde_on_fail = 0;
$vde_on_fail = 2 if($valxx && $valxx == 1);
@@ -503,7 +506,7 @@ sub save_account(){
$ctadr = $dbt->fetch_record($dbh,$authref);
print FILE "+++ $R::request && $ctadr->{int03} == 1 && $ctadr->{ct_name} eq $ctadr->{c_id} \n" if($debug);
- #if($R::request eq "managemandate" && $ctadr->{int03} == 1 && $ctadr->{ct_name} eq $ctadr->{c_id}){
+ #if($R::request eq "managemandate" && $ctadr->{int03} == 1 && $ctadr->{ct_name} eq $ctadr->{c_id})
#fraud workaround
my $iban = $ctadr->{txt22} || "";
$iban =~ s/\s//g;
@@ -533,7 +536,8 @@ sub save_account(){
if(1==1){
$ctt->{txt16} = "$payone_txid";
- $u_rows = $dbt->update_one($dbh,$update_primary,"int12=0");#Vde
+ $vde_on_fail = 0 if($vde_on_fail != 2);
+ $u_rows = $dbt->update_one($dbh,$update_primary,"int12=$vde_on_fail");#Vde
#$payone_txid = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$owner);
#int12=0 should be set after capture success in payment module
@@ -573,7 +577,7 @@ sub save_account(){
print FILE Dumper($feedb) . "\n" if($debug);
close(FILE) if($debug);
return ($ret,$feedb);
-}
+}#end save_account
#insert/save/delete DMS users
sub manage_dmsusers {
diff --git a/copri4/main/src/Tpl/Karte_osm.pm b/copri4/main/src/Tpl/Karte_osm.pm
index 57dbb6f..9fcf7eb 100755
--- a/copri4/main/src/Tpl/Karte_osm.pm
+++ b/copri4/main/src/Tpl/Karte_osm.pm
@@ -144,6 +144,8 @@ var icon_red = L.icon({
popupAnchor: [-2, -36]
});
+//stations and bikes at all
+if(1==2){
Promise.all([
fetch(
"$uri_request/GBFSout?request=stations_available&authcookie=$api_return->{authcookie}"
@@ -202,6 +204,52 @@ Promise.all([
map.fitBounds(layerGroup.getBounds());
});
+}//end stations and bikes at all
+
+//Only stations with bike_count
+Promise.all([
+ fetch(
+ "$uri_request/GBFSout?request=stations_available&authcookie=$api_return->{authcookie}"
+ )]).then(async ([response1]) => {
+ const responseData1 = await response1.json();
+
+ const data1 = responseData1.data.stations;
+
+ const layerGroup = L.featureGroup().addTo(map);
+ data1.forEach(({ lat, lon, name, address, bike_count, station_id: stationId }) => {
+ console.log('Station: ' + stationId , name);
+
+ if(bike_count > 0){
+ layerGroup.addLayer(
+ L.marker([lat, lon], { icon:icon_green }).bindPopup(
+ `Mietradstation: \${name} \${stationId}
+ Verfügbare Mieträder: \${bike_count}
+ `
+ )
+ );
+ }else{
+ layerGroup.addLayer(
+ L.marker([lat, lon], { icon:icon_red }).bindPopup(
+ `Mietradstation: \${name} \${stationId}
+ Aktuell ist kein Mietrad verfügbar
+ `
+ )
+ );
+
+ }
+ });
+
+ if('$manlat' && '$manlng'){
+ layerGroup.addLayer(
+ L.marker([$manlat, $manlng]).bindPopup(
+ '$manlat, $manlng'
+ )
+ );
+ }
+
+ map.fitBounds(layerGroup.getBounds());
+});
+
EOF