166 lines
5.0 KiB
Perl
166 lines
5.0 KiB
Perl
#!/usr/bin/perl
|
|
|
|
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
|
|
|
|
print "Content-type: text/html\n\n";
|
|
|
|
use CGI::Carp qw(fatalsToBrowser);
|
|
use Fcntl qw(:flock);
|
|
use JSON::Repair ':all' ;
|
|
use Time::Piece ;
|
|
|
|
require cfg ;
|
|
|
|
#------------------------------------------------------------------------------------------
|
|
|
|
@ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'});
|
|
|
|
foreach $ARG (@ARGV) { ($par,$val) = split(/\=/,$ARG) ; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $param{$par} = $val ; }
|
|
|
|
# our $debug = 1 ;
|
|
|
|
# my $json_type = $param{json_type} ;
|
|
|
|
# e.g. https://itvadmin.co.za/cgi-bin/scripts/get/get_event_quote_conflicts.pl?
|
|
# our $debug = 1 ;
|
|
|
|
#------------------------------------------------------------------------------------------
|
|
|
|
&load_json ;
|
|
|
|
print $json ;
|
|
|
|
exit ;
|
|
|
|
#------------------------------------------------------------------------------------------
|
|
|
|
sub load_json {
|
|
|
|
&db_min_ro('event_systems','id,name,description','','','') if $param{system_ids} ;
|
|
# if $param{table} eq 'event_systems' ;
|
|
|
|
&db_min_ro('users','id,name',"`user_type` LIKE 'casual%'",'','') if $param{op_ids} ;
|
|
# if $param{table} eq 'users' ;
|
|
|
|
our $table = 'event_quotes' ; my @sys_ids = () ;
|
|
|
|
# foreach (split(";",$param{system_ids})) {
|
|
# next unless $_ ;
|
|
# push @sys_ids,"`event_system_id_multiple` LIKE '%;$_;%' OR `event_system_id_multiple` LIKE '$_;%' OR `event_system_id_multiple` LIKE '%;$_'"
|
|
# }
|
|
|
|
# my $sys_ids_sql = join (" OR ", @sys_ids) ;
|
|
|
|
# $sys_ids_sql = qq~($sys_ids_sql) AND ~ if $sys_ids_sql ;
|
|
|
|
# $sys_ids_sql .= qq~`id` != '$param{quote_id}'~ ;
|
|
# $sys_ids_sql .= qq~`id` != ''~ ;
|
|
|
|
# my $sys_ids_sql = qq~`date_to` < '$param{date_from}' OR `date_from` > '$param{date_to}'~ ;
|
|
|
|
&db_min_ro($table,'id,ref,date_from,date_to,event_system_id_multiple,operator_ids',"
|
|
(`date_from` <= '$param{date_to}' AND '$param{date_to}' <= `date_to`) OR
|
|
(`date_from` <= '$param{date_from}' AND '$param{date_from}' <= `date_to`) OR
|
|
(`date_from` >= '$param{date_from}' AND '$param{date_to}' >= `date_to`) OR
|
|
(`date_from` <= '$param{date_from}' AND '$param{date_to}' <= `date_to`)
|
|
",'','') ;
|
|
|
|
|
|
# foreach my $id (keys %{$db{$table}}) {
|
|
|
|
# }
|
|
|
|
$json = '[' ;
|
|
|
|
# our %overlap_dates = () ;
|
|
our %seen_this = () ; my %json_by_id = () ;
|
|
|
|
if ($param{system_ids}) {
|
|
|
|
foreach my $id (sort keys %{$db{$table}}) {
|
|
|
|
next if $id eq $param{quote_id} ;
|
|
|
|
foreach my $sys_id_input (split(/;/,$param{system_ids})) {
|
|
|
|
next unless $sys_id_input ;
|
|
|
|
foreach my $sys_id_in_table (split(/;/,$db{$table}{$id}{event_system_id_multiple})) {
|
|
|
|
next unless $sys_id_in_table ;
|
|
|
|
if ($sys_id_input eq $sys_id_in_table) {
|
|
|
|
next if $seen_this{$sys_id_input} ;
|
|
$seen_this{$sys_id_input} = 1 ;
|
|
my $system_name = qq~$db{event_systems}{$sys_id_input}{name}~ ;
|
|
$system_name .= qq~ ($db{event_systems}{$sys_id_input}{description})~ if $db{event_systems}{$sys_id_input}{description} ;
|
|
next unless $system_name ;
|
|
# my $date_interval = &common_write_date_interval($db{$table}{$id}{date_from},$db{$table}{$id}{date_to}) ;
|
|
|
|
$json .= qq~{"user":"","system":"$system_name","event":"$db{$table}{$id}{ref}","interval":"$db{$table}{$id}{date_from} to $db{$table}{$id}{date_to}"},~ ;
|
|
# $json_by_id{$id} .= qq~$json~ ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
%seen_this = () ;
|
|
|
|
if ($param{op_ids}) {
|
|
|
|
foreach my $id (sort keys %{$db{$table}}) {
|
|
|
|
next if $id eq $param{quote_id} ;
|
|
|
|
foreach my $op_id_input (split(/,/,$param{op_ids})) {
|
|
|
|
next unless $op_id_input ;
|
|
|
|
foreach my $op_id_in_table (split(/,/,$db{$table}{$id}{operator_ids})) {
|
|
|
|
next unless $op_id_in_table ;
|
|
|
|
if ($op_id_in_table eq $op_id_input) {
|
|
|
|
next if $seen_this{$op_id_input} ;
|
|
$seen_this{$op_id_input} = 1 ;
|
|
my $op_name = qq~$db{users}{$op_id_in_table}{name}~ ;
|
|
next unless $op_name ;
|
|
# my $date_interval = &common_write_date_interval($db{$table}{$id}{date_from},$db{$table}{$id}{date_to}) ;
|
|
|
|
$json .= qq~{"user":"$op_name","system":"","event":"$db{$table}{$id}{ref}","interval":"$db{$table}{$id}{date_from} to $db{$table}{$id}{date_to}"},~ ;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# &calibration_check_for_overlapping_dates('event_systems',"event_system_id_multiple",$param{date_from},$param{date_to},$param{system_ids},1) ;
|
|
|
|
# $json = '[' ;
|
|
|
|
# foreach my $sys_id (sort keys %overlap_dates) {
|
|
|
|
# my $system_name = $db{event_systems}{$sys_id}{name} ;
|
|
# $system_name .= qq~ ($db{event_systems}{$sys_id}{description})~ if $db{event_systems}{$sys_id}{description} ;
|
|
# foreach my $event_id (keys %{$overlap_dates{$sys_id}}) {
|
|
# $json .= qq~{"system":"$system_name","event":"$db{$table}{$event_id}{ref}","interval":"$overlap_dates{$sys_id}{$event_id}"},~ ;
|
|
# }
|
|
# }
|
|
|
|
if ($json =~ /\,/) { $json = substr($json,0,-1) ; }
|
|
|
|
$json =~ s/\\//g ;
|
|
$json .= ']' ;
|
|
|
|
} #------------------------------------------------------------------------------------------
|
|
|
|
use db ;
|
|
use common ;
|
|
# use calibration ;
|
|
|
|
1; |