From b9b63c63e5b19a71c0781988138ca2008fe7d139 Mon Sep 17 00:00:00 2001 From: ragu Date: Wed, 12 Jun 2024 19:32:36 +0200 Subject: [PATCH] Adding user-feedback mailing to hotline. freed-rental check on booking-request --- copri4/main/src/Mod/APIfunc.pm | 56 +++++++++++++++++++--------- copri4/main/src/Mod/APIjsonserver.pm | 4 +- copri4/main/src/Mod/MailTransport.pm | 4 +- copri4/main/src/Mod/Pricing.pm | 4 +- 4 files changed, 44 insertions(+), 24 deletions(-) diff --git a/copri4/main/src/Mod/APIfunc.pm b/copri4/main/src/Mod/APIfunc.pm index f576a6c..8edc6d7 100755 --- a/copri4/main/src/Mod/APIfunc.pm +++ b/copri4/main/src/Mod/APIfunc.pm @@ -157,7 +157,7 @@ sub select_dmsusers { } #node_select -sub template_select(){ +sub template_select { my $self = shift; my $node = shift; my $return={}; @@ -180,7 +180,7 @@ sub template_select(){ }#end node_select #Search one by key -sub service_work_search(){ +sub service_work_search { my $self = shift; my $bike = shift || ""; my $station = shift || ""; @@ -401,9 +401,10 @@ sub service_select { #service_insert -sub service_insert(){ +sub service_insert { my $self = shift; my $q = shift; + my $varenv = shift; my $auth = shift; my $node_template = shift || ""; my $crecord = shift || {}; @@ -472,7 +473,17 @@ sub service_insert(){ $insert_contentpos->{txt01} = $q->escapeHTML($q->param('message')) if($q->param('message')); my $c_id_contentpos = $dbt->insert_contentoid($dbh,$insert_contentpos,""); if($crecord_content->{fleed_email} && $crecord_content->{fleed_email} =~ /\w\@\w/){ - $mailtrans->mail_feedback2garage($crecord_content,$insert_contentpos); + $mailtrans->mail_feedback2garage($crecord_content->{fleed_email},$insert_contentpos); + }elsif($dbt->{operator}->{$varenv->{dbname}}->{project} eq "Freiburg"){ + my $hotline_hash = { + table => "contentuser", + fetch => "one", + template_id => 197, + c_id => "1", + }; + my $hotline_data = { txt08 => "" }; + $hotline_data = $dbt->fetch_record($dbh,$hotline_hash); + $mailtrans->mail_feedback2garage($hotline_data->{txt08},$insert_contentpos); } } } @@ -494,7 +505,7 @@ sub service_insert(){ }#end service_insert #service_update -sub service_update(){ +sub service_update { my $self = shift; my $q = shift; my $auth = shift; @@ -666,7 +677,7 @@ sub service_update(){ }#end service_update #bike_update for state update after servíce_work (cronjob) OR service_done -sub bikestate_update(){ +sub bikestate_update { my $self = shift; my $auth = shift; my $c_id = shift || ""; @@ -892,7 +903,7 @@ sub service_work { #bike adhock booking -sub booking_request(){ +sub booking_request { my $self = shift; my $q = shift; my $varenv = shift; @@ -1052,6 +1063,15 @@ sub booking_request(){ $response_text = "Abbruch, die Mietzeit liegt in der Vergangenheit"; } }else{ + my $adjust_freedtime = 0; + my $further_freedtime_available = 1; + my ($cttpos,$operator_hash) = $self->user_rentals_history($q,$auth,1,0); + foreach my $id (sort { lc($cttpos->{$b}->{itime}) cmp lc($cttpos->{$a}->{itime}) } keys(%$cttpos)){ + $further_freedtime_available = $pri->count_freedrental($q,$varenv,$auth->{c_id},$cttpos->{$id},$adjust_freedtime); + } + if(!$further_freedtime_available){ + $ct_tariff->{time02} = "00:00"; + } $pos_id = $dbt->insert_pos($dbh,$ctt->{c_id},$ct_bike,$ct_station,$auth,$ct_tariff,$request_para,$bike,$booking_state,$owner,$sig_book); $bw->log("booking_request insert_pos:",$pos_id,""); } @@ -1806,7 +1826,7 @@ sub service_automatic { if(!$service_id){ $crecord->{int04} = "null";#empty station - ($response->{service_id}) = $self->service_insert($q,$authraw,$node_template,$crecord); + ($response->{service_id}) = $self->service_insert($q,$varenv,$authraw,$node_template,$crecord); $bw->log("service_automatic insert ($response->{service_id}) ",$response,""); my $rows = $self->service_update($q,$authraw,$node_template,$response->{service_id}); }elsif($service_id){ @@ -1817,7 +1837,7 @@ sub service_automatic { } #user rentals_history -sub user_rentals_history(){ +sub user_rentals_history { my $self = shift; my $q = shift || ""; my $auth = shift; @@ -2004,7 +2024,7 @@ sub user_bikes_occupied { #rentals #called by user_bikes_occupied (bikes_occupied object) -sub rentals(){ +sub rentals { my $self = shift; my $varenv_prim = shift; my $record = shift; @@ -2264,7 +2284,7 @@ sub bikes_available { }#end bikes_available #bikes_all -sub bikes_all(){ +sub bikes_all { my $self = shift; my $q = shift; my $varenv = shift; @@ -2423,7 +2443,7 @@ sub stations_caching { } #stations_available -sub stations_available(){ +sub stations_available { my $self = shift; my $q = shift || ""; my $varenv = shift; @@ -2683,7 +2703,7 @@ sub stations_available(){ #stations_all (should only called by shareetool) -sub stations_all(){ +sub stations_all { my $self = shift; my $q = shift || ""; my $varenv = shift; @@ -2811,7 +2831,7 @@ sub stations_all(){ #collect all bike_ist -sub bikes_soll(){ +sub bikes_soll { my $self = shift; my $record = shift; my $bikes_on_station = shift; @@ -2839,7 +2859,7 @@ sub bikes_soll(){ #Collect Tarif to get users bike access ---------------------- -sub fetch_tariff(){ +sub fetch_tariff { my $self = shift; my $dbname = shift; my $adr = shift || {}; @@ -3076,7 +3096,7 @@ sub fetch_bike_tariff { #authout -sub authout(){ +sub authout { my $self = shift; my $q = shift; my $coo = shift || ""; @@ -3138,7 +3158,7 @@ sub authout(){ }#end authout #auth_verify -sub auth_verify(){ +sub auth_verify { my $self = shift; my $q = shift; my $coo = shift || ""; @@ -3415,7 +3435,7 @@ sub auth_verify(){ #authorization -sub authorization(){ +sub authorization { my $self = shift; my $q = shift; my $merchant_id = shift || $q->param('merchant_id') || ""; diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index 846c6bb..45d5009 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -831,7 +831,7 @@ elsif($q->param('request') eq "user_feedback" || $q->param('request') eq "user_m #if(!$back_id)#disabled because of every feedback have to be saved if(1==1){ #INSERT just dadaset - $back_id = $apif->service_insert($q,$authraw,$node_template,$crecord,$aowner); + $back_id = $apif->service_insert($q,\%varenv,$authraw,$node_template,$crecord,$aowner); $rows = $apif->service_update($q,$authraw,$node_template,$back_id); if($rows && $rows > 0){ $response->{response_state} = "OK, feedback insert and update"; @@ -893,7 +893,7 @@ elsif($q->param('request') eq "service_done"){ if(!$service_id){ #INSERT just dadaset (without work values) - ($response->{service_id}) = $apif->service_insert($q,$authraw,$node_template,$crecord); + ($response->{service_id}) = $apif->service_insert($q,\%varenv,$authraw,$node_template,$crecord); $bw->log("service insert ",$response,""); #once again to get node_record template diff --git a/copri4/main/src/Mod/MailTransport.pm b/copri4/main/src/Mod/MailTransport.pm index 0b7e2a6..86f9420 100755 --- a/copri4/main/src/Mod/MailTransport.pm +++ b/copri4/main/src/Mod/MailTransport.pm @@ -307,11 +307,11 @@ sub mail_hours_occupied { #we use just db-selector hashes sub mail_feedback2garage { my $self = shift; - my $crecord_content = shift; + my $mail_to = shift; my $contentpos = shift; my $sendref = $self->sendrefhash(); - $sendref->{mail_to} = $crecord_content->{fleed_email}; + $sendref->{mail_to} = $mail_to; $sendref->{subject} = "sharee.bike App Meldung"; $sendref->{message} = "Es ist folgende sharee.bike App Nachricht zu Mietrad $contentpos->{ct_name} an Station $contentpos->{int04} eingegangen:\n\n$contentpos->{txt01}\n\nFreundliche Grüße,\nIhr sharee.bike Mietradsystem"; $sendref->{message} =~ s/\n/\
/g;#TOD prepare_content diff --git a/copri4/main/src/Mod/Pricing.pm b/copri4/main/src/Mod/Pricing.pm index 1cbff8e..4e5851f 100755 --- a/copri4/main/src/Mod/Pricing.pm +++ b/copri4/main/src/Mod/Pricing.pm @@ -71,7 +71,7 @@ sub count_freedrental { open(FILE,">>$varenv->{logdir}/count_freedrental.log") if($debug); print FILE "\n*-->$today4db $varenv->{dbname}\n" if($debug); print FILE Dumper($q) if($debug); - print FILE "--> pos.c_id:$pos->{c_id}, ca_id:$ca_id=pos.ca_id:$pos->{ca_id}, bike:$pos->{ct_name} rental_minute_all: $pricing->{rentalog}->{rental_minute_all} >= 5\n" if($debug); + print FILE "--> LASTitime pos.c_id:$pos->{c_id}, ca_id:$ca_id=pos.ca_id:$pos->{ca_id}, bike:$pos->{ct_name} rental_minute_all: $pricing->{rentalog}->{rental_minute_all} >= 5\n" if($debug); #2023-10-10 changed from 0min to rental_minute_all >= 5min to keep freed time on rentals >=5min #freed mangement will be only dony on accountable rental @@ -121,7 +121,7 @@ sub count_freedrental { print FILE "--> NO freed_count if($freed_count > $max_freed_count && $pos->{c_id} != $record_pos->{$pid}->{c_id})\n" if($debug); } $further_freedtime_available = 0 if($freed_count >= $max_freed_count); - print FILE "if($freed_count >= $max_freed_count && $pos->{c_id} != $record_pos->{$pid}->{c_id})\nfurther_freedtime_available:$further_freedtime_available\n" if($debug); + print FILE "if($freed_count >= $max_freed_count && $pos->{c_id} != $record_pos->{$pid}->{c_id})\nadjust_freedtime:$adjust_freedtime\nfurther_freedtime_available:$further_freedtime_available\n" if($debug); } } close(FILE) if($debug);