#!/usr/local/bin/perl 
#
# MODULE: hd-open.pl 
# AUTHOR: Ron Shalhoup (ron@captech.com)
# PURPOSE: Generate and/or process form for viewing, closing,
#          re-assigning, or appending comments to open CallTracks.
#

require "./hd-lib.pl";

MAIN:
{
    # The CGI data
    &ReadParse(%in);

    $comment = "";
    $date = &GetDate;

    # If a CallTrack was selected, then we know to process form.
    if (defined($in{'ASSIGNED'})) {
        &process_assigned_form;
    } else {
        # If form was submitted without selecting a CallTrack, gather any
        # other data that may have been inputted so user won't need to 
        # retype it.
        if (defined($in{'COMMENTS'})) {
            $comment = $in{'COMMENTS'};
        }
    }

    # Generate HTML-code for form.
    print &PrintHeader;
    &Generate_HTML_Header("open");
    print "<H2>Assigned CallTracks:</H2>\n";
    print "Show Queue For:  ";
    &Generate_Engineer_PickList("ASSIGNEE", 1);
    print "<P>";
    &Generate_Assigned_CallTrack_Table;
    print "<INPUT TYPE=SUBMIT VALUE='DISPLAY QUEUE'><P>\n";
    &Generate_Comments_TextArea(15);  
    &Generate_Action_RadioButtons;
    print "<P><INPUT TYPE=SUBMIT VALUE=SUBMIT>";
    &Generate_HTML_Footer;
}

sub process_assigned_form {

    $fname = $in{'ASSIGNED'};

    # Process form according to action selected.
    if ($in{'ACTION'} eq "CLOSE") {
        if (-e "$DATADIR/$fname") {
            ($subject,$user,$id,$assigned_date,$assigned) = split(/\./, $fname);
            $submitter = $user;
            $submitter =~ s/__/./g;
            open(INFILE, "<$DATADIR/$fname") || 
                die "Unable to open $DATADIR/$fname\n";
            while(<INFILE>) {
                if (/^<[^\/]/) {
                    $header = $header . $_;
                } elsif (/^<[\/]/) {
                    $footer = $footer . $_;
                } elsif (/^Status:/) {
                    $message = $message . "Status:         CLOSED\n";
                } elsif (/^Assigned To:/) {
                    $message = $message . $_;
                    $message = $message . "Date Closed:    $date\n";
                    $message = $message . "Closed By:      $in{'CLOSER'}\n";
                } elsif (/^CC:\b/) {
                    /^CC:\b(.*)/;
                    $cclist = $1;
                    $message = $message . $_;
                } else {
                    $message = $message . $_;
                }
            }
            if (defined($in{'COMMENTS'})) {
                $message = $message . 
                      "\n--$date-----------------------------------------\n";
                $message = $message . "\nComments/Resolution:\n";
                $message = $message . "$in{'COMMENTS'}";
            }
            close(INFILE);

            # Generate new file by adding closing engineer to filename.
            $new_ctfile =            
                        "$DATADIR/$subject.$user.$id.$date.$assigned.$in{'CLOSER'}.html";
            open(CTFILE, ">$new_ctfile");
            if (defined $in{'CCLIST'}) {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' -c $in{'CCLIST'}
                              $submitter $in{'ENGINEER'}");
            } else {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' $submitter \
                     $in{'ENGINEER'}");
            }
            print CTFILE $header;
            print CTFILE $message;
            print CTFILE $footer;
            print MAILER $message;
            close(CTFILE);
            close(MAILER);
            # Remove previous version of CallTrack
            unlink("$DATADIR/$fname");
        }
    } elsif ($in{'ACTION'} eq "APPEND") {
        if (-e "$DATADIR/$fname") {
            ($subject,$user,$id,$assigned_date,$assigned) = split(/\./, $fname);
            $submitter = $user;
            $submitter =~ s/__/./g;
            open(INFILE, "<$DATADIR/$fname") || 
                die "Unable to open $DATADIR/$fname\n";
            while(<INFILE>) {
                if (/^<[^\/]/) {
                    $header = $header . $_;
                } elsif (/^<[\/]/) {
                    $footer = $footer . $_;
                } elsif (/^CC:\b/) {
                    /^CC:\b(.*)/;
                    $cclist = $1;
                    $message = $message . $_;
                } else {
                    $message = $message . $_;
                }
            }
            # Add new comments to message.
            if (defined($in{'COMMENTS'})) {
                $message = $message . 
                      "\n--$date-----------------------------------------\n";
                $message = $message . "\nComments/Resolution:\n";
                $message = $message . "$in{'COMMENTS'}";
            }
            close(INFILE);
            open(CTFILE, ">$DATADIR/$fname");
            # Notify all interested parties via e-mail.
            if (defined $in{'CCLIST'}) {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' -c $in{'CCLIST'}
                             $submitter $in{'ENGINEER'}");
            } else {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' $submitter \
                     $in{'ENGINEER'}");
            }
            print CTFILE $header;
            print CTFILE $message;
            print CTFILE $footer;
            print MAILER $message;
            close(CTFILE);
            close(MAILER);
        }
    } elsif ($in{'ACTION'} eq "REASSIGN") {
        if (-e "$DATADIR/$fname") {
            ($subject,$user,$id,$assigned_date,$assigned) = split(/\./, $fname);
            $submitter = $user;
            $submitter =~ s/__/./g;
            open(INFILE, "<$DATADIR/$fname") || 
                die "Unable to open $DATADIR/$fname\n";
            while(<INFILE>) {
                if (/^<[^\/]/) {
                    $header = $header . $_;
                } elsif (/^<[\/]/) {
                    $footer = $footer . $_;
                } elsif (/^Assigned To:/) {
                    $message = $message . $_;
                    $message = $message . "Date Reassigned:  $date\n";
                    $message = $message . "Reassigned To:    \
                                           $in{'ENGINEER'}\n";
                } elsif (/^CC:\b/) {
                    /^CC:\b(.*)/;
                    $cclist = $1;
                    $message = $message . $_;
                } else {
                    $message = $message . $_;
                }
            }
            if (defined($in{'COMMENTS'})) {
                $message = $message . 
                 "\n--$date----------------------------------------------\n";
                $message = $message . 
                           "\nComments/Resolution:\n" .  
                           $in{'COMMENTS'};
            }
            close(INFILE);
            $new_ctfile = \
              "$DATADIR/$subject.$user.$id.$date.$in{'ENGINEER'}.html";
            open(CTFILE, ">$new_ctfile");
            if (defined $in{'CCLIST'}) {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' -c $in{'CCLIST'} 
                              $submitter $in{'ENGINEER'}");
            } else {
                open(MAILER, "|$MAILER -s 'CT#$id $subject' \
                     $submitter $in{'ENGINEER'}");
            }
            print CTFILE $header;
            print CTFILE $message;
            print CTFILE $footer;
            print MAILER $message;
            close(CTFILE);
            close(MAILER);
            unlink("$DATADIR/$fname");
        }
    }
}

sub Generate_Assigned_CallTrack_Table {
    print "<TABLE BORDER=4 CELLPADDING=4>\n";
    print "<TH ALIGN=CENTER COLSPAN=5> Queue for login id:  $engineer";
    
    print "<TR><TH ALIGN=LEFT>CT ID#<TH ALIGN=CENTER>Description
           <TH ALIGN=CENTER>Submitted By<TH ALIGN=CENTER>Assigned To
           <TH ALIGN=CENTER>Date Assigned\n";
    @filelist = `/bin/ls $DATADIR`;
    foreach $i (@filelist) {
        chop($i);
        ($subject,$user,$id,$date,$assigned,$closed) = split(/\./, $i);
        if($engineer ne "ALL") {
            if ((! defined $assigned) || 
                ((defined $closed) && ($closed ne "html")) ||
                ($assigned ne $engineer)) {
                next;
            }
        } elsif ((! defined $assigned) || 
                 ((defined $assigned) && ($assigned eq "html")) ||
                 ((defined $closed) && ($closed ne "html"))) {
            next;
        }
    
        $ct_assigned{$id} = "$subject.$user.$id.$date.$assigned.html";
    }
    for (sort {$a <=> $b} keys %ct_assigned) {
        ($subject,$user,$id,$date,$assigned,$suffix) = split(/\./, $ct_assigned{$_});
         $subject =~ tr/_/ /;
         $submitter = $user;
         $submitter =~ s/__/./g;
         print "<TR><TD ALIGN=LEFT><INPUT TYPE=RADIO NAME=ASSIGNED 
                VALUE=$ct_assigned{$_ }>\t\t$id <TD ALIGN=CENTER>
                <A HREF=\"$APP_DATADIR/$ct_assigned{$_}\">$subject </A>
                <TD ALIGN=CENTER>$submitter <TD ALIGN=CENTER>$assigned
                <TD ALIGN=CENTER>$date\n";
    }
    print "</TABLE>\n";
    print "<BR>\n";
}

sub Generate_Action_RadioButtons {
    print "<INPUT TYPE=RADIO NAME=ACTION CHECKED VALUE=CLOSE>Close";
    &Generate_Engineer_PickList("CLOSER", 0);
    print "<INPUT TYPE=RADIO NAME=ACTION VALUE=APPEND>Append   ";
    print "<INPUT TYPE=RADIO NAME=ACTION VALUE=REASSIGN>Re-Assign";
    &Generate_Engineer_PickList("ENGINEER", 0);
}

# End of File


