mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 11:46:27 +01:00
beta App api extension with bikes-occupied on bikes-available request. Rental freed-time without rental-count restriction on TR.
This commit is contained in:
parent
60f21a4f85
commit
44d47011af
5 changed files with 85 additions and 38 deletions
|
@ -1641,7 +1641,10 @@ sub user_rentals_history(){
|
|||
my $self = shift;
|
||||
my $q = shift || "";
|
||||
my $auth = shift;
|
||||
my $daily = shift || 0;
|
||||
|
||||
my %varenv = $cf->envonline();
|
||||
my $today = strftime("%Y-%m-%d",localtime(time));
|
||||
my $record_all = {};
|
||||
|
||||
my $pref = {
|
||||
|
@ -1652,7 +1655,9 @@ sub user_rentals_history(){
|
|||
ca_id => "$auth->{c_id}",
|
||||
};
|
||||
|
||||
if(looks_like_number($q->param('month')) && $q->param('month') > 0){
|
||||
if($daily > 0){
|
||||
$pref->{start_time} = ">=::$today";
|
||||
}elsif(looks_like_number($q->param('month')) && $q->param('month') > 0){
|
||||
my $month = $q->param('month');
|
||||
$pref->{mtime} = ">=::(now() - interval '$month month')";
|
||||
}else{
|
||||
|
@ -1884,11 +1889,12 @@ sub bikes_available(){
|
|||
my $td_template = $dbt->rental_description_template($varenv_prim);
|
||||
|
||||
#return list of occupied/requested bikes
|
||||
my $rentals_record = {};
|
||||
my $rentals_response = {};
|
||||
$rentals_record = $self->user_bikes_occupied($dbh,$auth,"");
|
||||
$rentals_response = $self->rentals($varenv_prim,$rentals_record,$auth,"");#returns JSON rental values
|
||||
$rentals_response->{further_freedtime_available} = 1 if(!keys (%$rentals_response));
|
||||
my $adjust_freedtime = 0;
|
||||
my $further_freedtime_available = 1;
|
||||
my ($cttpos,$operator_hash) = $self->user_rentals_history($q,$auth,1);
|
||||
foreach my $id (sort { lc($cttpos->{$b}->{itime}) cmp lc($cttpos->{$a}->{itime}) } keys(%$cttpos)){
|
||||
$further_freedtime_available = $pri->count_freedrental("rentals by bikes_available",$varenv,$auth->{c_id},$cttpos->{$id},$adjust_freedtime);
|
||||
}
|
||||
|
||||
foreach my $id (sort { $record->{$a}->{barcode} <=> $record->{$b}->{barcode} } keys (%$record)){
|
||||
$return->{$id}->{authed} = "$authed";
|
||||
|
@ -1984,7 +1990,7 @@ sub bikes_available(){
|
|||
$tariff_content->{$tid}->{int17} =~ s/\./,/ if($lang eq "de");
|
||||
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{int17}","$tariff_content->{$tid}->{int17} € / 24 $varenv_prim->{cms}->{'unit-hour'}->{txt}"];
|
||||
}elsif($td_template->{$td}->{time02} && $tariff_content->{$tid}->{time02} =~ /[1-9]/){
|
||||
if($rentals_response->{further_freedtime_available} == 1 || !$auth->{c_id}){
|
||||
if($further_freedtime_available == 1 || !$auth->{c_id}){
|
||||
$time_unit = $dbt->time_format($varenv_prim,$tariff_content->{$tid}->{time02});
|
||||
$time_unit .= " / $varenv_prim->{cms}->{'unit-day'}->{txt}" if($dbt->{operator}->{$varenv->{dbname}}->{project} ne "Konstanz");
|
||||
$return->{$id}->{rental_description}->{tarif_elements}->{$td} = ["$td_template->{$td}->{time02}","$time_unit"];
|
||||
|
|
|
@ -505,6 +505,7 @@ elsif($q->param('request') eq "bikes_available"){
|
|||
}else{
|
||||
($aowner,my $return_merchant) = $apif->fetch_merchant($q,\%varenv,$coo,$q->param('merchant_id'));
|
||||
$varenv{merchant_id} = $return_merchant->{merchant_id};
|
||||
$response = { %$response, %$return_merchant };
|
||||
|
||||
#on operator loop select, operator adr must be select to get user_group
|
||||
my $auth = {};
|
||||
|
@ -519,12 +520,20 @@ elsif($q->param('request') eq "bikes_available"){
|
|||
}else{
|
||||
$response->{bikes} = $apif->bikes_available($q,\%varenv,\%varenv,$authraw);
|
||||
}
|
||||
|
||||
#return also bikes_occupied on bikes_available by operator request
|
||||
if(1==1 && $varenv{syshost} ne "shareeapp-primary" && $dbt->{copri_conf}->{betau_id}->{$authraw->{c_id}}){
|
||||
#return list of occupied/requested bikes
|
||||
my $record = {};
|
||||
$record = $apif->user_bikes_occupied($dbh,$authraw,"");
|
||||
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
|
||||
}
|
||||
}
|
||||
if(ref($response->{bikes}) ne "HASH"){
|
||||
$response->{response_state} = "Failure 5003: cannot find any user defined bike tariff";
|
||||
$response->{response_text} = "Abbruch, es konnte kein gültiger Tarif gefunden werden";
|
||||
}
|
||||
}
|
||||
}#end bikes_available
|
||||
|
||||
#bikes_all with service_state calculater
|
||||
#cronjob for maintenance update runs at ~ 7:00
|
||||
|
|
|
@ -835,7 +835,7 @@ sub fetch_record(){
|
|||
|
||||
#ct.* because of nd.txt01 and ct.txt01 .
|
||||
my $sql = "SELECT ct.*,rel.*,nd.node_name,nd.parent_id,nd.type_id,nd.energy_id FROM $fetch->{table} ct, relation rel, nodes nd $where $order";
|
||||
$bw->log("DBtank fetch_record : ",$sql,"") if($debug);
|
||||
#$bw->log("DBtank fetch_record : ",$sql,"") if($debug);
|
||||
my $sth = $dbh->prepare($sql);
|
||||
my $rc = $sth->execute();
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ use Mod::Prelogic;
|
|||
use Lib::Mlogic;
|
||||
use Mod::Basework;
|
||||
use Mod::DBtank;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::APIfunc;
|
||||
use Mod::Shareework;
|
||||
use Mod::Prelib;
|
||||
|
@ -43,7 +42,6 @@ sub handler {
|
|||
my $pre = new Prelogic;
|
||||
my $tk = new Shareework;
|
||||
my $dbt = new DBtank;
|
||||
my $db = new Libenzdb;
|
||||
my $apif = new APIfunc;
|
||||
my $but = new Buttons;
|
||||
my $pl = new Prelib;
|
||||
|
@ -252,8 +250,13 @@ sub handler {
|
|||
if($mode =~ /logout/){
|
||||
if($mode =~ /logout_sharee/){
|
||||
$apif->authout($q,$coo);
|
||||
}else{
|
||||
$db->cook_out($coo);
|
||||
}elsif($users_dms->{u_id}){
|
||||
my $update_users = {
|
||||
table => "users",
|
||||
change => "no_time",
|
||||
u_id => $users_dms->{u_id}
|
||||
};
|
||||
$dbt->update_one($dbh,$update_users,"cookie=''");
|
||||
}
|
||||
print redirect("$varenv{wwwhost}");
|
||||
exit 0;
|
||||
|
@ -265,7 +268,15 @@ sub handler {
|
|||
|
||||
if($R::login_sharee){
|
||||
if($users_sharee->{c_id} && (!$payable_check || ($users_sharee->{txt31} && $tpl->{tpl_order} =~ /$users_sharee->{txt31}/))){
|
||||
my $row = $db->updater("contentadr","c_id","$users_sharee->{c_id}","int12","1") if(!$payable_check);#Vde
|
||||
if(!$payable_check){
|
||||
my $update_adr = {
|
||||
table => "contentadr",
|
||||
mtime => "now()",
|
||||
owner => $aowner,
|
||||
c_id => $users_sharee->{c_id}
|
||||
};
|
||||
$dbt->update_one($dbh,$update_adr,"int12=1");
|
||||
}
|
||||
print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_1}$session");
|
||||
exit 0;
|
||||
}elsif($users_sharee->{c_id} && !$payable_check){
|
||||
|
@ -299,6 +310,12 @@ sub handler {
|
|||
|
||||
#DMS & Tools
|
||||
if($varenv{orga} eq "dms" && $users_dms->{u_id}){
|
||||
my $update_users = {
|
||||
table => "users",
|
||||
change => "no_time",
|
||||
u_id => $users_dms->{u_id}
|
||||
};
|
||||
|
||||
if($R::cal_delta_start){
|
||||
use Date::Calc qw(Add_Delta_YMD);
|
||||
my $day = strftime "%d", localtime;
|
||||
|
@ -308,21 +325,21 @@ sub handler {
|
|||
($year,$mon,$day) = split(/-/,$users_dms->{cal_start}) if($users_dms->{cal_start});
|
||||
my ($year1,$mon1,$day1) = split(/:/,$R::cal_delta_start);
|
||||
my ($Dy,$Dm,$Dd) = Add_Delta_YMD($year,$mon,$day, $year1,$mon1,$day1);
|
||||
$db->users_up("cal_start","$Dy-$Dm-$Dd",$users_dms->{u_id});
|
||||
$dbt->update_one($dbh,$update_users,"cal_start='$Dy-$Dm-$Dd'");
|
||||
}
|
||||
if($R::cal_today){
|
||||
my $today4db = strftime("%Y-%m-%d %H:%M",localtime(time));
|
||||
$db->users_up("cal_start","$today4db",$users_dms->{u_id});
|
||||
$dbt->update_one($dbh,$update_users,"cal_start='$today4db'");
|
||||
}
|
||||
if($R::cal_sort_updown){
|
||||
$db->users_up("cal_sort_updown",$R::cal_sort_updown,$users_dms->{u_id});
|
||||
$dbt->update_one($dbh,$update_users,"cal_sort_updown='$R::cal_sort_updown'");
|
||||
}
|
||||
|
||||
if($R::col_sort && $node_meta->{ct_table}){
|
||||
$db->users_up("col_sort_$node_meta->{ct_table}",$R::col_sort,$users_dms->{u_id});
|
||||
$dbt->update_one($dbh,$update_users,"col_sort_$node_meta->{ct_table}='$R::col_sort'");
|
||||
}
|
||||
if($R::sort_updown){
|
||||
$db->users_up("sort_updown_$node_meta->{ct_table}",$R::sort_updown,$users_dms->{u_id});
|
||||
$dbt->update_one($dbh,$update_users,"sort_updown_$node_meta->{ct_table}='$R::sort_updown'");
|
||||
}
|
||||
|
||||
#base_edit implements new DMS methodes without Pre* things
|
||||
|
@ -420,15 +437,20 @@ sub handler {
|
|||
#DMS Faktura
|
||||
if($node_meta->{ct_table} eq "contenttrans"){
|
||||
$bw->log("DMS action from $users_dms->{u_id} on $node_meta->{ct_table}",$q,"");
|
||||
my $update_users = {
|
||||
table => "users",
|
||||
change => "no_time",
|
||||
u_id => $users_dms->{u_id}
|
||||
};
|
||||
my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname});
|
||||
my $users_dms_primary = { u_id => 0 };
|
||||
$users_dms_primary = $dbt->select_users($dbh_primary,$users_dms->{u_id},"and int03 >= 1");
|
||||
|
||||
if($users_dms_primary->{u_id} && $users_dms_primary->{int03} >= 1 && $users_dms->{u_id} && $users_dms->{int03} >= 1 && $R::ct_trans eq "open"){#DMS Faktura read
|
||||
$db->update_users4trans($R::c_id4trans,$R::tpl_id4trans,"",$users_dms->{u_id}) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans));
|
||||
$dbt->update_one($dbh,$update_users,"c_id4trans=$R::c_id4trans,tpl_id4trans=$R::tpl_id4trans") if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans));
|
||||
}
|
||||
if($users_dms_primary->{u_id} && $users_dms_primary->{int03} == 2 && $users_dms->{u_id} && $users_dms->{int03} == 2){#DMS Faktura rw
|
||||
$db->update_users4trans($R::c_id4trans,$R::tpl_id4trans,"",$users_dms->{u_id}) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans));
|
||||
$dbt->update_one($dbh,$update_users,"c_id4trans=$R::c_id4trans,tpl_id4trans=$R::tpl_id4trans") if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans));
|
||||
if($R::ct_trans =~ /set_workflow2invoice|set_workflow2storno/){
|
||||
$return = $pl->set_workflow($q,$users_dms,$R::c_id4trans,$R::set_main_id4workflow) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans) && looks_like_number($R::set_main_id4workflow));
|
||||
}elsif($R::ct_trans =~ /set_accounting2invoice/){
|
||||
|
@ -624,6 +646,11 @@ sub handler {
|
|||
|
||||
#email and sms acknowledgments, check and save confirm states
|
||||
if($R::confirm_userid && $R::confirm_userid =~ /^\d+$/ && ($R::confirm_code && length($R::confirm_code) >= 5 || $R::confirm_smscode && length($R::confirm_smscode) >= 5)){
|
||||
my $update_adr = {
|
||||
table => "contentadr",
|
||||
mtime => "now()",
|
||||
owner => $aowner,
|
||||
};
|
||||
|
||||
#keep in mind, for now and just for testing confirm codes are just c_id
|
||||
open(FILE,">>$varenv{logdir}/confirm.log") if($debug);
|
||||
|
@ -639,25 +666,30 @@ sub handler {
|
|||
my $authref = {
|
||||
table => "contentadr",
|
||||
fetch => "one",
|
||||
template_id => "202",
|
||||
c_id => $R::confirm_userid,
|
||||
txt34 => "ilike::$confirm_code%",
|
||||
};
|
||||
my $confirmed_email = { c_id => 0 };
|
||||
$confirmed_email = $dbt->fetch_record($dbh,$authref);
|
||||
$confirmed_email = $dbt->fetch_tablerecord($dbh,$authref);
|
||||
|
||||
#($api_return,$users_sharee) = $apif->auth_verify($q,"",$R::confirm_code);
|
||||
if($confirmed_email->{c_id}){
|
||||
$db->updater("contentadr","c_id","$confirmed_email->{c_id}","int04","1");
|
||||
$update_adr->{c_id} = $confirmed_email->{c_id};
|
||||
$dbt->update_one($dbh,$update_adr,"int04=1");
|
||||
#save verified email
|
||||
$db->updater("contentadr","c_id","$confirmed_email->{c_id}","txt32","$confirmed_email->{txt08}");
|
||||
$dbt->update_one($dbh,$update_adr,"txt32='$confirmed_email->{txt08}'");
|
||||
print FILE "confirmed_email: $confirmed_email->{c_id} update because confirm_code:$confirm_code\n" if($debug);
|
||||
|
||||
#after mailAck, delete all douple adr with no mailAck
|
||||
my $ctadr = $db->collect_ct4rel3("contentadr","","","ilike","txt08","$confirmed_email->{txt08}","","","");
|
||||
my $authref = {
|
||||
table => "contentadr",
|
||||
fetch => "all",
|
||||
keyfield => "c_id",
|
||||
txt08 => "ilike::" . $q->escapeHTML($confirmed_email->{txt08}),
|
||||
};
|
||||
my $ctadr = $dbt->fetch_tablerecord($dbh,$authref);
|
||||
foreach my $aid (keys(%$ctadr)){
|
||||
if(!$ctadr->{$aid}->{int04}){
|
||||
$db->delete_content("contentadr",$ctadr->{$aid}->{c_id});
|
||||
$dbt->delete_content("contentadr",$ctadr->{$aid}->{c_id});
|
||||
print FILE "c_id $ctadr->{$aid}->{c_id} $confirmed_email->{txt08} delete because of dopplel\n" if($debug);
|
||||
}
|
||||
}
|
||||
|
@ -668,18 +700,17 @@ sub handler {
|
|||
my $authref = {
|
||||
table => "contentadr",
|
||||
fetch => "one",
|
||||
template_id => "202",
|
||||
c_id => $R::confirm_userid,
|
||||
txt34 => "ilike::%$confirm_smscode",
|
||||
};
|
||||
my $confirmed_sms = { c_id => 0 };
|
||||
$confirmed_sms = $dbt->fetch_record($dbh,$authref);
|
||||
$confirmed_sms = $dbt->fetch_tablerecord($dbh,$authref);
|
||||
|
||||
#($api_return,$users_sharee) = $apif->auth_verify($q,"",$R::confirm_smscode);
|
||||
if($confirmed_sms->{c_id}){
|
||||
$db->updater("contentadr","c_id","$confirmed_sms->{c_id}","int13","1");
|
||||
$update_adr->{c_id} = $confirmed_sms->{c_id};
|
||||
$dbt->update_one($dbh,$update_adr,"int13=1");
|
||||
#save verified telnr
|
||||
$db->updater("contentadr","c_id","$confirmed_sms->{c_id}","txt33","$confirmed_sms->{txt07}");
|
||||
$dbt->update_one($dbh,$update_adr,"txt33='$confirmed_sms->{txt07}'");
|
||||
print FILE "confirmed_sms: $confirmed_sms->{c_id} update because confirm_smscode:$confirm_smscode\n" if($debug);
|
||||
}
|
||||
}
|
||||
|
@ -687,8 +718,6 @@ sub handler {
|
|||
($api_return,$users_sharee) = $apif->auth_verify($q,"",$users_sharee->{c_id}) if($users_sharee->{c_id});
|
||||
|
||||
if($users_sharee->{int04} && $users_sharee->{int13}){
|
||||
#2023-01-17 disabled because of should only be set by pseudocardpan ajax
|
||||
#my $row = $db->updater("contentadr","c_id","$users_sharee->{c_id}","int12","0");#Vde
|
||||
$dbt->update_operatorsloop($varenv{dbname},$users_sharee->{c_id},"update");
|
||||
}else{
|
||||
my $field = "int13";
|
||||
|
|
|
@ -56,6 +56,9 @@ sub count_freedrental {
|
|||
|
||||
my $further_freedtime_available = 1;
|
||||
my $freed_count = 0;
|
||||
my $max_freed_count = 1;
|
||||
#workaround to freedtime all rentals
|
||||
$max_freed_count = 100 if($dbt->{operator}->{$varenv->{dbname}}->{oprefix} eq "TR");
|
||||
my $dbh = "";
|
||||
my $today4db = strftime("%Y-%m-%d %H:%M:%S",localtime(time));
|
||||
|
||||
|
@ -98,7 +101,7 @@ sub count_freedrental {
|
|||
$record_pos = $dbt->fetch_tablerecord($dbh,$pref_pos);
|
||||
foreach my $pid (sort { $record_pos->{$a}->{c_id} <=> $record_pos->{$b}->{c_id} } keys (%$record_pos)){
|
||||
$freed_count++;
|
||||
if($freed_count > 1 && $pos->{c_id} != $record_pos->{$pid}->{c_id}){
|
||||
if($freed_count > $max_freed_count && $pos->{c_id} != $record_pos->{$pid}->{c_id}){
|
||||
|
||||
$further_freedtime_available = 0;
|
||||
if($adjust_freedtime && $pricing->{rentalog}->{rental_minute_all} >= 5){
|
||||
|
@ -113,8 +116,8 @@ sub count_freedrental {
|
|||
}
|
||||
|
||||
}
|
||||
$further_freedtime_available = 0 if($freed_count == 1);
|
||||
print FILE "if($freed_count > 1 && $pos->{c_id} != $record_pos->{$pid}->{c_id})\nfurther_freedtime_available:$further_freedtime_available\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);
|
||||
}
|
||||
}
|
||||
close(FILE) if($debug);
|
||||
|
|
Loading…
Add table
Reference in a new issue