#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } require cfg ; print "Content-type: text/html\n\n"; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- use CGI::Carp qw(fatalsToBrowser); use DBI; use CGI; use Fcntl qw(:flock); use File::Copy; use File::Basename; use Image::Size; &today; #------------------------------------------------------------------------------------------ @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}); our $id = $ARGV[0] ; our $system_id = $ARGV[1] ; our $day_cnt = $ARGV[2] ; exit if !$id || !$system_id || !$day_cnt ; our ($q) = CGI -> new() ; $iaction = $q -> param('iaction') || $action ; our $dialog = 1 ; our $postgresql = 1 ; our $table = 'calibration_status_report' ; #------------------------------------------------------------------------------------------ # our $testing = 1 ; #------------------------------------------------------------------------------------------ if (($iaction eq '') and ($id)) { &load_uploads_list ; &screen1 ; } if ($iaction eq 'update') { &common_min_load_params ; &process_for_incident_uploads ; our $did_not_update_table = 0 ; &upload_uploads ; if ($did_not_update_table) { &load_uploads_list ; &screen1 ; } else { &screen2 ; } } if ($iaction eq 'delete') { &common_min_load_params ; &delete_uploads ; &load_uploads_list ; &screen1 ; } exit ; #------------------------------------------------------------------------------------------ sub load_uploads_list { &uploads_list ; } #---------------------------------------------------------------------------------------- sub process_for_incident_uploads { foreach (keys %i) { if (/description/) { next ; } unless ($i{$_}) { $ignore{$_} = 1 ; } if ((/iattach/) and ($i{$_})) { $ignore{$_} = 1 ; s/iattach//gi ; # $i{$_} = $i{"iattach$_"} ; my $safe_filename_characters = "a-zA-Z0-9_.-"; my $filename = $i{"iattach$_"} ; $filename =~ tr/ /_/; $filename =~ s/[^$safe_filename_characters]//g; $i{$_} = $filename ; } } $ignore{incidentuploads_length} = 1 ; $ignore{iaction} = 1 ; } #---------------------------------------------------------------------------------------- sub upload_uploads { &db_min_ro($table,"1,id,upload_names","`event_quote_id`='$id'",'','') ; my %ii = %i ; %i = () ; unless ($db{$table}{1}{id}) { $i{id} = &db_min_get_max($table,'id') ; $i{event_quote_id} = $id ; &db_min_insert($table) ; %i = () } my %ignore_attach = () ; my %seen_upload = () ; my %seen_upload_for_this_day_and_system = () ; my $upload_names_str = qq~~ ; my %upload_names = () ; foreach my $system_frames (split(/\|/,$db{$table}{1}{upload_names})) { my ($saved_system_id,$frames) = split(/\~/,$system_frames) ; my $saved_day_cnt = 0 ; foreach my $day_frames (split(/\:/,$frames)) { $saved_day_cnt++ ; my $saved_frames_cnt = 0 ; foreach my $all_frames (split(/\;/,$day_frames)) { $seen_upload{$all_frames}++ if $all_frames && $saved_system_id ne $system_id && $saved_day_cnt ne $day_cnt ; $saved_frames_cnt++ ; $upload_names{$saved_system_id}{$saved_day_cnt}{$saved_frames_cnt} = $all_frames if $all_frames ; $seen_upload_for_this_day_and_system{$all_frames}++ if $all_frames && $saved_system_id eq $system_id && $saved_day_cnt eq $day_cnt ; } } } for (1 .. 10) { $ignore_attach{$_} = 1 ; my $field = "iattachphoto_$_" ; my $processed_name = ($ii{$field}) ? &common_process_uploaded_file_names($ii{$field}) : $ii{$field} ; $seen_upload{$processed_name}++ if $processed_name ; $seen_upload_for_this_day_and_system{$processed_name}++ if $processed_name ; $upload_names{$system_id}{$day_cnt}{$_} = $processed_name if $processed_name && $seen_upload_for_this_day_and_system{$processed_name} <= 1 ; $upload_names{$system_id}{$day_cnt}{$_} = "" if $ii{$field} && $seen_upload_for_this_day_and_system{$processed_name} > 1 ; } foreach my $saved_system_id (sort {$a <=> $b} keys %upload_names) { $i{upload_names} .= qq~$saved_system_id\~~ ; my $prev_day = 0 ; foreach my $day_frames (sort {$a <=> $b} keys %{$upload_names{$saved_system_id}}) { if ($day_frames - $prev_day > 1) { for (1 .. $day_frames - $prev_day - 1) { $i{upload_names} .= qq~:~ ; } } $prev_day = $day_frames ; foreach my $frame_cnt (sort {$a <=> $b} keys %{$upload_names{$saved_system_id}{$day_frames}}) { $i{upload_names} .= qq~$upload_names{$saved_system_id}{$day_frames}{$frame_cnt};~ ; if ($upload_names{$saved_system_id}{$day_frames}{$frame_cnt} && $saved_system_id eq $system_id && $day_frames eq $day_cnt && not -f "$htmlpath/uploads/calibration_status_uploads/$id/$upload_names{$saved_system_id}{$day_frames}{$frame_cnt}") { $ignore_attach{$frame_cnt} = 0 ; } } $i{upload_names} =~ s/;+$// ; $i{upload_names} .= qq~:~ ; } $i{upload_names} =~ s/:+$// ; $i{upload_names} .= qq~|~ ; } $i{upload_names} =~ s/\|+$// ; if (($i{upload_names} eq $db{$table}{1}{upload_names}) || (!$i{upload_names} && !$db{$table}{1}{upload_names})) { %i = %ii ; $did_not_update_table = 1 ; $alert = &common_min_alert('warning',"PLEASE UPLOAD UNIQUE IMAGES FOR THIS DAY AND SYSTEM!",'ok') ; return ; } &db_min_upd($table,"`event_quote_id`='$id'") ; %i = %ii ; my %seen_attach = () ; for my $p (1 .. 10) { next if $ignore_attach{$p} ; $p = "iattachphoto_$p" ; my $val = $q->param($p) ; next if $seen_attach{$val} ; $seen_attach{$val} = 1 ; &common_upload_file($val,$p,'',"calibration_status_uploads/$id") ; } } #------------------------------------------------------------------------------------------ sub delete_uploads { unless ($i{event_quote_id}) { $error = qq(NO ID) ; return ; } &db_min_ro($table,'1,upload_names',"`event_quote_id`='$i{event_quote_id}'",'','') ; my %ii = %i ; %i = () ; my %seen_upload = () ; my %seen_upload_for_this_day_and_system = () ; my $upload_names_str = qq~~ ; my %upload_names = () ; foreach my $system_frames (split(/\|/,$db{$table}{1}{upload_names})) { my ($saved_system_id,$frames) = split(/\~/,$system_frames) ; my $saved_day_cnt = 0 ; foreach my $day_frames (split(/\:/,$frames)) { $saved_day_cnt++ ; my $saved_frames_cnt = 0 ; foreach my $all_frames (split(/\;/,$day_frames)) { $seen_upload{$all_frames}++ if $all_frames ; $saved_frames_cnt++ ; $upload_names{$saved_system_id}{$saved_day_cnt}{$saved_frames_cnt} = $all_frames if $all_frames ; } } } foreach my $saved_system_id (sort {$a <=> $b} keys %upload_names) { my $system_frames = qq~~ ; my $prev_day = 0 ; foreach my $day_frames (sort {$a <=> $b} keys %{$upload_names{$saved_system_id}}) { if ($day_frames - $prev_day > 1) { for (1 .. $day_frames - $prev_day - 1) { $system_frames .= qq~:~ ; } } $prev_day = $day_frames ; foreach my $frame_cnt (sort {$a <=> $b} keys %{$upload_names{$saved_system_id}{$day_frames}}) { if ($ii{uploadid} =~ /_$frame_cnt$/ && $saved_system_id eq $system_id && $day_frames eq $day_cnt) { my $file_path = "$htmlpath/uploads/calibration_status_uploads/$ii{event_quote_id}/$upload_names{$saved_system_id}{$day_frames}{$frame_cnt}" ; if (-f $file_path && $seen_upload{$upload_names{$saved_system_id}{$day_frames}{$frame_cnt}} == 1) { unlink ("$file_path") or die "unable to delete - $file_path : $!" ; } $system_frames.= qq~;~ ; } else { $system_frames .= qq~$upload_names{$saved_system_id}{$day_frames}{$frame_cnt};~ ; } } $system_frames =~ s/;+$// ; $system_frames .= qq~:~ ; } $system_frames =~ s/:+$// ; $i{upload_names} .= qq~$saved_system_id\~$system_frames~ if $system_frames ; $i{upload_names} .= qq~|~ ; } $i{upload_names} =~ s/\|+$// ; &db_min_upd($table,"event_quote_id='$ii{event_quote_id}'") ; %i = %ii ; # $trigger_jquery_raw .= qq~parent.location.reload();~ ; } #------------------------------------------------------------------------------------------ sub uploads_list { &db_min_ro($table,'1,upload_names',"`event_quote_id`='$id'") ; $form .= &common_min_forms_start('photo_uploads') ; my $upload_names_str = qq~~ ; foreach my $system_frames (split(/\|/,$db{$table}{1}{upload_names})) { my ($saved_system_id,$frames) = split(/\~/,$system_frames) ; next if $saved_system_id ne $system_id ; my $day_cnt_saved = 0 ; foreach my $day_frames (split(/\:/,$frames)) { $day_cnt_saved++ ; next if $day_cnt_saved ne $day_cnt ; $upload_names_str = $day_frames ; } } my @upload_names_arr = split(/\;/,$upload_names_str) ; for (1 .. 10) { $url = '' ; my $field = "photo_$_" ; my $photo_name = "$upload_names_arr[$_ - 1]" ; if ($photo_name && -f "$htmlpath/uploads/calibration_status_uploads/$id/$photo_name") { $url = qq~/uploads/calibration_status_uploads/$id/$photo_name~ ; } $tindex++ ; $link = '' ; my ($width,$height) = imgsize("$htmlpath$url"); if ($height) { $width = 100*($width/$height) ; $height = 100 ; if ($url) { $link = qq~~ ; } } my $attach_col = ($link) ? qq~$link~ : qq~~ ; my $delete_butt = ($link) ? qq~~ : qq~~ ; $tbody .= qq~ $attach_col $delete_butt ~ ; } # $form .= qq~
$tbody
Uploads  
~ ; # $extra_form_fields .= qq~~ ; $form .= &common_min_forms_end('','photo_uploads','update') ; $trigger_jquery_raw .= qq~ function deleteItem (uploadid,event_quote_id) { BootstrapDialog.confirm({ title: 'Confirm Delete', message: 'Are you sure you want to delete '+uploadid+'?', type: BootstrapDialog.TYPE_WARNING, callback: function(result) { if (result) { document.deleteform.event_quote_id.value = event_quote_id ; document.deleteform.uploadid.value = uploadid ; \$('#delete-form').submit(); // parent.location.reload(); } } }); } ~ ; # $trigger_jquery .= qq(var oTable = \$('#incidentuploads').dataTable(); oTable.fnSort( [ [1,'desc'] ] );) ; } #------------------------------------------------------------------------------------------ sub screen1 { $useropts{'common'}{'css'} .= qq(#incidentuploads .form-control { height:25px;padding:2px 5px;font-size:12px;color:#464545; }); &common_min_alert_type ; &common_min_footer('id','') ; &common_min_dialog ; print < $alert $print_top
$form
$dialog{'common'}{'js'}
ENDOFTEXT # } #------------------------------------------------------------------------------------------ sub screen2 { if (($username eq 'rory') and ($testing)) { return ; } print < Truck Assist Gateway USA ENDOFTEXT # } #------------------------------------------------------------------------------------------ use db ; use today ; use common ; 1;