Bike-smartlock archive refactoring and adding fleed hotline. 0 euro tariff extension

This commit is contained in:
ragu 2023-11-23 19:02:16 +01:00
parent 60f5bf58ed
commit b1c6a62657
11 changed files with 85 additions and 69 deletions

View file

@ -921,8 +921,7 @@ sub booking_request(){
fetch => "one",
main_id => 300008,
template_id => 218,
ca_id => "$auth->{c_id}",
#int10 => "$auth->{c_id}",#deprecated
int10 => "$auth->{c_id}",
state => "null",
close_time => "is::null",
};
@ -948,7 +947,7 @@ sub booking_request(){
$ct_station = $dbt->fetch_record($dbh,$pref_station) if($ct_bike->{int04});
#get invoice
$ctt = $dbt->fetch_record($dbh,$pref);
$ctt = $dbt->fetch_record($dbh,$pref) if($auth->{c_id});
if(!$ctt->{c_id}){
my $ct_id = $dbt->insert_contenttrans($dbh,$auth,"300008","218","----","$owner");
$pref->{c_id} = $ct_id;
@ -1744,7 +1743,7 @@ sub rental_to_feedback{
}
}
return ($ctpos,$show_dialog);
}
}#end rental_to_feedback
#user bikes occupied
@ -1961,11 +1960,21 @@ sub bikes_available(){
if(ref($tariff_content) eq "HASH"){
foreach my $tid (sort { $tariff_content->{$a}->{barcode} <=> $tariff_content->{$b}->{barcode} } keys (%$tariff_content)){
my $unit_price1 = $tariff_content->{$tid}->{int35};
my $unit_price2 = $tariff_content->{$tid}->{int36};
my $max_fee = $tariff_content->{$tid}->{int17};
my $unit_time = $tariff_content->{$tid}->{time01};
my $free_time = $tariff_content->{$tid}->{time02};
if($lang eq "de"){
$unit_price1 =~ s/\./,/ if(looks_like_number($unit_price1));
$unit_price2 =~ s/\./,/ if(looks_like_number($unit_price2));
$max_fee =~ s/\./,/ if(looks_like_number($max_fee));
}
foreach my $atid (keys (%$adrtarif_hash)){
#print "if($record->{$id}->{main_id} == $tariff_content->{$tid}->{int12} && $atid == $tariff_content->{$tid}->{barcode}){\n";
if($record->{$id}->{main_id} == $tariff_content->{$tid}->{int12} && $atid == $tariff_content->{$tid}->{barcode}){
#$bw->log("bikes_available for user c_id: $auth->{c_id} if($record->{$id}->{main_id} == $tariff_content->{$tid}->{int12} && $atid == $tariff_content->{$tid}->{barcode}) on BIKE:",$return->{$id}->{bike},"");
$bw->log("bikes_available for user c_id: $auth->{c_id} if($record->{$id}->{main_id} == $tariff_content->{$tid}->{int12} && $atid == $tariff_content->{$tid}->{barcode}) on BIKE:",$return->{$id}->{bike},"");
$return->{$id}->{rental_description}->{name} = "$tariff_content->{$tid}->{ct_name}";
$return->{$id}->{rental_description}->{id} = "$tariff_content->{$tid}->{barcode}";
@ -1978,30 +1987,33 @@ sub bikes_available(){
my $i = 0;
foreach my $td (sort keys (%$td_template)){
my $time_unit = "";
my $time_unit = "Min";
#print "$tid|$tariff_content->{$tid}->{barcode}|$tariff_content->{$tid}->{int35}|$tariff_content->{$tid}->{time02}\n";
if($td_template->{$td}->{int35} && $tariff_content->{$tid}->{int35} && $tariff_content->{$tid}->{int35} > 0){
$tariff_content->{$tid}->{int35} =~ s/\./,/ if($lang eq "de");
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time01});
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int35}","$tariff_content->{$tid}->{int35} € / $time_unit"];
if($td_template->{$td}->{int35} && looks_like_number($tariff_content->{$tid}->{int35})){
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time01}) if($tariff_content->{$tid}->{time01} =~ /[1-9]/);
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int35}","$unit_price1 € / $time_unit"];
}elsif($td_template->{$td}->{int36} && $tariff_content->{$tid}->{int36} && $tariff_content->{$tid}->{int36} > 0){
$tariff_content->{$tid}->{int36} =~ s/\./,/ if($lang eq "de");
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time01});
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int36}", "$tariff_content->{$tid}->{int36} € / $time_unit"];
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time01}) if($tariff_content->{$tid}->{time01} =~ /[1-9]/);
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int36}", "$unit_price2 € / $time_unit"];
}elsif($td_template->{$td}->{int17} && $tariff_content->{$tid}->{int17} && $tariff_content->{$tid}->{int17} > 0){
$tariff_content->{$tid}->{int17} =~ s/\./,/ if($lang eq "de");
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int17}","$tariff_content->{$tid}->{int17} € / 24 $varenv_prim->{cms}->{'unit-hour'}->{txt}"];
}elsif($td_template->{$td}->{time02} && $tariff_content->{$tid}->{time02} =~ /[1-9]/){
if($further_freedtime_available == 1 || !$auth->{c_id}){
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int17}","$max_fee € / 24 $varenv_prim->{cms}->{'unit-hour'}->{txt}"];
}elsif($td_template->{$td}->{time02}){
if($tariff_content->{$tid}->{time02} =~ /[1-9]/){
if($further_freedtime_available == 1 || !$auth->{c_id}){
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time02});
$time_unit .= " / $varenv_prim->{cms}->{'unit-day'}->{txt}" if($dbt->{operator}->{$varenv->{dbname}}->{project} ne "Konstanz");
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{time02}","$time_unit"];
}
}else{
delete $return->{$id}->{rental_description}->{tarif_elements}->{$td};
}
}
}#end new rental_description
}#end foreach my $td (sort keys (%$td_template))
}
}
}#end foreach my $atid (keys (%$adrtarif_hash))
}
}
$op_return->{$dbt->{operator}->{$varenv->{dbname}}->{oprefix} . $id} = $return->{$id};

View file

@ -50,6 +50,9 @@ sub handler {
my @keywords = $q->param;
my $debug=1;
my $user_agent = $q->user_agent();
my $user_agent_subversion = 1000;
#$user_agent = "Meinkonrad/3.0.363";#test
$user_agent_subversion = $1 if($user_agent =~ /3\.0\.(\d+)/);
#my %headers = map { $_ => $q->http($_) } $q->http();
#$bw->log("headers:",\%headers,"");
@ -68,7 +71,7 @@ my $response = {
apiserver => "$apiserver",
response => "$respreq",
uri_primary => "$dbt->{primary}->{sharee_primary}->{primaryApp}",
copri_version => "4.1.23.20",
copri_version => "4.1.23.22",
user_id => "",
authcookie => "",
new_authcoo => "0",
@ -522,12 +525,11 @@ elsif($q->param('request') eq "bikes_available"){
}
#2023-11-13, return also bikes_occupied on bikes_available by operator request
#if(1==1 && $varenv{syshost} ne "shareeapp-primary" && $dbt->{copri_conf}->{betau_id}->{$authraw->{c_id}}){
#return list of occupied/requested bikes
if($user_agent_subversion >= 375 || $user_agent =~ /Mozilla/){#Mozilla for testing
my $record = {};
$record = $apif->user_bikes_occupied($dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
#}
}
}
if(ref($response->{bikes}) ne "HASH"){
$response->{response_state} = "Failure 5003: cannot find any user defined bike tariff";
@ -715,10 +717,6 @@ elsif($q->param('request') eq "stations_available"){
my $authraw = {};
($auth,$authraw) = $apif->auth_verify($q);
my $user_agent_subversion = 1000;
#$user_agent = "Meinkonrad/3.0.363";#test
$user_agent_subversion = $1 if($user_agent =~ /3\.0\.(\d+)/);
#merchant_message timerange
my $lnow = strftime("%Y-%m-%d %H:%M:%S", localtime(time));
my $localtime = Time::Piece->strptime($lnow, "%Y-%m-%d %H:%M:%S");

View file

@ -794,18 +794,13 @@ sub fetch_record(){
$where .= " and ct.$key $op $value";
}
}
if($key =~ /^(type_id)$/){
if(looks_like_number($value)){
if($key =~ /type_id|archive/){
if(looks_like_number($value) || $value eq "null"){
$where .= " and nd.$key $op $value";
}
}
if($varenv{systype} && $varenv{systype} eq "azn" && $key =~ /start_time|end_time/){
if($key =~ /start_time/){
$where .= " and (ct.end_time >= '$fetch->{start_time}' AND ct.start_time <= '$fetch->{end_time}')";
$order = "order by ct.start_time DESC";#because to get ct_id for contenttverpos Übertrag
}
}elsif($key =~ /close_time$/ && $value){
if($key =~ /close_time$/ && $value){
$where .= " and ct.$key $op $value";
}elsif($key =~ /time$/ && $value){
if($value =~ /interval/){
@ -818,6 +813,7 @@ sub fetch_record(){
}
#ct.* because of nd.txt01 and ct.txt01 .
#TODO drop "lang" then set nd.* should be possible
my $sql = "SELECT ct.*,rel.*,nd.node_name,nd.parent_id,nd.type_id,nd.energy_id FROM $fetch->{table} ct, relation rel, nodes nd $where $order";
#$bw->log("DBtank fetch_record : ",$sql,"") if($debug);
my $sth = $dbh->prepare($sql);
@ -852,7 +848,7 @@ sub fetch_tablerecord(){
if($key =~ /ct_name/ && $value =~ /CAST/){#CAST(c_id AS text)
$where .= " and $key $op $value";
}elsif($key =~ /^(ct_name$|txt\d+|uri\d+|state)$/ && $value){
}elsif($key =~ /^(ct_name|txt\d+|state)$/ && $value){
if($value =~ /length\($key\)/){
$where .= " and $value";
}elsif($value eq "null"){

View file

@ -52,7 +52,7 @@ sub mobox3(){
if($R::node2edit eq "edit_relation" || $R::rel_edit =~ /_relation/){
$title = "Node Editor";
$height = "300";
$height = "400";
$width = "600";
}

View file

@ -134,7 +134,8 @@ sub admin_tpl(){
print $q->Tr();
print $q->td({-class=>'left_italic_cms'},"$des");
print $q->td({-class=>'content1_cms'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$node_meta->{$key}",-override=>'1',-size=>"$isize",-maxlength=>120)),"\n";
}elsif($key eq "type_id" && $isize eq "select" && $node_meta->{template_id} eq "205"){
}elsif($node_meta->{template_id} eq "205"){
if($key eq "type_id" && $isize eq "select"){
my @s_valxx = ();
my $s_hash = {};
$s_hash = $dbt->{copri_conf}->{type_id};
@ -144,11 +145,25 @@ sub admin_tpl(){
push @s_valxx, "$s_key:$s_hash->{$s_key}";
}
print $q->td({-class=>'content1_cms'},$but->selector_class("$key","","",$node_meta->{$key},@s_valxx)),"\n";
}elsif($key eq "energy_id" && $isize eq "checkbox"){
}elsif($key eq "energy_id" && $isize eq "checkbox"){
print $q->Tr();
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
print $q->td({-class=>'content1_cms', -colspan=>'1'}, $but->checkbox("1","$key","$node_meta->{$key}")),"\n";
print $q->hidden(-name=>"$key",-override=>1,-value=>"null");
}elsif($key eq "archive" && $isize eq "checkbox"){
print $q->Tr();
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
print $q->td({-class=>'content1_cms', -colspan=>'1'}, $but->checkbox("1","$key","$node_meta->{$key}")),"\n";
print $q->hidden(-name=>"$key",-override=>1,-value=>"null");
}elsif($key eq "hotline_email"){
print $q->Tr();
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
print $q->td({-class=>'content1_cms'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$node_meta->{$key}",-override=>'1',-size=>"$isize",-maxlength=>120)),"\n";
}elsif($key eq "hotline_phone"){
print $q->Tr();
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
print $q->td({-class=>'content1_cms'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$node_meta->{$key}",-override=>'1',-size=>"$isize",-maxlength=>120)),"\n";
}
}
}
}else{

View file

@ -1217,11 +1217,11 @@ sub save_relation {
$valxx = "null" if(!$valxx && $valxx ne "0");#for empty
$valxx = "0" if($valxx eq "0");
$u_rows = $dbt->update_one($dbh,$update_node,"$_=$valxx") if($valxx =~ /^\d+$|null|0/);
}elsif($_ eq "type_id" && $valxx){
$u_rows = $dbt->update_one($dbh,$update_node,"type_id=$valxx");
}elsif($_ eq "energy_id"){
}elsif($_ =~ /type_id|energy_id|archive/ && $valxx){
$u_rows = $dbt->update_one($dbh,$update_node,"$_=$valxx");
$valxx = "null" if(!$valxx || $valxx eq "null");
$u_rows = $dbt->update_one($dbh,$update_node,"energy_id=$valxx");
}elsif($_ =~ /hotline_email|hotline_phone/){
$u_rows = $dbt->update_one($dbh,$update_node,"$_='$valxx'");
}elsif($_ =~ /node_public/){
$valxx = "t" if($valxx eq "1" || $valxx eq "t");
$valxx = "f" if(!$valxx || $valxx eq "f");

View file

@ -411,8 +411,8 @@ sub fetch_rentalfeed {
}
foreach my $td (sort keys (%$td_template)){
my $time_unit = "";
if($td_template->{$td}->{int35} && $ctpos->{int35} && $ctpos->{int35} > 0){
my $time_unit = "Min";
if($td_template->{$td}->{int35} && looks_like_number($ctpos->{int35})){
$ctpos->{int35} =~ s/\./,/ if($lang eq "de");
$time_unit = $dbt->time_format($varenv_prim,$ctpos->{time01});
$return->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int35}","$ctpos->{int35} € / $time_unit"];