sig rental without reservation fix

This commit is contained in:
ragu 2022-06-22 21:46:00 +02:00
parent fa6181eaa4
commit 0d034bf73b
3 changed files with 11 additions and 6 deletions

View file

@ -1150,6 +1150,7 @@ sub booking_update(){
$update_pos->{int10} = "$state_key";
$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);
if($rows > 0){

View file

@ -262,11 +262,9 @@ elsif($q->param('request') eq "booking_request"){
if($ct_bike->{barcode} && $ct_tariff->{barcode}){
#sig reservation. not mandatory, disabled because sig seems to get confused
if(1==2 && $ct_bike->{int11} == 3){
if((!$q->param('state') || $q->param('state') ne "occupied") && $ct_bike->{int11} == 3){
$sig_book = $si->sig_booking(\%varenv,"reserve",$authraw,$ct_bike,"");
$sig_book->{bikeId} = "$ct_bike->{txt22}";
#we only need rentalId because of reserve/end uses rentalId
#$sig_book->{reservationId} = "$R::reservationId" if($R::reservationId);#only for cmd tests
$sig_book->{rentalId} = "$R::rentalId" if($R::rentalId);#only for cmd tests
}
$response_book = $apif->booking_request($q,\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$sig_book);
@ -297,6 +295,7 @@ elsif($q->param('request') eq "booking_request"){
#$sig_book = $si->sig_booking(\%varenv,"rental",$authraw,$ct_bike,$ctpos);
#we have to use $ct_bike->{txt22} because we doesn't using sig reserve in this case
system("$varenv{basedir}/src/scripts/sig_client.pl '$varenv{syshost}' 'rental' '$authraw->{c_id}' '$ct_bike->{txt22}' '$ctpos->{c_id}' &");
$sig_book->{bikeId} = "$ct_bike->{txt22}";
$sig_book->{rentalId} = "$R::rentalId" if($R::rentalId);#only for cmd tests
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book);
$response = {%$response, %$booking_values};

View file

@ -90,7 +90,8 @@ sub handler {
#sig booking_update
sig_booking_update($q,\%varenv,$response,$aowner);# sig json post
my $response_out = {};
$response_out = sig_booking_update($q,\%varenv,$response,$aowner);# sig json post
#sig json api
sub sig_booking_update {
@ -127,6 +128,7 @@ sub sig_booking_update {
$POSTDATA = encode_json(\%POSTDATA_hash);
print FILE "<=== DUMP POSTDATA_hash:\n " . Dumper(\%POSTDATA_hash) . "\n" if($debug);
}
eval {
my $response_in = {};
$response_in = decode_json($POSTDATA) if($POSTDATA);
@ -139,6 +141,8 @@ sub sig_booking_update {
my $rows = 0;
my $booking_values = {};
print FILE "event: $response_in->{event}\n" if($debug);
if($response_in->{event} eq "RENTAL_START"){
$response->{response_state} = "OK: methode not implemented, because rental will started by App";
}
@ -184,6 +188,7 @@ 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, %$booking_values};
}else{
$response->{response_state} = "Failure: there is no rental with rentalID=$rentalId";
@ -203,13 +208,13 @@ sub sig_booking_update {
print FILE "warn:" . $@ . "\n" if($debug);
$response->{response_state} = "Failure: can not decode POST json";
}
return $response;
}#end sig json booking_update
#end RESTful ------------------------------------------------------------
#FINAL JSON response OUTPUT ----------------------------------------------------------
my $jrout = $json->pretty->encode({shareeio => $response});
my $jrout = $json->pretty->encode({shareeio => $response_out});
print $jrout;
print FILE "APIshareeio jrout:\n" . Dumper($jrout) . "\n" if($debug);