From 7b24b1dca8783bddfd64d9390722a7114f203714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rainer=20G=C3=BCmpelein?= Date: Mon, 7 Mar 2022 17:14:24 +0100 Subject: [PATCH] sms_message if lock_state=locking --- copri4/main/src/Mod/APIfunc.pm | 5 ++- copri4/main/src/Mod/SMSTransport.pm | 50 ++++++++++++++++++++++++++ copri4/main/src/Tpl/Calorin.pm | 2 +- copri4/main/src/scripts/sms_message.pl | 45 +++++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100755 copri4/main/src/scripts/sms_message.pl diff --git a/copri4/main/src/Mod/APIfunc.pm b/copri4/main/src/Mod/APIfunc.pm index a435f4b..c86b5ac 100755 --- a/copri4/main/src/Mod/APIfunc.pm +++ b/copri4/main/src/Mod/APIfunc.pm @@ -1257,7 +1257,10 @@ sub booking_update(){ $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); + if($booking->{int20} == 3){ + $booking_values->{lock_state} = "locking"; + system(`$varenv{basedir}/src/scripts/sms_message.pl $varenv{syshost} locking_progress $auth->{txt07} $booking->{c_id}`); + } #fetch tracking distance on Ilockit cloud by summary trip if(tracking && deviceId && available) $bw->log("Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum",$booking,"") if($booking->{int25}); diff --git a/copri4/main/src/Mod/SMSTransport.pm b/copri4/main/src/Mod/SMSTransport.pm index 6547689..bad3412 100755 --- a/copri4/main/src/Mod/SMSTransport.pm +++ b/copri4/main/src/Mod/SMSTransport.pm @@ -99,6 +99,56 @@ sub sms_ack_digest { return $ret_json; } +#used for sending message if lock_state=locking and after 45 sec no lock_state=locked +sub sms_message { + my $self = shift; + my $sms_to = shift; + my $bike = shift; + + my $sms_from = "Mietradinfo"; + my $sms_message = ""; + + #goes to test if devel or joke bsp nr + if($dbt->{copri_conf}->{stage} eq "test" || $sms_to =~ /17012345678/){ + $sms_to = "$dbt->{copri_conf}->{sms_to}"; + $sms_message = "* offline Test *"; + } + if($sms_to =~ /^0/ || $sms_to !~ /\+[1-9]/){ + my $sms_tosub = $sms_to; + $sms_tosub =~ s/^\+00/\+/; + $sms_tosub =~ s/^00/\+/; + $sms_tosub =~ s/^0/\+49/; + $sms_to = $sms_tosub; + } + $sms_message .= "Die Miete zu $bike wurde nicht beendet! Bitte überprüfe ob das Schloss wirklich geschlossen wurde. Ist ihr smartphone online?"; + my $message = Encode::encode('iso-8859-1', Encode::decode('utf-8',"$sms_message")); + + open(FILE,">>$dbt->{copri_conf}->{logdir}/sms_gtx.log"); + print FILE "\n*** $now_dt 'sharee smsclient' \n"; + + my $request = { + from => $sms_from, + to => $sms_to, + text => $message, + }; + + print FILE "---> request:\n" . Dumper($request); + + my $ret_json = $self->get_sms_gtx($request); + + eval { + $response_in = decode_json($ret_json); + print FILE "<--- response_in:\n" . Dumper($response_in); + }; + if ($@){ + print FILE "<--- failure raw response_in:\n" . Dumper($ret_json) . "\n"; + warn $@; + } + + close(FILE); + + return $ret_json; +} #sms gtx http request sub get_sms_gtx { diff --git a/copri4/main/src/Tpl/Calorin.pm b/copri4/main/src/Tpl/Calorin.pm index 6fc59c2..bdb455a 100755 --- a/copri4/main/src/Tpl/Calorin.pm +++ b/copri4/main/src/Tpl/Calorin.pm @@ -424,7 +424,7 @@ sub tpl(){ my $kunde = $q->a({-class=>"linknav3",-style=>"$ware_style",-href=>"/DMS/Kunden/?detail_search=1&s_c_id=$cttpos->{$pid}->{ca_id}",-title=>"Kunde im Kundenstamm"},"$cttpos->{$pid}->{txt08} ($cttpos->{$pid}->{ca_id})");#2021-05-24 saves kd name print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$i) $start_time – $end_time → $kunde → Start Station $start_station → End Station $end_station → Rad $bikenr $status $lock_state $track_info → $u_name $pos_id"),"\n"; - print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "→ Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"/DMS/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&kind_of_trans=Faktura\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"\#$ct_name")),"\n"; + print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "→ Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"/DMS/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&kind_of_trans=Faktura\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"\#$ct_name")),"\n" if($c_id4trans && $tpl_id4trans); print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$user_device"),"\n"; }elsif($node_meta->{ct_table} eq "contenttheftpos"){ diff --git a/copri4/main/src/scripts/sms_message.pl b/copri4/main/src/scripts/sms_message.pl new file mode 100755 index 0000000..9c7e517 --- /dev/null +++ b/copri4/main/src/scripts/sms_message.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# Copyright (c) Rainer Gümpelein, TeilRad GmbH +# +#sudo su www-data -c "./src/scripts/sms_message.pl shareeapp-operator locking_progress '0179xxxx372' $pos_id" +# +use vars qw($syshost); + +BEGIN { + $syshost = $ARGV[0] || die 'syshost not defined'; +} + +use lib "/var/www/copri-bike/$syshost/src"; + +use strict; +use warnings; +use POSIX; +use Mod::DBtank; +use Mod::SMSTransport; + +my $dbt = new DBtank; +my $smstrans = new SMSTransport; + +my $todo = $ARGV[1] || die 'todo not defined'; +my $phone = $ARGV[2] || die 'phone not defined'; +my $pos_id = $ARGV[3] || die 'no booking id available'; +my $dbh = ""; + +if($todo eq "locking_progress"){ + sleep 45; + #select booking pos if lock_state=locking still set + my $booking_pos = { + table => "contenttranspos", + fetch => "one", + c_id => "$pos_id", + }; + + my $booking = { c_id => 0 }; + $booking = $dbt->fetch_tablerecord($dbh,$booking_pos); + if($booking->{int20} == 3){ + $smstrans->sms_message($phone,$booking->{ct_name}); + } + +}