bike_type object and bike charge App-feedback

This commit is contained in:
ragu 2022-07-21 20:06:25 +02:00
parent 7442d49f11
commit 23f513bef3
6 changed files with 123 additions and 25 deletions

View file

@ -504,7 +504,6 @@ sub service_update(){
ca_id => "$auth->{c_id}",
"ct.close_time" => "is::null",
int10 => "1",
int28 => "3",
end_time => ">=::(now() - interval '5 min')",
};
my $ctpos = { c_id => 0 };
@ -526,16 +525,36 @@ sub service_update(){
$update->{int01} = 1 if($q->param('bike_broken'));
$update->{txt02} = $q->escapeHTML($q->param('message')) if($q->param('message'));
#to update sig int28 counter
$ctpos = $dbt->collect_post($dbh,$pref) if($bike_id);
if($ctpos->{c_id} > 0){
my $update_pos = {
table => "contenttranspos",
mtime => "now()",
int28 => "2",
};
#update sig int28 counter
$update_pos->{int28} = 2 if($ctpos->{int28} && $ctpos->{int28} == 3);
#update bike charge on pos and content
if($q->param('charge_current_bars') =~ /^\d+$/){
my $max_bars = 5;
my $current_percent = $bw->battery_percent($max_bars,$q->param('charge_current_bars'));
$update_pos->{int19} = $current_percent;
#update also bike charge
my $update_bike = {
table => "content",
mtime => "now()",
int19 => "$update_pos->{int19}",
};
my $record_bike = { c_id => 0 };
$record_bike->{c_id} = $ctpos->{cc_id} if($ctpos->{cc_id});
$dbt->update_record($dbh,$update_bike,$record_bike) if($record_bike->{c_id} > 0);
}
$dbt->update_record($dbh,$update_pos,$ctpos);
}
}elsif($q->param('request') eq "user_minianswer"){
$update = {
table => "contentadrpos",
@ -1610,13 +1629,6 @@ sub booking_update(){
}
}#end mini_quest
#TODO, return akku capacity level for user question
#set e-bike attribut on DMS editor nad not by main_id
#if($booking->{int10} == 1 && $record_cc->{main_id} == 300102){
if($booking->{int10} == 1 && $record_cc->{energy_id} == 1){
$booking_values->{akku_levelquery} = "5";
}
#fetch tracking distance on Ilockit cloud by summary trip if(tracking && deviceId && available)
if($booking->{int25} == 1 && $booking->{int10} == 1){
$bw->log("get co2saving",$booking->{c_id},"");
@ -1940,7 +1952,6 @@ sub bikes_available(){
$return->{$id}->{description} = Encode::encode('utf-8', Encode::decode('iso-8859-1', $record->{$id}->{txt01}));
$return->{$id}->{state} = "$dbt->{copri_conf}->{bike_state}->{$record->{$id}->{int10}}";
$return->{$id}->{lock_state} = "$dbt->{copri_conf}->{lock_state}->{$record->{$id}->{int20}}";
$return->{$id}->{bike_charge} = "$record->{$id}->{int19}" if($record->{$id}->{int19});
#defaults
$return->{$id}->{bike_group} = [];
@ -1954,7 +1965,19 @@ sub bikes_available(){
$return->{$id}->{bike_type}->{category} = "cargo";
$return->{$id}->{bike_type}->{wheels} = "2";
$return->{$id}->{bike_type}->{wheels} = "3" if($record->{$id}->{txt01} =~ /drei|trike/i);
$return->{$id}->{bike_type}->{engine}->{manufacturer} = "dummy" if($record->{$id}->{txt01} =~ /E-/i);
if($record->{$id}->{txt01} =~ /E-/i){
$return->{$id}->{bike_type}->{engine}->{manufacturer} = "dummy";
my $max_bars = 5;
my $current_bars = 0;
$return->{$id}->{bike_type}->{battery}->{charge_max_bars} = "$max_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_percent} = "0";
if($record->{$id}->{int19}){
$current_bars = $bw->battery_bars($max_bars,$record->{$id}->{int19});
$return->{$id}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_percent} = "$record->{$id}->{int19}";
}
}
}
}
if($record->{$id}->{int11} eq "2"){
@ -2105,7 +2128,19 @@ sub bikes_all(){
$return->{$id}->{bike_type}->{category} = "cargo";
$return->{$id}->{bike_type}->{wheels} = "2";
$return->{$id}->{bike_type}->{wheels} = "3" if($record->{$id}->{txt01} =~ /drei|trike/i);
$return->{$id}->{bike_type}->{engine}->{manufacturer} = "dummy" if($record->{$id}->{txt01} =~ /E-/i);
if($record->{$id}->{txt01} =~ /E-/i){
$return->{$id}->{bike_type}->{engine}->{manufacturer} = "dummy";
my $max_bars = 5;
my $current_bars = 0;
$return->{$id}->{bike_type}->{battery}->{charge_max_bars} = "$max_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_percent} = "0";
if($record->{$id}->{int19}){
$current_bars = $bw->battery_bars($max_bars,$record->{$id}->{int19});
$return->{$id}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{$id}->{bike_type}->{battery}->{charge_current_percent} = "$record->{$id}->{int19}";
}
}
}
}

View file

@ -113,8 +113,10 @@ sub sig_available {
$response_out->{$station}->{station} = "$station";
$response_out->{$station}->{authed} = "$authed";
$response_out->{$station}->{uri_operator} = "$dbt->{operator}->{$varenv->{dbname}}->{operatorApp}";
#FIXME charset encoding
#$response_out->{$station}->{description} = "$resp->{site}->{address}" || "";
$response_out->{$station}->{description} = Encode::encode('utf-8', Encode::decode('iso-8859-1',$resp->{site}->{address})) || "";
#$response_out->{$station}->{description} = Encode::encode('utf-8', Encode::decode('iso-8859-1',$resp->{site}->{address})) || "";
$response_out->{$station}->{station_group} = ["SX300101"];#Lastenrad alias type_id
$response_out->{$station}->{gps}->{latitude} = "$resp->{site}->{lat}" || "";
$response_out->{$station}->{gps}->{longitude} = "$resp->{site}->{lon}" || "";
@ -186,7 +188,6 @@ sub sig_available {
$response_out->{$bike}->{description} = "E-Lastenrad";
$response_out->{$bike}->{gps}->{latitude} = "$resp->{state}->{lat}" || "";
$response_out->{$bike}->{gps}->{longitude} = "$resp->{state}->{lon}" || "";
$response_out->{$bike}->{bike_charge} = "$resp->{energy_level}" || "0";
$response_out->{$bike}->{state} = "defect";
$response_out->{$bike}->{lock_state} = "locked";
if(uc($resp->{reservation_state}) eq "RESERVED"){
@ -198,6 +199,19 @@ sub sig_available {
$response_out->{$bike}->{state} = "available";
}
$response_out->{$bike}->{bike_type}->{engine}->{manufacturer} = "dummy";
my $max_bars = 5;
my $current_bars = 0;
$response_out->{$bike}->{bike_type}->{battery}->{charge_max_bars} = "$max_bars";
$response_out->{$bike}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$response_out->{$bike}->{bike_type}->{battery}->{charge_current_percent} = "0";
if(looks_like_number($resp->{energy_level})){
$current_bars = $bw->battery_bars($max_bars,$resp->{energy_level});
$response_out->{$bike}->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$response_out->{$bike}->{bike_type}->{battery}->{charge_current_percent} = "$resp->{energy_level}";
}
$response_out->{$bike}->{system} = "sigo";
$response_out->{$bike}->{bike_group} = ["SX300101"];#Lastenrad type_id
$response_out->{$bike}->{unlock_allowed} = "1";
@ -251,7 +265,7 @@ sub sig_available {
$return2copri->{$bike}->{txt01} = "$response_out->{$bike}->{description}";
$return2copri->{$bike}->{int25} = "1" if($resp->{gps_tracker_id});
$return2copri->{$bike}->{txt06} = "$response_out->{$bike}->{gps}->{latitude},$response_out->{$bike}->{gps}->{longitude}";
$return2copri->{$bike}->{int19} = $1 if($response_out->{$bike}->{bike_charge} =~ /(\d+)/);
$return2copri->{$bike}->{int19} = $1 if($response_out->{$bike}->{bike_type}->{battery}->{charge_current_percent} =~ /(\d+)/);
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{bike_state} }) {
if($response_out->{$bike}->{state} eq $value){
$return2copri->{$bike}->{int10} = $key;

View file

@ -90,6 +90,39 @@ EOF
return $return;
}
sub battery_bars {
my $self = shift;
my $max_bars = shift || 0;
my $current_percent = shift || 0;
my $current_bars = 0;
if($max_bars == 5){
$current_bars = 1 if($current_percent >= 10);
$current_bars = 2 if($current_percent >= 30);
$current_bars = 3 if($current_percent >= 50);
$current_bars = 4 if($current_percent >= 70);
$current_bars = 5 if($current_percent >= 90);
}
return $current_bars;
}
sub battery_percent {
my $self = shift;
my $max_bars = shift || 0;
my $current_bars = shift || 0;#by user input
my $current_percent = 0;
if($max_bars == 5){
$current_percent = 10 if($current_bars >= 1);
$current_percent = 30 if($current_bars >= 2);
$current_percent = 50 if($current_bars >= 3);
$current_percent = 70 if($current_bars >= 4);
$current_percent = 100 if($current_bars >= 5);
}
return $current_percent;
}
1;

View file

@ -111,6 +111,9 @@ sub counting_rental {
my $computed_clock = $real_clock;
my $rental_minute = $self->clock_minutes($computed_clock);
#if end_station == start_station and rental minutes < 5 minutes, then 0
$rental_minute = 0 if($ctpos->{int04} == $ctpos->{int06} && $rental_minute && $rental_minute < 5);
#init with some defaults
my $total_price = 0;
my $ctpos_freed = { c_id => 0 };
@ -142,6 +145,7 @@ sub counting_rental {
}
}
my $rental_unit = 0;
my $price_by_allunit = 0;
my $max_daily_unit = 0;#how many rental_minute is one daily_unit
@ -281,7 +285,7 @@ sub fetch_rentalfeed {
my $returned_counting = shift || {};
my $td_template = $dbt->rental_description_template();
my $bike_group = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$ctpos->{int12}" || "";
my $bike_group = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$ctpos->{int29}" || "";
my $return = {};
$return->{bike_group} = ["$bike_group"];
@ -302,17 +306,27 @@ sub fetch_rentalfeed {
$return->{bike_type}->{wheels} = "2";
#for station_type_id mapping
if($ctpos->{int29}){
if($ctpos->{int29} == 300101){
if($ctpos->{int29} && $ctpos->{int29} == 300101){
$return->{bike_type}->{category} = "cargo";
$return->{bike_type}->{wheels} = "2";
$return->{bike_type}->{wheels} = "3" if($ctpos->{txt01} =~ /drei|trike/i);
$return->{bike_type}->{engine}->{manufacturer} = "dummy" if($ctpos->{txt01} =~ /E-/i);
}
if($ctpos->{txt01} =~ /E-/i){
$return->{bike_type}->{engine}->{manufacturer} = "dummy";
my $max_bars = 5;
my $current_bars = 0;
$return->{bike_type}->{battery}->{charge_max_bars} = "$max_bars";
$return->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{bike_type}->{battery}->{charge_current_percent} = "0";
if($ctpos->{int19}){
$current_bars = $bw->battery_bars($max_bars,$ctpos->{int19});
$return->{bike_type}->{battery}->{charge_current_bars} = "$current_bars";
$return->{bike_type}->{battery}->{charge_current_percent} = "$ctpos->{int19}";
}
}
}
$return->{Ilockit_ID} = "$ctpos->{txt18}" if($ctpos->{int11} == 2);
$return->{bike_charge} = "$ctpos->{int19}" if($ctpos->{int19});
$return->{description} = "$ctpos->{txt01}";
$return->{request_time} = "$ctpos->{itime}";
$return->{system} = "Ilockit" if($ctpos->{int11} && $ctpos->{int11} == 2);

View file

@ -42,8 +42,8 @@ sub tpl(){
if($users_sharee->{c_id} && $R::sharee_edit ne "delete_account2" && ($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test" || $users_sharee->{txt08} eq "sigo\@sharee.bike")){
my $coo = $q->cookie('domcookie') || $q->param('sessionid') || "";
my $api_test = "sharee_fr01"; my $bike="FR1538";
#my $api_test = "sharee_fr01"; my $bike="FR1005";#E-Lastenrad (bike_group=300101, bike_node=300102)
#my $api_test = "sharee_fr01"; my $bike="FR1538";
my $api_test = "sharee_fr01"; my $bike="FR1005";#E-Lastenrad (bike_group=300101, bike_node=300102)
#my $api_test = "sharee_fr01"; my $bike="FR4781";#Tracking and BVB test
#my $api_test = "sharee_kn"; my $bike="KN205";
#my $api_test = "sharee_wue"; my $bike="WUE5525";

View file

@ -437,7 +437,9 @@ Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterleg
$gesamt = $lb->round($pricing->{total_price});
$gesamt = sprintf('%.2f', $gesamt);
$gesamt =~ s/\./,/;
print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$gesamt €"),"\n";
my $rabatt = "";
$rabatt = "$pricing->{discount}" if($pricing->{discount});
print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$rabatt $gesamt €"),"\n";
}else{
my $gesamt = 0;
my $rabatt = "";