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){
|
||||
$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
|
||||
#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 $rentalId = $q->escapeHTML($response_in->{data}->{rentalId}) || "";
|
||||
|
||||
my $rows = 0;
|
||||
my $booking_values = {};
|
||||
|
||||
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"){
|
||||
$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"){
|
||||
$response->{response_state} = "OK: this request is still on development";
|
||||
elsif($response_in->{event} eq "SMARTLOCK"){
|
||||
$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){
|
||||
|
||||
my $ctpos = {};
|
||||
|
@ -160,6 +164,10 @@ sub sig_booking_update {
|
|||
int10 => "IN::('2','3')",
|
||||
#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);
|
||||
|
||||
my $distance = 0;
|
||||
|
@ -170,15 +178,21 @@ sub sig_booking_update {
|
|||
bikeId => $ctpos->{txt22},
|
||||
rentalId => $ctpos->{txt11},
|
||||
reservationId => "",
|
||||
station_lock_state => "3",#addition state in context to get state=returned for miniquery
|
||||
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 => "" };
|
||||
$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=>'state',-value=>"available");
|
||||
$q->param(-name=>'lock_state',-value=>"locked");
|
||||
$q->param(-name=>'state',-value=>"canceled") if($response_in->{event} eq "RESERVATION_END");
|
||||
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});
|
||||
|
||||
#response is for sig json after rental-end
|
||||
|
@ -188,10 +202,10 @@ sub sig_booking_update {
|
|||
delete $booking_values->{co2saving};
|
||||
delete $booking_values->{bike};
|
||||
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};
|
||||
}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{
|
||||
|
|
|
@ -280,34 +280,68 @@ sub sig_unlock {
|
|||
my $ctpos = shift || {};
|
||||
my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22};
|
||||
|
||||
my $response_in = {};
|
||||
my $dbh = "";
|
||||
my $owner = 169;
|
||||
my $sig_book = {};
|
||||
my $rows = 0;
|
||||
|
||||
open(FILE,">>$varenv->{logdir}/APIsigclient.log");
|
||||
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 $return2copri = {};
|
||||
my $rest_json = $sig_bikeId;
|
||||
(my $ret_json, my $ret_status) = $self->get_sig("$endpoint",$rest_json);
|
||||
my $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 {
|
||||
$response_in = decode_json($ret_json);
|
||||
$sig_book = decode_json($ret_json);
|
||||
$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 ($@){
|
||||
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 $@;
|
||||
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";
|
||||
close(FILE);
|
||||
|
||||
return;
|
||||
return $sig_book;
|
||||
}
|
||||
|
||||
#POST resverve, rental, ...
|
||||
|
|
Loading…
Add table
Reference in a new issue