mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 19:56:29 +01:00
smartlock sequence refactoring
This commit is contained in:
parent
03d4fac62b
commit
60a60121f3
4 changed files with 208 additions and 310 deletions
|
@ -816,7 +816,7 @@ sub service_work {
|
|||
$return->{$article}->{$key_change}->{time_over} = "$time_over";
|
||||
$return->{$article}->{$key_change}->{service_type} = "$service_type";
|
||||
$return->{$article}->{$key_change}->{work_val} = "$pos_record->{$id}->{$key}" if($key =~ /int/);
|
||||
$return->{$article}->{$key_change}->{work_val} .= "$pos_record->{$id}->{$key}" if($key =~ /txt/);
|
||||
$return->{$article}->{$key_change}->{work_val} .= "$pos_record->{$id}->{$key}\n" if($key =~ /txt/);
|
||||
$return->{$article}->{$key_change}->{mtime} = "$pos_record->{$id}->{mtime}";
|
||||
$return->{$article}->{$key_change}->{user_name} = "$u_name";
|
||||
$return->{$article}->{$key_change}->{owner} = "$pos_record->{$id}->{owner}";
|
||||
|
@ -844,7 +844,7 @@ sub service_work {
|
|||
$return->{$article}->{$key}->{service_type} = "$service_type";
|
||||
$return->{$article}->{$key}->{work_val} = "1" if($key =~ /int/);
|
||||
$return->{$article}->{$key}->{work_val} = "::erledigt::" if($key =~ /txt/);
|
||||
$return->{$article}->{$key}->{mtime} = "2022-01-18 00:00";
|
||||
$return->{$article}->{$key}->{mtime} = "2022-09-29 00:00";
|
||||
$return->{$article}->{$key}->{user_name} = "init";
|
||||
$return->{$article}->{$key}->{owner} = "188";
|
||||
|
||||
|
@ -968,7 +968,7 @@ sub booking_request(){
|
|||
my $response_text = "";
|
||||
|
||||
#state and lock_state is only defined if requestes incl. occupied
|
||||
$bw->log("booking_request bike to state $bike $state $lock_state, auth $auth->{c_id}, tarif $ct_tariff->{barcode}, bike:",$bike,"");
|
||||
$bw->log("booking_request bike to state | $bike | $state | $lock_state, tarif $ct_tariff->{barcode}, auth:",$auth->{c_id},"");
|
||||
|
||||
my $update_adr = {
|
||||
table => "contentadr",
|
||||
|
@ -1099,7 +1099,6 @@ sub booking_update(){
|
|||
my %varenv = $cf->envonline();
|
||||
my $rows = 0;
|
||||
my $user_agent = $q->user_agent();
|
||||
my $record_pos = { c_id => 0 };#if fails
|
||||
#my $bike = $q->param('bike');
|
||||
#my $bike_id = $1 if($q->escapeHTML($q->param('bike')) =~ /(\d+)/);
|
||||
my $bike = $q->escapeHTML($q->param('bike')) || "";
|
||||
|
@ -1141,6 +1140,7 @@ sub booking_update(){
|
|||
int10 => "IN::('3','2')",
|
||||
};
|
||||
|
||||
my $record_pos = { c_id => 0 };
|
||||
$record_pos = $dbt->collect_post($dbh,$pref) if($q->param('bike'));
|
||||
|
||||
my $pref_cc = {
|
||||
|
@ -1150,10 +1150,10 @@ sub booking_update(){
|
|||
barcode => $bike_id,
|
||||
};
|
||||
|
||||
my $record_cc = {};
|
||||
my $record_cc = { c_id => 0 };
|
||||
$record_cc = $dbt->fetch_record($dbh,$pref_cc) if($q->param('bike'));
|
||||
|
||||
$bw->log("booking_update bike to state $bike $state ($state_key) $lock_state, auth $auth->{c_id}, bike:",$bike,"");
|
||||
$bw->log("booking_update bike to state | $bike | $state | $lock_state, auth:",$auth->{c_id},"");
|
||||
|
||||
my $update_cc = {
|
||||
table => "content",
|
||||
|
@ -1161,40 +1161,52 @@ sub booking_update(){
|
|||
owner => "$owner",
|
||||
};
|
||||
|
||||
|
||||
my $gps = "";
|
||||
my $latitude = "";
|
||||
my $longitude = "";
|
||||
my $gps_data = {
|
||||
gps => "",
|
||||
latitude => "",
|
||||
longitude => "",
|
||||
gps_age_miniutes => 60,
|
||||
gps_accuracy => 0,
|
||||
geo_distance => 1000000,
|
||||
};
|
||||
#old
|
||||
if($q->param('gps')){
|
||||
my $gps_input = $q->param('gps');
|
||||
$gps_input =~ s/\s//g;
|
||||
$latitude = $q->escapeHTML($1) if($gps_input =~ /^(\d+\.\d+),\d+/);
|
||||
$longitude = $q->escapeHTML($1) if($gps_input =~ /\d+,(\d+\.\d+)$/);
|
||||
$gps = "$latitude,$longitude" if($latitude && $longitude);
|
||||
$gps_data->{latitude} = $q->escapeHTML($1) if($gps_input =~ /^(\d+\.\d+),\d+/);
|
||||
$gps_data->{longitude} = $q->escapeHTML($1) if($gps_input =~ /\d+,(\d+\.\d+)$/);
|
||||
$gps_data->{gps} = "$gps_data->{latitude},$gps_data->{longitude}" if($gps_data->{latitude} && $gps_data->{longitude});
|
||||
}
|
||||
#new
|
||||
if($q->param('latitude') && $q->param('longitude')){
|
||||
my $latitude_in = $q->param('latitude');
|
||||
my $longitude_in = $q->param('longitude');
|
||||
$latitude = $1 if($latitude_in =~ /(\d+\.\d+)/);
|
||||
$longitude = $1 if($longitude_in =~ /(\d+\.\d+)/);
|
||||
$gps = "$latitude,$longitude" if($latitude && $longitude);
|
||||
$gps_data->{latitude} = $1 if($latitude_in =~ /(\d+\.\d+)/);
|
||||
$gps_data->{longitude} = $1 if($longitude_in =~ /(\d+\.\d+)/);
|
||||
$gps_data->{gps} = "$gps_data->{latitude},$gps_data->{longitude}" if($gps_data->{latitude} && $gps_data->{longitude});
|
||||
}
|
||||
|
||||
my $Ilockit_GUID = "";
|
||||
$Ilockit_GUID = $q->escapeHTML($q->param('Ilockit_GUID')) if($q->param('Ilockit_GUID') && $q->param('Ilockit_GUID') =~ /\w+-\w+-\w+-\w+$/);
|
||||
my $gps_age = 0;
|
||||
my $gps_age_minutes = 60;
|
||||
$gps_age = $q->escapeHTML($1) if($q->param('gps_age') =~ /^(\d+)/);#in milli-sec
|
||||
$gps_age_minutes = $gps_age / 1000 / 60 if($gps_age);
|
||||
#$update_pos->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
||||
$update_cc->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
||||
|
||||
my $gps_accuracy = 0;
|
||||
$gps_accuracy = $q->escapeHTML($1) if($q->param('gps_accuracy') =~ /^(\d+)/);#in meters
|
||||
my $geo_distance = 1000000;#defaults to 1000000 Meter
|
||||
my $gps_age = 0;
|
||||
$gps_age = $1 if($q->param('gps_age') =~ /^(\d+)/);#in milisec
|
||||
$gps_data->{gps_age_minutes} = $gps_age / 1000 / 60 if($gps_age);
|
||||
$gps_data->{gps_accuracy} = $1 if($q->param('gps_accuracy') =~ /^(\d+)/);#in meters
|
||||
|
||||
#2022-10-02 manage lock_state before state
|
||||
if($lock_state && $lock_state =~ /locking|locked|unlocking|unlocked/ && $record_pos->{cc_id} && $record_pos->{cc_id} > 0){
|
||||
$booking_values = $self->smartlock($q,$varenv,$auth,$owner,$record_pos,$record_cc,$gps_data,$booking_values);
|
||||
my $booking_pos = {
|
||||
table => "contenttranspos",
|
||||
fetch => "one",
|
||||
c_id => "$record_pos->{c_id}",
|
||||
};
|
||||
$record_pos = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||
}
|
||||
|
||||
#my $ct_state = $state;
|
||||
my $ct_state = $record_pos->{int10};#2020-07-25 changed because ct_state cannot be canceled
|
||||
|
||||
#6 = "canceled"|3 = "occupied"|1 = "available"
|
||||
if($state_key && ($state_key == 6 || $state_key == 3 || $state_key == 1) && $record_pos->{cc_id} && $record_pos->{cc_id} > 0){
|
||||
|
@ -1203,7 +1215,6 @@ sub booking_update(){
|
|||
if($record_pos->{int11} && ($record_pos->{int11} == 2 || $record_pos->{int11} == 3)){
|
||||
my $update_pos = {
|
||||
table => "contenttranspos",
|
||||
#int10 => "$state_key",
|
||||
mtime => "now()",
|
||||
};
|
||||
|
||||
|
@ -1213,11 +1224,11 @@ sub booking_update(){
|
|||
$update_pos->{txt27} = $q->escapeHTML($q->param('app_debug')) if($q->param('app_debug'));
|
||||
}
|
||||
|
||||
#if($state =~ /canceled/ && $record_pos->{txt10} =~ /requested/)
|
||||
if($state_key == 6 && $record_pos->{int10} == 2){
|
||||
#if($state eq canceled && $record_pos.state eq requested && $record_pos.lock_state eq locked)
|
||||
if($state_key == 6 && $record_pos->{int10} == 2 && $record_pos->{int20} == 1){
|
||||
$rows = $dbt->delete_content($dbh,"contenttranspos",$record_pos->{c_id});
|
||||
if($rows > 0){
|
||||
$ct_state = "1";#1 = "available"
|
||||
$update_cc->{int10} = 1;
|
||||
$booking_values->{response_state} = "OK: canceled bike " . $q->param('bike');
|
||||
$booking_values->{response_text} = "Fahrrad Nr. " . $q->param('bike') . " wurde erfolgreich storniert";
|
||||
$booking_values->{state} = "available";
|
||||
|
@ -1226,7 +1237,6 @@ sub booking_update(){
|
|||
$booking_values->{response_text} = "Keine Reservierung zu Fahrrad Nr. " . $q->param('bike') . " gefunden.";
|
||||
}
|
||||
}else{
|
||||
$update_pos->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
||||
|
||||
#prevent reset occupied values OR only if genkey defined
|
||||
#if(($state eq "occupied" && $record_pos->{txt10} =~ /requested/) || ($state eq "occupied" && $record_pos->{txt10} =~ /occupied/ && $q->param('genkey') eq "1"))
|
||||
|
@ -1234,15 +1244,14 @@ sub booking_update(){
|
|||
|
||||
$update_pos->{start_time} = "now()";
|
||||
$update_pos->{end_time} = "now()";
|
||||
#$update_pos->{txt05} = "$gps";#start GPS, not exist on request
|
||||
$update_pos->{txt05} = "$record_cc->{txt06}";#pos start GPS from content end GPS
|
||||
$update_pos->{int06} = "$record_cc->{int04}";#pos start station from content station
|
||||
$update_pos->{txt12} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";#pos start station prefix
|
||||
$update_pos->{int21} = "$gps_age_minutes";
|
||||
$update_pos->{int22} = "$gps_accuracy";
|
||||
$update_pos->{int21} = $gps_data->{gps_age_minutes};
|
||||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{owner} = "$owner";
|
||||
|
||||
$update_pos->{int10} = "$state_key";
|
||||
$update_pos->{int10} = 3;
|
||||
$update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalId});
|
||||
$update_pos->{txt22} = "$sig_book->{bikeId}" if($sig_book->{bikeId});
|
||||
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
|
@ -1250,39 +1259,15 @@ sub booking_update(){
|
|||
if($rows > 0){
|
||||
$booking_values->{response_state} = "OK: occupied bike " . $q->param('bike');
|
||||
$booking_values->{response_text} = "Fahrrad Nr. " . $q->param('bike') . " Miete gestartet. ";
|
||||
$ct_state = $state_key;
|
||||
$update_cc->{int10} = 3;
|
||||
}
|
||||
#Mietende request state=available and pos-state 2=requested or 3=occupied
|
||||
}elsif($state_key == 1 && ($record_pos->{int10} == 2 || $record_pos->{int10} == 3)){
|
||||
|
||||
#int24 == 1 if if locked && end gps && end station && gps_age <= 3 min && in geo_fence
|
||||
if($record_pos->{int24}){
|
||||
$update_pos->{owner_end} = "$owner";
|
||||
$update_pos->{end_time} = "now()";
|
||||
#rental end only if locked
|
||||
#if(state eq available && $record_pos.lock_state eq locked and pos-state 2=requested or 3=occupied
|
||||
}elsif($state_key == 1 && $record_pos->{int20} == 1 && ($record_pos->{int10} == 2 || $record_pos->{int10} == 3)){
|
||||
|
||||
#return after booking_update
|
||||
#my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
|
||||
#new sharee_pricing
|
||||
my ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos,"");
|
||||
#int03 only used for tarif counting backwards compatibility
|
||||
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
|
||||
$update_pos->{int38} = "$counting->{int38}" if(looks_like_number($counting->{int38}));
|
||||
$update_pos->{int39} = "$counting->{int39}" if(looks_like_number($counting->{int39}));
|
||||
$update_pos->{int40} = "$counting->{int40}" if(looks_like_number($counting->{int40}));
|
||||
$update_pos->{int41} = "$counting->{int41}" if(looks_like_number($counting->{int41}));
|
||||
|
||||
$update_pos->{int10} = "$state_key";
|
||||
$update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalId});
|
||||
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
|
||||
$booking_values->{response_state} = "OK: available bike " . $q->param('bike') . ", still locked";
|
||||
$booking_values->{response_text} = "Danke! Die Miete Fahrrad Nr. " . $q->param('bike') . " wurde beendet. Schloß wurde bereits abgeschlossen.";
|
||||
$ct_state = $state_key;
|
||||
|
||||
|
||||
}
|
||||
#client GPS must have. sigo ist done without client gps
|
||||
elsif(($gps && $gps_age_minutes <= 3) || ($record_pos->{int11} == 3)){
|
||||
if(($gps_data->{gps} && $gps_data->{gps_age_minutes} <= 3) || ($record_pos->{int11} == 3)){
|
||||
#geofencing for Ilockit
|
||||
my $geo_distance_next = 100000;
|
||||
my $station_next = 0;
|
||||
|
@ -1292,41 +1277,34 @@ sub booking_update(){
|
|||
foreach my $id (sort { $stations_raw->{$a}->{barcode} <=> $stations_raw->{$b}->{barcode} } keys (%$stations_raw)){
|
||||
my $latitude_station = $1 if($stations_raw->{$id}->{txt06} =~ /^(\d+\.\d+)/);
|
||||
my $longitude_station = $1 if($stations_raw->{$id}->{txt06} =~ /(\d+\.\d+)$/);
|
||||
if((!looks_like_number($latitude) || !looks_like_number($longitude)) && ($record_pos->{int11} != 3)){
|
||||
$geo_debug .= "ERROR no user GPS: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
}elsif((looks_like_number($latitude) && looks_like_number($longitude) && looks_like_number($latitude_station) && looks_like_number($longitude_station)) || ($record_pos->{int11} == 3)){
|
||||
if((!looks_like_number($gps_data->{latitude}) || !looks_like_number($gps_data->{longitude})) && ($record_pos->{int11} != 3)){
|
||||
$geo_debug .= "ERROR no user GPS: $stations_raw->{$id}->{barcode}|$gps_data->{latitude},$gps_data->{longitude},$latitude_station,$longitude_station --> $gps_data->{geo_distance} Meter\n";
|
||||
}elsif((looks_like_number($gps_data->{latitude}) && looks_like_number($gps_data->{longitude}) && looks_like_number($latitude_station) && looks_like_number($longitude_station)) || ($record_pos->{int11} == 3)){
|
||||
$update_pos->{owner_end} = "$owner";
|
||||
$update_pos->{end_time} = "now()";
|
||||
|
||||
$geo_distance = $lb->geo_fencing($latitude,$longitude,$latitude_station,$longitude_station);
|
||||
#$station_next = $stations_raw->{$id}->{int04};
|
||||
#if($geo_distance <= $stations_raw->{$id}->{int06})
|
||||
$gps_data->{geo_distance} = $lb->geo_fencing($gps_data->{latitude},$gps_data->{longitude},$latitude_station,$longitude_station);
|
||||
|
||||
#sigo development workaround without geofence
|
||||
if(($geo_distance <= $stations_raw->{$id}->{int06}) || ($record_pos->{int11} == 3)){
|
||||
$geo_distance_next = $geo_distance;
|
||||
if(($gps_data->{geo_distance} <= $stations_raw->{$id}->{int06}) || ($record_pos->{int11} == 3)){
|
||||
$geo_distance_next = $gps_data->{geo_distance};
|
||||
#end-Station
|
||||
$update_pos->{int04} = "$stations_raw->{$id}->{int04}";
|
||||
$update_cc->{int04} = "$stations_raw->{$id}->{int04}";
|
||||
#if($lock_state eq "locked"){
|
||||
$update_pos->{int24} = "1";
|
||||
$update_pos->{int10} = "$state_key";
|
||||
#}
|
||||
$update_pos->{int04} = $stations_raw->{$id}->{int04};
|
||||
$update_cc->{int04} = $stations_raw->{$id}->{int04};
|
||||
$update_pos->{int10} = 1;
|
||||
$update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalId});
|
||||
$update_cc->{txt06} = "$gps";#end content coordinates
|
||||
$update_pos->{txt06} = "$gps";#end pos coordinates
|
||||
$update_pos->{int21} = "$gps_age_minutes";
|
||||
$update_pos->{int22} = "$gps_accuracy";
|
||||
$update_pos->{int23} = "$geo_distance";
|
||||
$update_cc->{txt06} = "$gps_data->{gps}";#end content coordinates
|
||||
$update_pos->{txt06} = "$gps_data->{gps}";#end pos coordinates
|
||||
$update_pos->{int21} = $gps_data->{gps_age_minutes};
|
||||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{int23} = $gps_data->{geo_distance};
|
||||
$update_pos->{int26} = "$sig_book->{distance}" if($sig_book->{distance});
|
||||
$update_pos->{int28} = "$sig_book->{station_lock_state}" if($sig_book->{station_lock_state});
|
||||
#end-Station prefix
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
#end-Station prefix
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
|
||||
#return after booking_update
|
||||
#my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
|
||||
#new sharee_pricing
|
||||
my ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos,"");
|
||||
#int03 only used for tarif counting backwards compatibility
|
||||
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
|
||||
|
@ -1338,33 +1316,29 @@ sub booking_update(){
|
|||
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
|
||||
if($rows > 0){
|
||||
#if($rows > 0 && $lock_state eq "locked"){
|
||||
$booking_values->{response_state} = "OK: available bike " . $q->param('bike');
|
||||
$booking_values->{response_text} = "Danke! Die Miete Fahrrad Nr. " . $q->param('bike') . " wurde beendet.";
|
||||
$ct_state = $state_key;
|
||||
$update_cc->{int10} = 1;
|
||||
$booking_values->{response_state} = "OK: available bike " . $q->param('bike');
|
||||
$booking_values->{response_text} = "Danke! Die Miete Fahrrad Nr. " . $q->param('bike') . " wurde beendet.";
|
||||
}
|
||||
|
||||
$geo_debug .= "Matching station: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
$geo_debug .= "Matching station: $stations_raw->{$id}->{barcode}|$gps_data->{latitude},$gps_data->{longitude},$latitude_station,$longitude_station --> $gps_data->{geo_distance} Meter\n";
|
||||
last;
|
||||
}else{
|
||||
if($geo_distance <= $geo_distance_next){
|
||||
$geo_distance_next = $geo_distance;
|
||||
if($gps_data->{geo_distance} <= $geo_distance_next){
|
||||
$geo_distance_next = $gps_data->{geo_distance};
|
||||
$station_next = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$stations_raw->{$id}->{int04}";
|
||||
}
|
||||
#2021-10-13 changed to save last gps @all
|
||||
$update_cc->{txt06} = "$gps";#end content coordinates
|
||||
$update_pos->{txt06} = "$gps";#end pos coordinates
|
||||
$update_pos->{int21} = "$gps_age_minutes";
|
||||
$update_pos->{int22} = "$gps_accuracy";
|
||||
$update_pos->{int23} = "$geo_distance";
|
||||
$update_cc->{txt06} = "$gps_data->{gps}";#end content coordinates
|
||||
$update_pos->{txt06} = "$gps_data->{gps}";#end pos coordinates
|
||||
$update_pos->{int21} = $gps_data->{gps_age_minutes};
|
||||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{int23} = $gps_data->{geo_distance};
|
||||
#end-Station prefix
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
#end-Station prefix
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
|
||||
#return after booking_update
|
||||
#my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
|
||||
#new sharee_pricing
|
||||
my ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos,"");
|
||||
#int03 only used for tarif counting backwards compatibility
|
||||
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
|
||||
|
@ -1375,14 +1349,14 @@ sub booking_update(){
|
|||
|
||||
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
|
||||
$geo_debug .= "Out of station distance: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance_next Meter ($geo_distance_next <= $geo_distance) station_next: $station_next\n";
|
||||
$geo_debug .= "Out of station distance: $stations_raw->{$id}->{barcode}|$gps_data->{latitude},$gps_data->{longitude},$latitude_station,$longitude_station --> $geo_distance_next Meter ($geo_distance_next <= $gps_data->{geo_distance}) station_next: $station_next\n";
|
||||
|
||||
$booking_values->{response_state} = "Failure 2178: bike " . $q->param('bike') . " out of GEO fencing. $geo_distance_next meter distance to next station $station_next .";
|
||||
$booking_values->{response_text} = "Achtung! Ihr aktueller Standort liegt außerhalb einer Fahrradstation. Die Miete Fahrrad Nr. " . $q->param('bike') . " kann nicht $state_text werden. $geo_distance_next Meter Entfernung zur nächsten Station $station_next . Falls Sie sich doch an einer Station befinden, dann wiederholen Sie \"Miete beenden\".";
|
||||
}
|
||||
|
||||
}else{
|
||||
$geo_debug .= "ERROR no station GPS: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
$geo_debug .= "ERROR no station GPS: $stations_raw->{$id}->{barcode}|$gps_data->{latitude},$gps_data->{longitude},$latitude_station,$longitude_station --> $gps_data->{geo_distance} Meter\n";
|
||||
}
|
||||
}
|
||||
$booking_values->{geo_distance} = "$geo_distance_next";
|
||||
|
@ -1391,24 +1365,24 @@ sub booking_update(){
|
|||
|
||||
#end if gps && gps_age <= 3 and not sigo
|
||||
}elsif($record_pos->{int11} != 3){
|
||||
if(!$gps){
|
||||
if(!$gps_data->{gps}){
|
||||
$booking_values->{response_state} = "Failure 2245: No GPS data, state change forbidden.";
|
||||
$booking_values->{response_text} = "Fehler! Keine GPS Standortdaten, Die Miete Fahrrad Nr. " . $q->param('bike') . " kann wegen fehlendem GPS nicht $state_text werden. Bitte aktivieren Sie das GPS.";
|
||||
}else{
|
||||
$booking_values->{response_state} = "Failure 2246: GPS age with $gps_age_minutes minutes too old, state change forbidden.";
|
||||
$booking_values->{response_text} = "Fehler! GPS Daten sind mit $gps_age_minutes Minuten zu alt. Die Miete Fahrrad Nr. " . $q->param('bike') . " kann aufgrund nicht aktueller GPS nicht $state_text werden. Bitte aktivieren Sie das GPS.";
|
||||
$booking_values->{response_state} = "Failure 2246: GPS age with $gps_data->{gps_age_minutes} minutes too old, state change forbidden.";
|
||||
$booking_values->{response_text} = "Fehler! GPS Daten sind mit $gps_data->{gps_age_minutes} Minuten zu alt. Die Miete Fahrrad Nr. " . $q->param('bike') . " kann aufgrund nicht aktueller GPS nicht $state_text werden. Bitte aktivieren Sie das GPS.";
|
||||
}
|
||||
}
|
||||
#end if($state eq "available" &&
|
||||
}elsif($state_key == 6 && $record_pos->{int10} == 3){
|
||||
$booking_values->{response_state} = "Failure 2012: occupied bike " . $q->param('bike') . " cannot be $state";
|
||||
#end if($state eq "available" && $record_pos.state eq occupied || $record_pos.lock_state ne locked
|
||||
}elsif($state_key == 6 && ($record_pos->{int10} == 3 || $record_pos->{int20} != 1)){
|
||||
$booking_values->{response_state} = "Failure 2012: occupied bike " . $q->param('bike') . " cannot be state $state and $lock_state";
|
||||
$booking_values->{response_text} = "Fahrrad Nr. " . $q->param('bike') . " ist in Benutzung und kann somit nicht storniert werden.";
|
||||
}elsif($state_key == 3 && $record_pos->{int10} == 1){
|
||||
$booking_values->{response_state} = "Failure 2016: available bike " . $q->param('bike') . " have to be at first reserved, thats because cannot be $state";
|
||||
$booking_values->{response_text} = "Fahrrad Nr. " . $q->param('bike') . " wurde nicht reserviert und kann somit nicht gemietet werden.";
|
||||
|
||||
}else{
|
||||
$booking_values->{response_state} = "Failure 2035: bike " . $q->param('bike') . " state change to $state not possible.";
|
||||
$booking_values->{response_state} = "Failure 2035: bike " . $q->param('bike') . " state change to state $state and $lock_state not possible.";
|
||||
$booking_values->{response_text} = "Fehler! Die Miete Fahrrad Nr. " . $q->param('bike') . " kann nicht mit dem vorhandenen Status $state_text werden.";
|
||||
}
|
||||
|
||||
|
@ -1421,11 +1395,6 @@ sub booking_update(){
|
|||
|
||||
my $record_ct->{c_id} = $record_pos->{ct_id};
|
||||
$dbt->update_record($dbh,$update_ct,$record_ct);
|
||||
if($q->param('voltage') && $q->param('voltage') =~ /(\d+)/){
|
||||
$update_cc->{int14} = $1;
|
||||
#$self->service_automatic($q) if($1 <= 40);
|
||||
}
|
||||
$update_cc->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
||||
}
|
||||
#end Ilockit || sigo
|
||||
}else{
|
||||
|
@ -1433,166 +1402,14 @@ sub booking_update(){
|
|||
}
|
||||
|
||||
#update bike content
|
||||
$update_cc->{int10} = "$ct_state";#yes we believe it unsafe to get failure #if(looks_like_number($ct_state));
|
||||
$bw->log("check ct_state on update_cc 2.",$update_cc,"");
|
||||
|
||||
#my $record_cc = { c_id => $record_pos->{cc_id} };
|
||||
$dbt->update_record($dbh,$update_cc,$record_cc);
|
||||
|
||||
#require "Mod/KMLout.pm";
|
||||
#my $kmlfile = Mod::KMLout::kmlGenerator($auth,"");
|
||||
|
||||
|
||||
}#end if $state =~ /canceled|occupied|available/
|
||||
|
||||
|
||||
if($lock_state && $lock_state =~ /locking|locked|unlocking|unlocked/ && $record_pos->{cc_id} && $record_pos->{cc_id} > 0){
|
||||
#content
|
||||
my $update_cc = {
|
||||
table => "content",
|
||||
mtime => "now()",
|
||||
owner => "$owner",
|
||||
};
|
||||
$update_cc->{txt28} = $q->escapeHTML($q->param('firmware')) if($q->param('firmware'));
|
||||
|
||||
#only by system=Ilockit
|
||||
if($record_pos->{int11} eq "2" && $q->param('voltage') && $q->param('voltage') =~ /(\d+)/){
|
||||
$update_cc->{int14} = $1;
|
||||
$self->service_automatic($q) if($1 <= 50);
|
||||
}
|
||||
|
||||
my $update_pos = {
|
||||
table => "contenttranspos",
|
||||
mtime => "now()",
|
||||
int24 => 0,
|
||||
};
|
||||
|
||||
if($user_agent && $user_agent !~ /axios/){#keep device info if sig push
|
||||
$update_pos->{int14} = $q->escapeHTML($q->param('voltage')) if($q->param('voltage'));
|
||||
$update_pos->{txt21} = $q->escapeHTML($q->param('user_device')) if($q->param('user_device'));
|
||||
$update_pos->{txt26} = $q->escapeHTML($user_agent) if($user_agent);
|
||||
$update_pos->{txt27} = $q->escapeHTML($q->param('app_debug')) if($q->param('app_debug'));
|
||||
$update_pos->{txt28} = $q->escapeHTML($q->param('firmware')) if($q->param('firmware'));
|
||||
}
|
||||
|
||||
my $lock_value = 0;
|
||||
if($lock_state eq "locked"){
|
||||
$lock_value = 1;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$update_pos->{end_time} = "now()";#2021-01-10 set also end_time on locked
|
||||
|
||||
####### save locked GPS if available
|
||||
if($gps && $gps_age_minutes <= 3){
|
||||
#geofencing for Ilockit
|
||||
my $geo_distance_next = $geo_distance;
|
||||
my $geo_debug="";
|
||||
my ($stations,$stations_raw) = $self->stations_available($q,$varenv,$auth,$record_pos);
|
||||
foreach my $id (sort { $stations_raw->{$a}->{barcode} <=> $stations_raw->{$b}->{barcode} } keys (%$stations_raw)){
|
||||
my $latitude_station = $1 if($stations_raw->{$id}->{txt06} =~ /^(\d+\.\d+)/);
|
||||
my $longitude_station = $1 if($stations_raw->{$id}->{txt06} =~ /(\d+\.\d+)$/);
|
||||
if(!looks_like_number($latitude) || !looks_like_number($longitude)){
|
||||
$geo_debug .= "locked ERROR no user GPS: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
}elsif(looks_like_number($latitude) && looks_like_number($longitude) && looks_like_number($latitude_station) && looks_like_number($longitude_station)){
|
||||
$geo_distance = $lb->geo_fencing($latitude,$longitude,$latitude_station,$longitude_station);
|
||||
$bw->log("geo_distance by geo_fencing:$latitude,$longitude,$latitude_station,$longitude_station|$stations_raw->{$id}->{txt06}",$geo_distance,"");
|
||||
if($geo_distance <= $stations_raw->{$id}->{int06}){
|
||||
$geo_distance_next = $geo_distance;
|
||||
#end-Station
|
||||
$update_pos->{int04} = "$stations_raw->{$id}->{int04}";
|
||||
$update_cc->{int04} = "$stations_raw->{$id}->{int04}";
|
||||
$update_pos->{int24} = "1";
|
||||
|
||||
$geo_debug .= "locked Matching station: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
last;
|
||||
}else{
|
||||
$geo_distance_next = $geo_distance if($geo_distance <= $geo_distance_next);
|
||||
$geo_debug .= "locked Out of station distance: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
|
||||
}
|
||||
|
||||
$update_pos->{txt06} = "$gps";#end pos coordinates
|
||||
$update_pos->{int21} = "$gps_age_minutes";
|
||||
$update_pos->{int22} = "$gps_accuracy";
|
||||
$update_pos->{int23} = "$geo_distance";
|
||||
$update_cc->{txt06} = "$gps";#end content coordinates
|
||||
#end-Station prefix
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
#end-Station prefix
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
|
||||
}else{
|
||||
$geo_debug .= "locked has no station GPS: $stations_raw->{$id}->{barcode}|$latitude,$longitude,$latitude_station,$longitude_station --> $geo_distance Meter\n";
|
||||
}
|
||||
}
|
||||
$booking_values->{geo_distance} = "$geo_distance_next";
|
||||
#print "$geo_debug\n";
|
||||
$bw->log("locked GEOfencing geo_debug:$geo_debug",$booking_values->{geo_distance},"");
|
||||
|
||||
}
|
||||
######## end locke GPS
|
||||
|
||||
if($state){
|
||||
$booking_values->{response_state} .= " OK: bike " . $q->param('bike') . " locked confirmed";
|
||||
$booking_values->{response_text} .= " Abschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt";
|
||||
}else{
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " locked confirmed";
|
||||
$booking_values->{response_text} = "Abschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt";
|
||||
}
|
||||
}elsif($lock_state eq "unlocked"){
|
||||
#int11=system >= 3 (sigo) with station_lock
|
||||
#int30=Station Id
|
||||
#int31=Slot Id
|
||||
#int27=velofactur bike Id
|
||||
#if($record_cc->{int11} && $record_cc->{int11} >=3 && $record_cc->{int30} && $record_cc->{int31} && $record_cc->{int27}){
|
||||
# $bw->log("unlock station lock with: '$record_cc->{int30}' '$record_cc->{int31}' '$record_cc->{int27}' 'Freigeben' '$record_pos->{c_id}'","","");
|
||||
#system(`$varenv{basedir}/src/scripts/velofaktur_client.pl $varenv{syshost} post_velo "$record_cc->{int30}" "$record_cc->{int31}" "$record_cc->{int27}" "Freigeben" "$record_pos->{c_id}"`);
|
||||
#}
|
||||
$lock_value = 2;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
if($state){
|
||||
$booking_values->{response_state} .= " OK: bike " . $q->param('bike') . " unlocked confirmed";
|
||||
$booking_values->{response_text} .= " Aufschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt";
|
||||
}else{
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " unlocked confirmed";
|
||||
$booking_values->{response_text} = "Aufschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt";
|
||||
}
|
||||
}elsif($lock_state eq "locking"){
|
||||
$lock_value = 3;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$update_pos->{int23} = "$geo_distance";
|
||||
if($state){
|
||||
$booking_values->{response_state} .= " OK: bike " . $q->param('bike') . " locking in progress";
|
||||
$booking_values->{response_text} .= " Abschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess. Bitte warten bis das smartlock vollständig geschlossen wurde und das abschließen bestätigt wird.";
|
||||
}else{
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " locking in progress";
|
||||
$booking_values->{response_text} = "Abschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess. Bitte warten bis das smartlock vollständig geschlossen wurde und das abschließen bestätigt wird.";
|
||||
}
|
||||
if($varenv{dbname} ne "sharee_lv" && !$record_pos->{int32}){
|
||||
$bw->log("$varenv{basedir}/src/scripts/sms_message.pl $varenv{syshost} locking_progress $auth->{txt07} $record_pos->{c_id}",$record_pos->{c_id},"");
|
||||
system("$varenv{basedir}/src/scripts/sms_message.pl $varenv{syshost} locking_progress $auth->{txt07} $record_pos->{c_id} &");
|
||||
}
|
||||
$update_pos->{int32} = $record_pos->{int32} + 1;#sms_message sent marker
|
||||
}elsif($lock_state eq "unlocking"){
|
||||
$lock_value = 4;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
if($state){
|
||||
$booking_values->{response_state} .= " OK: bike " . $q->param('bike') . " unlocking in progress";
|
||||
$booking_values->{response_text} .= " Aufschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess.";
|
||||
}else{
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " unlocking in progress";
|
||||
$booking_values->{response_text} = "Aufschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess.";
|
||||
}
|
||||
}
|
||||
|
||||
$dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
$dbt->update_record($dbh,$update_cc,$record_cc);
|
||||
}#end locked
|
||||
|
||||
#fetch final booking state after request
|
||||
if($record_pos->{c_id} > 0){
|
||||
my $booking_pos = {
|
||||
|
@ -1606,10 +1423,7 @@ sub booking_update(){
|
|||
#$booking_values->{bike} = "$booking->{ct_name}";
|
||||
$booking_values->{bike} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$booking->{barcode}";
|
||||
$booking_values->{state} = "$dbt->{copri_conf}->{bike_state}->{$booking->{int10}}";
|
||||
$booking_values->{lock_state} = "locked" if($booking->{int20} == 1);
|
||||
$booking_values->{lock_state} = "unlocked" if($booking->{int20} == 2);
|
||||
$booking_values->{lock_state} = "locking" if($booking->{int20} == 3);
|
||||
$booking_values->{lock_state} = "unlocking" if($booking->{int20} == 4);
|
||||
$booking_values->{lock_state} = "$dbt->{copri_conf}->{lock_state}->{$booking->{int20}}";
|
||||
|
||||
#user_miniquest_count on operator
|
||||
my $dbh_primary = $dbt->dbconnect_extern("sharee_primary");
|
||||
|
@ -1697,6 +1511,97 @@ sub booking_update(){
|
|||
}
|
||||
#end booking_update
|
||||
#
|
||||
|
||||
#smartlock state on request update
|
||||
sub smartlock {
|
||||
my $self = shift;
|
||||
my $q = shift;
|
||||
my $varenv = shift;
|
||||
my $auth = shift;
|
||||
my $owner = shift || 0;
|
||||
my $record_pos = shift || {};
|
||||
my $record_cc = shift || {};
|
||||
my $gps_data = shift || {};
|
||||
my $booking_values = shift || {};
|
||||
my $user_agent = $q->user_agent();
|
||||
my $dbh = "";
|
||||
|
||||
#content
|
||||
my $update_cc = {
|
||||
table => "content",
|
||||
mtime => "now()",
|
||||
owner => "$owner",
|
||||
};
|
||||
$update_cc->{txt28} = $q->escapeHTML($q->param('firmware')) if($q->param('firmware'));
|
||||
|
||||
#only by system=Ilockit
|
||||
if($record_pos->{int11} eq "2" && $q->param('voltage') && $q->param('voltage') =~ /(\d+)/){
|
||||
$update_cc->{int14} = $1;
|
||||
$self->service_automatic($q) if($1 <= 50);
|
||||
}
|
||||
|
||||
my $update_pos = {
|
||||
table => "contenttranspos",
|
||||
mtime => "now()",
|
||||
int24 => 0,
|
||||
};
|
||||
|
||||
if($user_agent && $user_agent !~ /axios/){#keep device info if sig push
|
||||
$update_pos->{int14} = $q->escapeHTML($q->param('voltage')) if($q->param('voltage'));
|
||||
$update_pos->{txt21} = $q->escapeHTML($q->param('user_device')) if($q->param('user_device'));
|
||||
$update_pos->{txt26} = $q->escapeHTML($user_agent) if($user_agent);
|
||||
$update_pos->{txt27} = $q->escapeHTML($q->param('app_debug')) if($q->param('app_debug'));
|
||||
$update_pos->{txt28} = $q->escapeHTML($q->param('firmware')) if($q->param('firmware'));
|
||||
}
|
||||
|
||||
my $lock_value = 0;
|
||||
if($q->param('lock_state') eq "locked"){
|
||||
$lock_value = 1;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$update_pos->{end_time} = "now()";
|
||||
|
||||
$update_cc->{txt06} = $gps_data->{gps};#end content coordinates
|
||||
$update_pos->{txt06} = $gps_data->{gps};#end pos coordinates
|
||||
$update_pos->{int21} = $gps_data->{gps_age_minutes};
|
||||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{int23} = $gps_data->{geo_distance};
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " locked confirmed. ";
|
||||
$booking_values->{response_text} = "Abschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt. ";
|
||||
|
||||
}elsif($q->param('lock_state') eq "unlocked"){
|
||||
$lock_value = 2;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " unlocked confirmed. ";
|
||||
$booking_values->{response_text} = "Aufschließen von Fahrrad Nr. " . $q->param('bike') . " bestätigt. ";
|
||||
|
||||
}elsif($q->param('lock_state') eq "locking"){
|
||||
$lock_value = 3;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " locking in progress. ";
|
||||
$booking_values->{response_text} = "Abschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess. Bitte warten bis das smartlock vollständig geschlossen wurde und das abschließen bestätigt wird. ";
|
||||
if($varenv->{dbname} ne "sharee_lv" && !$record_pos->{int32}){
|
||||
$bw->log("$varenv->{basedir}/src/scripts/sms_message.pl $varenv->{syshost} locking_progress $auth->{txt07} $record_pos->{c_id}",$record_pos->{c_id},"");
|
||||
system("$varenv->{basedir}/src/scripts/sms_message.pl $varenv->{syshost} locking_progress $auth->{txt07} $record_pos->{c_id} &");
|
||||
}
|
||||
$update_pos->{int32} = $record_pos->{int32} + 1;#sms_message sent marker
|
||||
}elsif($q->param('lock_state') eq "unlocking"){
|
||||
$lock_value = 4;
|
||||
$update_cc->{int20} = "$lock_value";
|
||||
$update_pos->{int20} = "$lock_value";
|
||||
$booking_values->{response_state} = "OK: bike " . $q->param('bike') . " unlocking in progress. ";
|
||||
$booking_values->{response_text} = "Aufschließen von Fahrrad Nr. " . $q->param('bike') . " ist im Prozess. ";
|
||||
}
|
||||
|
||||
$dbt->update_record($dbh,$update_pos,$record_pos);
|
||||
$dbt->update_record($dbh,$update_cc,$record_cc);
|
||||
|
||||
return $booking_values;
|
||||
}#end smartlock
|
||||
|
||||
|
||||
#
|
||||
#dedicated service insert automatic
|
||||
sub service_automatic {
|
||||
|
@ -2775,7 +2680,7 @@ sub auth_verify(){
|
|||
if ($auth_primary->{c_id} > 0 && $q->param('user_device')){
|
||||
$update_primary->{txt14} = $q->escapeHTML($session_log) if($session_log);
|
||||
$update_primary->{txt21} = $q->escapeHTML($q->param('user_device')) if($q->param('user_device'));
|
||||
$update_primary->{txt25} = $q->escapeHTML($clientIP) if($clientIP && $clientIP =~ /\d+\.\d+\.\d+\.\d+/);
|
||||
$update_primary->{txt25} = $q->escapeHTML($clientIP) if($clientIP);
|
||||
$update_primary->{txt26} = $q->escapeHTML($user_agent) if($user_agent);
|
||||
}
|
||||
|
||||
|
@ -3040,7 +2945,7 @@ sub authcookie_manager {
|
|||
};
|
||||
|
||||
$update->{txt21} = $q->escapeHTML($q->param('user_device')) if($q->param('user_device'));
|
||||
$update->{txt25} = $q->escapeHTML($clientIP) if($clientIP && $clientIP =~ /\d+\.\d+\.\d+\.\d+/);
|
||||
$update->{txt25} = $q->escapeHTML($clientIP) if($clientIP);
|
||||
$update->{txt26} = $q->escapeHTML($user_agent) if($user_agent);
|
||||
|
||||
my @registered_cookies;
|
||||
|
|
|
@ -1112,15 +1112,16 @@ sub collect_transpos {
|
|||
$where .= " and cp.c_id = $search->{$key}" if(($key eq "c_id" || $key eq "cttpos_id") && $search->{$key});
|
||||
$where .= " and cp.$key ilike '%$search->{$key}%'" if($key eq "txt08" && $search->{$key});
|
||||
$where .= " and cp.$key ilike '%$search->{$key}%'" if($key eq "txt23" && $search->{$key});
|
||||
$where .= " and (cp.int04 = $search->{$key} OR cp.int06 = $search->{$key})" if($key eq "int04" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.int04 = $search->{$key}" if($key eq "int04" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.int06 = $search->{$key}" if($key eq "int06" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.ct_name = '$search->{$key}'" if($key eq "cp_ct_name" && $search->{$key});
|
||||
$where .= " and ct.ct_name = '$search->{$key}'" if($key eq "ct_ct_name" && $search->{$key});
|
||||
$where .= " and ct.txt06 ilike '$search->{$key}%'" if($key eq "ct_txt06" && $search->{$key});#PLZ
|
||||
$where .= " and ct.txt06 ilike '$search->{$key}%'" if($key eq "ct_txt06" && $search->{$key});
|
||||
$where .= " and cp.$key = '$search->{$key}'" if($key eq "ct_id" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int10" && looks_like_number($search->{$key}));#bike_state
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int20" && looks_like_number($search->{$key}));#lock_state
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int10" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int20" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "barcode" && looks_like_number($search->{$key}));
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int12" && looks_like_number($search->{$key}));#flot_id
|
||||
$where .= " and cp.$key = $search->{$key}" if($key eq "int12" && looks_like_number($search->{$key}));
|
||||
$where .= " and (cp.$key = $search->{$key} OR cp.owner_end = $search->{$key})" if($key eq "owner" && looks_like_number($search->{$key}));
|
||||
$where .= " and (cp.$key is $search->{$key} OR cp.$key = 0)" if($key eq "int34" && $search->{$key} eq "null");
|
||||
}
|
||||
|
@ -1389,7 +1390,7 @@ sub insert_pos(){
|
|||
my $sth;
|
||||
#Verleihräder
|
||||
if($ct->{template_id} && $ct->{template_id} == 205){#Leihrad_list
|
||||
$sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt01,txt08,txt02,txt09,txt12,itime,start_time,end_time,int01,int02,int03,int06,int04,txt05,txt06,txt07,int10,int12,template_id,int13,owner,int07,txt04,int09,int17,int15,int16,int11,int18,int19,txt17,txt18,int20,int25,int29,int34,txt22,txt11,int35,int36,int37,int42,time01,time02) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}','$prefix',now(),now(),'$endRental','1','$unit_price','$menge','$station','$station','$ct->{txt06}','$ct->{txt06}','$ct->{txt07}','$status','$from_main_id','$from_template_id','$deviceId','$owner','$rabatt','$tariff_desc','$tariff_nr','$daymax_price','$abo_price','$free_hours','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','$ct->{int20}','$trackon','$bike_type_id','$staff','$sig_book->{bikeId}','$sig_book->{rentalId}','$unit_price1','$unit_price2','$start_price','$aa_station','$unit_time','$free_time') RETURNING c_id");
|
||||
$sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt01,txt08,txt02,txt09,txt12,itime,start_time,end_time,int01,int02,int03,int06,int04,txt05,txt06,txt07,int10,int12,template_id,int13,owner,int07,txt04,int09,int17,int15,int16,int11,int18,int19,txt17,txt18,int20,int25,int29,int34,txt22,txt11,int35,int36,int37,int42,time01,time02) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}','$prefix',now(),now(),'$endRental','1','$unit_price','$menge','$station','$station','$ct->{txt06}','$ct->{txt06}','$ct->{txt07}','$status','$from_main_id','$from_template_id','$deviceId','$owner','$rabatt','$tariff_desc','$tariff_nr','$daymax_price','$abo_price','$free_hours','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','1','$trackon','$bike_type_id','$staff','$sig_book->{bikeId}','$sig_book->{rentalId}','$unit_price1','$unit_price2','$start_price','$aa_station','$unit_time','$free_time') RETURNING c_id");
|
||||
}else{
|
||||
$sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt08,txt09,itime,int01,int02,int03,txt01,txt06,txt07,int10,int12,template_id,owner) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$user_name','$ctadr->{txt09}',now(),'1','$unit_price','1','$ct->{txt01}','$ct->{txt06}','$ct->{txt07}','0','$from_main_id','$from_template_id','$owner') RETURNING c_id");
|
||||
}
|
||||
|
|
|
@ -186,7 +186,7 @@ sub preauthorizationSEPA_main {
|
|||
bic => uc($ctadr->{txt23}),
|
||||
reference => "$reference"
|
||||
};
|
||||
$preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25} && $ctadr->{txt25} =~ /\d+\.\d+\.\d+\.\d+/);
|
||||
$preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25});
|
||||
my $request = { %$payone_conf, %$preauth_request};
|
||||
$payoneret = $self->rpc("preauthorizationSEPA",$varenv,$request,$ctadr,$ctt,$owner) if($request);
|
||||
}
|
||||
|
@ -321,7 +321,7 @@ sub preauthorizationCC_main {
|
|||
};
|
||||
# https://docs.payone.com/display/public/PLATFORM/Special+remarks+-+Recurring+transactions+credit+card
|
||||
# https://docs.payone.com/display/public/INT/Best+Practices+for+PSD2#tab-3DS+2.0+Best+Case
|
||||
$preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25} && $ctadr->{txt25} =~ /\d+\.\d+\.\d+\.\d+/);
|
||||
$preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25});
|
||||
my $request = { %$payone_conf, %$preauth_request};
|
||||
$payoneret = $self->rpc("preauthorizationCC",$varenv,$request,$ctadr,$ctt,$owner) if($request);
|
||||
}
|
||||
|
|
|
@ -163,36 +163,28 @@ sub tpl(){
|
|||
table => "$node_meta->{ct_table}",
|
||||
limit => $q->escapeHTML($limit),
|
||||
offset => $q->escapeHTML($offset),
|
||||
cal_sort_updown => $users_dms->{cal_sort_updown},
|
||||
};
|
||||
|
||||
if($R::base_edit !~ /transpos|save_pos/){
|
||||
$search = { %$search,
|
||||
cttpos_id => $q->escapeHTML("$R::cttpos_id"),
|
||||
txt06 => $q->escapeHTML("$R::txt06"),
|
||||
txt08 => $q->escapeHTML("$R::txt08"),
|
||||
txt23 => $q->escapeHTML("$R::txt23"),
|
||||
int04 => $q->escapeHTML("$R::int04"),
|
||||
int06 => $q->escapeHTML("$R::int06"),
|
||||
int12 => $q->escapeHTML("$R::int12"),
|
||||
int13 => $q->escapeHTML("$R::int13"),
|
||||
cp_ct_name => $q->escapeHTML("$R::cp_ct_name"),
|
||||
int10 => $q->escapeHTML("$R::int10"),
|
||||
int20 => $q->escapeHTML("$R::int20"),
|
||||
barcode => $q->escapeHTML("$R::barcode"),
|
||||
ct_txt06 => $q->escapeHTML("$R::ct_txt06"),#PLZ
|
||||
ct_ct_name => $q->escapeHTML("$R::ct_ct_name"),
|
||||
}
|
||||
}
|
||||
|
||||
$search = { %$search,
|
||||
start_date_time => "$start_date_time",
|
||||
end_date_time => "$end_date_time",
|
||||
owner => $q->escapeHTML("$R::owner"),
|
||||
} if(!$R::cttpos_id && !$R::ct_id);
|
||||
|
||||
#$search->{barcode} = $q->escapeHTML("$R::barcode") if($R::base_edit eq "save_pos" && $R::barcode);
|
||||
$search->{ct_id} = $q->escapeHTML("$R::ct_id") if($R::ct_id);#done on save_pos and insert fee
|
||||
if($R::ct_id){
|
||||
$search->{ct_id} = $q->escapeHTML("$R::ct_id");
|
||||
}else{
|
||||
$search->{start_date_time} = "$start_date_time";
|
||||
$search->{end_date_time} = "$end_date_time";
|
||||
$search->{cttpos_id} = $q->escapeHTML("$R::cttpos_id");
|
||||
$search->{txt06} = $q->escapeHTML("$R::txt06");
|
||||
$search->{txt08} = $q->escapeHTML("$R::txt08");
|
||||
$search->{txt23} = $q->escapeHTML("$R::txt23");
|
||||
$search->{int04} = $q->escapeHTML("$R::int04");
|
||||
$search->{int06} = $q->escapeHTML("$R::int06");
|
||||
$search->{int12} = $q->escapeHTML("$R::int12");
|
||||
$search->{int13} = $q->escapeHTML("$R::int13");
|
||||
$search->{cp_ct_name} = $q->escapeHTML("$R::cp_ct_name");
|
||||
$search->{int10} = $q->escapeHTML("$R::int10");
|
||||
$search->{int20} = $q->escapeHTML("$R::int20");
|
||||
$search->{barcode} = $q->escapeHTML("$R::barcode");
|
||||
$search->{ct_txt06} = $q->escapeHTML("$R::ct_txt06");#PLZ
|
||||
$search->{ct_ct_name} = $q->escapeHTML("$R::ct_ct_name");
|
||||
}
|
||||
|
||||
if(!$start_chck && !$end_chck){
|
||||
if($node_meta->{ct_table} eq "contenttranspos"){
|
||||
|
@ -247,8 +239,8 @@ sub tpl(){
|
|||
foreach(@tpl_order){
|
||||
#$h++;
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
my $valxx = $q->param("$_");
|
||||
$valxx = "" if($R::base_edit eq "save_pos" && $key ne "barcode");#empty search fields, select only bike number
|
||||
my $valxx = $q->param("$_") || "";
|
||||
#$valxx = "" if($R::base_edit eq "save_pos" && $key ne "barcode");#empty search fields, select only bike number
|
||||
|
||||
if($key =~ /time/){
|
||||
$size="10px";
|
||||
|
|
Loading…
Add table
Reference in a new issue