mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 19:56:29 +01:00
sig smartlock and reservation_end
This commit is contained in:
parent
0d034bf73b
commit
7d3c293f91
3 changed files with 66 additions and 18 deletions
|
@ -2446,7 +2446,7 @@ sub auth_verify(){
|
||||||
|
|
||||||
if($auth_primary->{c_id} && $auth_primary->{c_id} > 0){
|
if($auth_primary->{c_id} && $auth_primary->{c_id} > 0){
|
||||||
$bw->log("auth_verified on primary anchor 2 by dbname $varenv{dbname}",$auth_primary->{c_id},"");
|
$bw->log("auth_verified on primary anchor 2 by dbname $varenv{dbname}",$auth_primary->{c_id},"");
|
||||||
print FILE "auth_verified on primary anchor 2 by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n if($debug)";
|
print FILE "auth_verified on primary anchor 2 by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n" if($debug);
|
||||||
|
|
||||||
#On booking_request, user must be authenticated and addr must exist
|
#On booking_request, user must be authenticated and addr must exist
|
||||||
#At first insert/update Operator dbname array on primary
|
#At first insert/update Operator dbname array on primary
|
||||||
|
|
|
@ -138,18 +138,22 @@ sub sig_booking_update {
|
||||||
|
|
||||||
my $bikeId = $q->escapeHTML($response_in->{data}->{bikeId}) || "";#on push, bikeId is bike_id
|
my $bikeId = $q->escapeHTML($response_in->{data}->{bikeId}) || "";#on push, bikeId is bike_id
|
||||||
my $rentalId = $q->escapeHTML($response_in->{data}->{rentalId}) || "";
|
my $rentalId = $q->escapeHTML($response_in->{data}->{rentalId}) || "";
|
||||||
|
|
||||||
my $rows = 0;
|
my $rows = 0;
|
||||||
my $booking_values = {};
|
my $booking_values = {};
|
||||||
|
|
||||||
print FILE "event: $response_in->{event}\n" if($debug);
|
print FILE "event: $response_in->{event}\n" if($debug);
|
||||||
|
|
||||||
|
if($response_in->{event} eq "BIKE_STATUS" || $response_in->{event} eq "BATTERY_CAPACITY"){
|
||||||
|
$response->{response_state} = "OK: $response_in->{event} methode not implemented, because we will get it just-in-time on requesting sig GET bikes";
|
||||||
|
}
|
||||||
if($response_in->{event} eq "RENTAL_START"){
|
if($response_in->{event} eq "RENTAL_START"){
|
||||||
$response->{response_state} = "OK: methode not implemented, because rental will started by App";
|
$response->{response_state} = "OK: methode not implemented, because rental will be started by App and success returned by sig-connector";
|
||||||
}
|
}
|
||||||
elsif($response_in->{event} eq "RESERVATION_END"){
|
elsif($response_in->{event} eq "SMARTLOCK"){
|
||||||
$response->{response_state} = "OK: this request is still on development";
|
$response->{response_state} = "OK: methode not implemented, because unlocking will be started by App and success returned by sig-connector";
|
||||||
}
|
}
|
||||||
elsif($response_in->{event} eq "RENTAL_END"){
|
elsif($response_in->{event} eq "RENTAL_END" || $response_in->{event} eq "RESERVATION_END"){
|
||||||
if($rentalId){
|
if($rentalId){
|
||||||
|
|
||||||
my $ctpos = {};
|
my $ctpos = {};
|
||||||
|
@ -160,6 +164,10 @@ sub sig_booking_update {
|
||||||
int10 => "IN::('2','3')",
|
int10 => "IN::('2','3')",
|
||||||
#ca_id => "$authraw->{c_id}",#sig doesn't know uid
|
#ca_id => "$authraw->{c_id}",#sig doesn't know uid
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#only reserved alias requested rentals can be canceled
|
||||||
|
$booking_pos->{int10} = 2 if($response_in->{event} eq "RESERVATION_END");
|
||||||
|
|
||||||
$ctpos = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
$ctpos = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||||
|
|
||||||
my $distance = 0;
|
my $distance = 0;
|
||||||
|
@ -170,15 +178,21 @@ sub sig_booking_update {
|
||||||
bikeId => $ctpos->{txt22},
|
bikeId => $ctpos->{txt22},
|
||||||
rentalId => $ctpos->{txt11},
|
rentalId => $ctpos->{txt11},
|
||||||
reservationId => "",
|
reservationId => "",
|
||||||
station_lock_state => "3",#addition state in context to get state=returned for miniquery
|
|
||||||
distance => $distance,
|
distance => $distance,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#addition state in context to get state=returned for miniquery
|
||||||
|
$sig_book->{station_lock_state} = "3" if($response_in->{event} eq "RENTAL_END");
|
||||||
|
|
||||||
my $authraw = { c_id => "" };
|
my $authraw = { c_id => "" };
|
||||||
$authraw->{c_id} = $ctpos->{ca_id} if($ctpos->{ca_id});
|
$authraw->{c_id} = $ctpos->{ca_id} if($ctpos->{ca_id});
|
||||||
$q->param(-name=>'bike',-value=>"$ctpos->{ct_name}") if($ctpos->{ct_name});
|
$q->param(-name=>'bike',-value=>"$ctpos->{ct_name}") if($ctpos->{ct_name});
|
||||||
$q->param(-name=>'state',-value=>"available");
|
$q->param(-name=>'state',-value=>"canceled") if($response_in->{event} eq "RESERVATION_END");
|
||||||
$q->param(-name=>'lock_state',-value=>"locked");
|
if($response_in->{event} eq "RENTAL_END"){
|
||||||
|
$q->param(-name=>'state',-value=>"available");
|
||||||
|
$q->param(-name=>'lock_state',-value=>"locked");
|
||||||
|
}
|
||||||
|
|
||||||
($rows, $booking_values) = $apif->booking_update($q,$varenv,$authraw,$aowner,$sig_book) if($authraw->{c_id});
|
($rows, $booking_values) = $apif->booking_update($q,$varenv,$authraw,$aowner,$sig_book) if($authraw->{c_id});
|
||||||
|
|
||||||
#response is for sig json after rental-end
|
#response is for sig json after rental-end
|
||||||
|
@ -188,10 +202,10 @@ sub sig_booking_update {
|
||||||
delete $booking_values->{co2saving};
|
delete $booking_values->{co2saving};
|
||||||
delete $booking_values->{bike};
|
delete $booking_values->{bike};
|
||||||
delete $booking_values->{response_text};
|
delete $booking_values->{response_text};
|
||||||
$response->{response_state} = "OK: event matched, but something seems going wrong on booking_update" if(!$booking_values->{response_state});
|
$response->{response_state} = "OK: event matched, but something seems to goes wrong on booking_update" if(!$booking_values->{response_state});
|
||||||
$response = {%$response, %$booking_values};
|
$response = {%$response, %$booking_values};
|
||||||
}else{
|
}else{
|
||||||
$response->{response_state} = "Failure: there is no rental with rentalID=$rentalId";
|
$response->{response_state} = "Failure: $response_in->{event} : there is no reservation OR rental with rentalID=$rentalId";
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
|
@ -280,34 +280,68 @@ sub sig_unlock {
|
||||||
my $ctpos = shift || {};
|
my $ctpos = shift || {};
|
||||||
my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22};
|
my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22};
|
||||||
|
|
||||||
my $response_in = {};
|
|
||||||
my $dbh = "";
|
my $dbh = "";
|
||||||
my $owner = 169;
|
my $owner = 169;
|
||||||
|
my $sig_book = {};
|
||||||
|
my $rows = 0;
|
||||||
|
|
||||||
open(FILE,">>$varenv->{logdir}/APIsigclient.log");
|
open(FILE,">>$varenv->{logdir}/APIsigclient.log");
|
||||||
print FILE "\n3. *** $now_dt 'sig_unlock' \n";
|
print FILE "\n3. *** $now_dt 'sig_unlock' \n";
|
||||||
|
|
||||||
my $endpoint = "$dbt->{operator}->{$varenv->{dbname}}->{endpoint}/bikes/unlock";
|
my $endpoint = "$dbt->{operator}->{$varenv->{dbname}}->{endpoint}/bikes/unlock/$sig_bikeId";
|
||||||
my $response_out = {};
|
my $response_out = {};
|
||||||
my $return2copri = {};
|
my $return2copri = {};
|
||||||
my $rest_json = $sig_bikeId;
|
my $rest_json = "";
|
||||||
(my $ret_json, my $ret_status) = $self->get_sig("$endpoint",$rest_json);
|
my $ret_json = "failure: ret_json";
|
||||||
|
my $ret_status = "failure: ret_status";
|
||||||
|
($ret_json, $ret_status) = $self->get_sig("$endpoint",$rest_json);
|
||||||
eval {
|
eval {
|
||||||
$response_in = decode_json($ret_json);
|
$sig_book = decode_json($ret_json);
|
||||||
$now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
$now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
||||||
print FILE "<--- $now_dt sig_unlock response_in with status_line: $ret_status:\n";
|
print FILE "<--- $now_dt sig_unlock sig_book json with status_line: $ret_status:\n" . Dumper($sig_book) . "\n";
|
||||||
|
|
||||||
};
|
};
|
||||||
if ($@){
|
if ($@){
|
||||||
print FILE "<--- failure sig_unlock raw response_in with status_line: $ret_status\n" . Dumper($ret_json) . "\n";
|
print FILE "<--- $now_dt failure sig_unlock raw ret_json with status_line: $ret_status\n" . Dumper($ret_json) . "\n";
|
||||||
#warn $@;
|
#warn $@;
|
||||||
print FILE "warn:" . $@ . "\n";
|
print FILE "warn:" . $@ . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#save always API return state for documentation
|
||||||
|
$sig_book->{return_state} = "$now_dt $todo: $ret_status";
|
||||||
|
|
||||||
|
if($ctpos->{c_id}){
|
||||||
|
my $rows = 0;
|
||||||
|
my $update_pos = {
|
||||||
|
table => "contenttranspos",
|
||||||
|
mtime => "now()",
|
||||||
|
owner => "169",
|
||||||
|
txt25 => "$ctpos->{txt25}\n$sig_book->{return_state}",
|
||||||
|
};
|
||||||
|
my $update_content = {
|
||||||
|
table => "content",
|
||||||
|
mtime => "now()",
|
||||||
|
owner => "169",
|
||||||
|
c_id => $ctpos->{cc_id},
|
||||||
|
};
|
||||||
|
|
||||||
|
$update_pos->{int20} = 2 if($ret_json eq "Bike unlocked");
|
||||||
|
$update_content->{int20} = 2 if($ret_json eq "Bike unlocked");
|
||||||
|
|
||||||
|
$rows = $dbt->update_record($dbh,$update_pos,$ctpos);
|
||||||
|
print FILE "<--- rows: $rows, update_pos: $ctpos->{c_id}, with:" . Dumper($update_pos) . "\n";
|
||||||
|
|
||||||
|
if($ctpos->{cc_id} && $ret_json eq "Bike unlocked"){
|
||||||
|
$rows = $dbt->update_record($dbh,$update_content,$update_content);
|
||||||
|
print FILE "<--- rows: $rows, update_content: $ctpos->{cc_id}, with:" . Dumper($update_content) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
print FILE "sig_unlock ret_json from response_in\n" . Dumper($ret_json) . "\n";
|
print FILE "sig_unlock ret_json from response_in\n" . Dumper($ret_json) . "\n";
|
||||||
close(FILE);
|
close(FILE);
|
||||||
|
|
||||||
return;
|
return $sig_book;
|
||||||
}
|
}
|
||||||
|
|
||||||
#POST resverve, rental, ...
|
#POST resverve, rental, ...
|
||||||
|
|
Loading…
Add table
Reference in a new issue