Here is the code, the HTML page that is a template that is merged with the
%data hash handled by sub "merge_template"
I've even wrote little test pages and scripts just to test the data passing
and that is where i discovered the diff between "POST" and "GET"...i will
send those too...

During the post no data is passed to the cgi....i.e. $cgi->param('PARAM') =
nothing
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! test html
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

<head>
<title>test</title>
</head>
<html>
<body>
<form enctype="multipart/form-data" method="POST"
action="/apps/test1/test.cgi">
Select File: <input TYPE="FILE" NAME="FILE_TO_UPLOAD"><br>
Favorite color:<input TYPE="TEXT" NAME="FAVCOLOR"><br>
<INPUT NAME="SUBMIT" TYPE=SUBMIT VALUE="SUBMIT">
</form>
</body>
</html>

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! test cgi
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#!/usr/bin/perl

use CGI;
$cgi = new CGI;


$submit = $cgi->param('SUBMIT');
$fh = $cgi->param('FILE_TO_UPLOAD');
$fav = $cgi->param('FAVCOLOR');

open(UPLOAD, ">/tmp/fileuploadtest");
while (<$fh>)
{

        print UPLOAD;

}

close(UPLOAD);

open(LOG, ">/tmp/test.log");
print LOG "$submit\n";
#print LOG "$file\n";
print LOG "$fav\n";
close(LOG);


print $cgi->header;
print $cgi->start_html;


print "$submit<br>";
print "$fh<br>";
print "$fav<br>";

print $cgi->end_html;

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! End test
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



and this is the form header in the REAL HTML doc....


<form enctype="multipart/form-data" method="POST"
action="/path/to/contract_v1"> #relative path!!
<input TYPE="FILE" NAME="FILE_TO_UPLOAD">
<input type="text" name="CONTACTPHONE1" value="%CONTACTPHONE1%">


many more <inputs>
a submit

</form>


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! THIS IS THE REAL CGI
SCRIPT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#!/usr/bin/perl
######################################################
#
# Contract_v1
# by Chris
#
######################################################


use DBI;
use CGI;
use CGI::Carp;


##########################################################
# Global variables
##########################################################
$HTML_DIR                       = '/usr/local/apache/htdocs/contract';
$HTML_URL                       = '/contract';
$APPS_DIR                       = '/usr/local/apache/apps/contract';
$APPS_URL                       = '/contract';
$contract_date                  = `date +%y%m%d%H%M%S`;
$file_tmp                       = "/usr/local/apache/tmp/contractweb" .
$contract_date;
#$file_date                     = "/application_svr/contractweb/contractweb"
. $contract_date;
$file_date                      =
"/application_svr/contractweb_test/contractweb_test" . $contract_date;
chop($file_date);
chop($file_tmp);
$file_name                      = $file_date . ".dat";
$file_name_ux                   = $file_tmp . ".ux";
$file_name_contract             = $file_date . ".contractweb";
$file_name_go                   = $file_date . ".go";
$cgi                            = new CGI;
$db                             = "Oracle";
$remote_user                    = $ENV{REMOTE_USER};
$ENV{ORACLE_HOME}               = "/usr/local/oracle";

##########################################################
# Global cgi parameters
##########################################################
$submit                         = $cgi->param('SUBMIT');
$lender_name                    = $cgi->param('LENDER_NAME');
$master_policy                  = $cgi->param('MASTER_POLICY');
$aplus_master_policy            = $cgi->param('APLUS_MASTER_POLICY');
$contactname                    = $cgi->param('CONTACTNAME');
$contactphone1                  = $cgi->param('CONTACTPHONE1');
$contactphone2                  = $cgi->param('CONTACTPHONE2');
$contactphone3                  = $cgi->param('CONTACTPHONE3');
$contacttelephone               = $contactphone1 . $contactphone2 .
$contactphone3;
$authorizedrep                  = $cgi->param('AUTHORIZEDREP');
$contactfax1                    = $cgi->param('CONTACTFAX1');
$contactfax2                    = $cgi->param('CONTACTFAX2');
$contactfax3                    = $cgi->param('CONTACTFAX3');
$contactfax                     = $contactfax1 . $contactfax2 .
$contactfax3;
$contactemail                   = $cgi->param('CONTACTEMAIL');
$submission_type1               = $cgi->param('SUBMISSION_TYPE1'); #
1=DU,2=LP 3=MI Only
$submission_type2               = $cgi->param('SUBMISSION_TYPE2'); #
1=DU,2=LP 3=MI Only
$submission_type3               = $cgi->param('SUBMISSION_TYPE3'); #
1=DU,2=LP 3=MI Only
$du_triad_mi                    = $cgi->param('DU_TRIAD_MI'); # Only one can
be chked
$lp_triad_mi                    = $cgi->param('LP_TRIAD_MI'); # ""
$credit_bureau                  = $cgi->param('CREDIT_BUREAU');
$credit_report_ref              = $cgi->param('CREDIT_REPORT_REF');
$du_decision_type               = $cgi->param('DU_DECISION_TYPE');
$lp_decision_type               = $cgi->param('LP_DECISION_TYPE');
$crdt_score_reported            = $cgi->param('CRDT_SCORE_REPORTED');
$cb_crdt_score_reported         = $cgi->param('CB_CRDT_SCORE_REPORTED');
$mi_sub_type                    = $cgi->param('MI_SUB_TYPE');
$cov_pct                        = $cgi->param('COV_PCT');
$prem_type                      = $cgi->param('PREM_TYPE');
$single_years_type              = $cgi->param('SINGLE_YEARS_TYPE');
$rnwl_calc_basis_type           = $cgi->param('RNWL_CALC_BASIS_TYPE');
$refundable                     = $cgi->param('REFUNDABLE');
$lender_paid_flg                = $cgi->param('LENDER_PAID_FLG');
$premium_financed               = $cgi->param('PREMIUM_FINANCED');
$base_loan_amt                  = $cgi->param('BASE_LOAN_AMT');
$special_plans                  = $cgi->param('SPECIAL_PLANS');
$type_of_buydown                = $cgi->param('TYPE_OF_BUYDOWN');
$buydown_term                   = $cgi->param('BUYDOWN_TERM');
$index_type                     = $cgi->param('INDEX_TYPE');
$mths_to_first_rate_chg         = $cgi->param('MTHS_TO_FIRST_RATE_CHG');
$rate_cap_per_adj_pct           = $cgi->param('RATE_CAP_PER_ADJ_PCT');
$freq_of_rate_chg               = $cgi->param('FREQ_OF_RATE_CHG');
$cap_over_life_of_loan_pct      = $cgi->param('CAP_OVER_LIFE_OF_LOAN_PCT');
$county                         = $cgi->param('COUNTY');
$product_code                   = $cgi->param('PRODUCT_CODE');
$wholesaler_name                = $cgi->param('WHOLESALER_NAME');
$condo_proj_name                = $cgi->param('CONDO_PROJ_NAME');
$comment_msg                    = $cgi->param('COMMENT_MSG');
$property_type                  = $cgi->param('PROPERTY_TYPE');
$first_payment_date             = $cgi->param('FIRST_PAYMENT_DATE');
$secondary_financing_type       = $cgi->param('SECONDARY_FINANCING_TYPE');
$secondary_financing_amt        = $cgi->param('SECONDARY_FINANCING_AMT');
$sales_concessions_amt          = $cgi->param('SALES_CONCESSIONS_AMT');
$document_type_code             = $cgi->param('DOCUMENT_TYPE_CODE');
$risk_grade_evaluation          = $cgi->param('RISK_GRADE_EVALUATION');
$affordable_product_type        = $cgi->param('AFFORDABLE_PRODUCT_TYPE');
$g2refnum                       = $cgi->param('G2REFNUM');
$lpfile                         = $cgi->param('LPFILE');
$SAVE_DIRECTORY                 = "/application_svr/contractweb_test";
$file_to_upload                 = $cgi->param('FILE_TO_UPLOAD');
$submission_type                = submission_type();
( $aplus_mp_label,
 $aplus_note_label,
 $aplus_note )                  = aplus_master_policy_val();
$remote_user                    = $ENV{REMOTE_USER};
%user_info                      = get_user_info( database_open() );
%mi_user_contact_info           =
get_mi_user_contact_info( database_open() );
%master_policy_info             =
et_master_policy_info( database_open_mint(), $user_info{SVR_NO} );
%aplus_master_policy_info       =
et_aplus_master_policy_info( database_open(), $user_info{SVR_NO} );
#########################################################
# Merge all information hashes into a single hash
#########################################################
%data                           = ( %user_info, %mi_user_contact_info,
%master_policy_info, %aplus_master_policy_info );
$data{ACTION} = "$ENV{SCRIPT_NAME}";
$data{CONTACTPHONE1} = substr( $data{CONTACTTELEPHONE}, 0, 3 );
$data{CONTACTPHONE2} = substr( $data{CONTACTTELEPHONE}, 3, 3 );
$data{CONTACTPHONE3} = substr( $data{CONTACTTELEPHONE}, 6, 4 );
$data{CONTACTFAX1} = substr( $data{CONTACTFAX}, 0, 3 );
$data{CONTACTFAX2} = substr( $data{CONTACTFAX}, 3, 3 );
$data{CONTACTFAX3} = substr( $data{CONTACTFAX}, 6, 4 );


open(LOG, ">/tmp/data.log");
for (keys(%data))
{

        print LOG "Key $_ = $data{$_}\n";

}
print LOG "$submit\n";
print LOG "$remote_user\n";
close(LOG);



if ( $submit eq "Cancel" )
{

        my ( $cgi );
        $cgi = new CGI

        $page = submit_eq_cancel( %data );

        print $cgi->header;
        print $page;

        die "$remote_user has just Canceled Contract Underwirting";

}

elsif ( $submit eq '' )
{

        my ( $cgi );
        $cgi = new CGI

        $page = submit_eq_nothing( %data );

        print $cgi->header;
        print $page;

        die "$remote_user has just entered Contract Underwirting";

}

else
{

        submit_eq_submit( %data );

}

close(LOG);













##########################################################
# Set and return the database handle
##########################################################
sub database_open
{

        my ( $dbh );

        $dbh = DBI->connect("dbi:$db:something.something.tgic.com",
"something", "something")
                or die "Cannot connect to database: $DBI::errstr";

        return ( $dbh );

}

###########################################################
# Set and return the MINT database handle
###########################################################
sub database_open_mint
{

        my ( $dbh_mint );

        $dbh_mint = DBI->connect("dbi:$db:something.something.tgic.com",
"something", "something")
                or die "Cannot connect to MINT database: $DBI::errstr";

        return ( $dbh_mint );

}

##########################################################
# Get the users contact info from the MI_USER_CONTACT_TBL table
##########################################################
sub get_mi_user_contact_info
{

        my ( $dbh ) = @_;

        $sth = $dbh->prepare( "SELECT * from MI_USER_CONTACT_TBL where
USER_NAME = '$remote_user'" )
                or die "Cannot prepare get_mi_user_contact_info SQL:
$DBI::errstr";

        $sth->execute or die "Cannot execute get_mi_user_contact_info SQL:
$DBI::errstr";

        $row = $sth->fetchrow_hashref;

        return ( %$row );

}

##########################################################
# Get the users info from the USER_TBL table
##########################################################
sub get_user_info
{

        my ( $dbh ) = @_;

        $sth = $dbh->prepare( "SELECT * from USER_TBL where USER_NAME =
'$remote_user'" )
                or die "Cannot prepare  get_user_info SQL: $DBI::errstr";

        $sth->execute or die "Cannot execute  get_user_info SQL:
$DBI::errstr";

        $row = $sth->fetchrow_hashref;

        return ( %$row );

}

##########################################################
# Check to see if it's the users first time here, if so then make them read
the disclaimer and accept it
##########################################################
sub if_my_first_time
{

        my ( $first_time ) = @_;

        if (  $first_time eq '' )
        {

                print
$cgi->redirect('https://extranet.tgic.com/apps/contract/contract_disclaimer.
cgi');

        }
        else
        {

                #print
$cgi->redirect('https://extranet.tgic.com/apps/contract/contract_v1');
                print
$cgi->redirect('https://extranet.tgic.com/apps/test1/contract_v1');
                die("New contract session for $remote_user");

        }

}

##########################################################
# Get the master policy info from MP_HOLDERS table in MINT
##########################################################
sub get_master_policy_info
{

        my ( $dbh_mint, $svr_no ) = @_;
        my ( $sth, $data );


        $sth = $dbh_mint->prepare("SELECT MPH_ID MASTER_POLICY, RTRIM(NAME)
LENDER_NAME FROM MP_HOLDERS WHERE MPH_ID = '$svr_n
o' AND MPH_TYPE <> 'HO' ORDER BY MPH_TYPE")
                or die "Cannot prepare get_master_policy_info SQL:
$DBI::errstr";
        $sth->execute or die "Cannot execute get_master_policy_info SQL:
$DBI::errstr";;
        $data = $sth->fetchrow_hashref;
        $sth->finish;



        return ( %$data );

}

##########################################################
# Get the APLUS master policy info from MI_APLUS_TBL table
##########################################################
sub get_aplus_master_policy_info
{

        my ( $dbh, $svr_no ) = @_;
        my ( $sth, $row );


        $sth = $dbh->prepare("SELECT APLUS_MASTER_POLICY from MI_APLUS_TBL
where REGULAR_MASTER_POLICY = '$svr_no'" )
                or die "Cannot prepare get_aplus_master_policy_info SQL:
$DBI::errstr";

        $sth->execute or die "Cannot execute get_aplus_master_policy_info
SQL: $DBI::errstr";

        $row = $sth->fetchrow_hashref;

        return ( %$row );


}

##########################################################
# Merge all data with the template
##########################################################
sub merge_template
{

        my ( $template, %data ) = @_;
        my ( $tmpl,@tmpl );

        open(TMPL, "$template") or die "Can't open $template";
        @tmpl = <TMPL>;
        close(TMPL);

        $tmpl = join('', @tmpl);

        for(keys(%data))
        {

                $tmpl =~ s/%$_%/$data{$_}/g;

        }

        $tmpl =~ s/\.checked \= %(.*)%/\.checked \= 0/g;
        $tmpl =~ s/\[%(.*)%\]/\[0\]/g;
        $tmpl =~ s/%([A-Z].*)%//g;


        return $tmpl;

}

##########################################################
# Update the FIRST_TIME value in USER_TBL after the user has accepted the
agreement
##########################################################
sub setdisclaimer
{

        my ( $dbh, $val ) = @_;

        $sth = $dbh->prepare("UPDATE user_tbl SET first_time=$val,
mi_date_accepted=SYSDATE  WHERE user_name = '$user_info{USER_NAME}'")
                or die "Cannot prepare setdisclaimer SQL: $DBI::errstr";

        $sth->execute or die "Cannot execute setdisclaimer SQL:
$DBI::errstr";

}

##########################################################
# Set and return master policy values
##########################################################
sub aplus_master_policy_val
{

        if ( $aplus_master_policy ne '')
        {

                $aplus_mp_label = 'APLUS MP#:';
                $aplus_note_label = 'Note:';
                $aplus_note = 'May qualify for APLUS';

        }
        else
        {

                $aplus_mp_label = '';
                $aplus_note_label = '';
                $aplus_note = '';

        }

        return ( $aplus_mp_label, $aplus_note_label, $aplus_note );

}

##########################################################
# Set the submission_type
##########################################################
sub submission_type
{

        my ( $submission_type ) = 0;

        if ($submission_type1 == 1 && $du_triad_mi != 1)
        {
                $submission_type = 1;
        }
        elsif ($submission_type1 == 1 && $du_triad_mi == 1)
        {
                $submission_type = 2;
        }
        elsif ($submission_type2 == 2 && $lp_triad_mi != 1)
        {
                $submission_type = 3;
        }
        elsif ($submission_type2 == 2 && $lp_triad_mi == 1)
        {
                $submission_type = 4;
        }
        elsif ($submission_type3 == 3)
        {
                $submission_type = 5;
        }
        else
        {
                $submission_type = 0;
        }

        return ( $submission_type );

}

##########################################################
# Here, if the value of $submit is "Cancel" it means that the user has
canceled the previous action.
# And take them to the right page, with all the %data.
##########################################################
sub submit_eq_cancel
{

        my ( %data ) = @_;
        my ( $page );

        undef $submit;
        $page = merge_template("$HTML_DIR/contract_v1.html",%data);

        return ( $page );

}

##########################################################
# Here, if the value of $submit is nothing it means that this is the first
time the user has entered for
# this session. And take them to the right page, with all the %data.
##########################################################
sub submit_eq_nothing
{

        my ( %data ) = @_;
        my ( $page );

        undef $submit;
        $page = merge_template("$HTML_DIR/contract_v1_test.html",%data);

        return ( $page );

}

##########################################################
# Here, if the value of $submit is "submit" it means that the user has
entered data on the application
# and is ready to submit the information. Here all the information is
processed.
##########################################################
sub submit_eq_submit
{

        my ( %data ) = @_;

        my $dbh = database_open();

        if ($submit eq 'Submit')
        {
                undef $submit;

                if ($dufile ne '')
                {

                        print $cgi->header();
                        $page =
merge_template("$HTML_DIR/contract_dufile_error.html",%data);
                        print $page;

                }
                else
                {


                    $query = sprintf('BEGIN
contract_pkg.contact_update_insert
                                (:bind1,
                                :bind2,
                                :bind3,
                                :bind4,
                                :bind5,
                                :bind6,
                                :rc);
                                END;');
                        $sth = $dbh->prepare($query);
                        $sth->bind_param_inout(":bind1", \$ENV{REMOTE_USER},
32);
                        $sth->bind_param_inout(":bind2", \$contactname, 30);
                        $sth->bind_param_inout(":bind3", \$contacttelephone,
15);
                        $sth->bind_param_inout(":bind4", \$contactfax, 15);
                        $sth->bind_param_inout(":bind5", \$contactemail,
80);
                        $sth->bind_param_inout(":bind6", \$authorizedrep,
80);
                        $sth->bind_param_inout(":rc", \$rc, 1);
                        $sth->execute || print $dbh->errstr;
                        $sth->finish;

                        if ($remote_user eq 'something') #used for testing
                        {

                                open(UPLOADFILE, ">$file_name_ux");

                                if ($file_to_upload =~ /([^\/\\]+)$/)
                                {
                                        $Filename = $1;
                                        $Filename =~ s/^\.+//;
                                        $File_Handle = $file_to_upload;
                                }

                                undef $BytesRead;
                                undef $Buffer;

                                while ($Bytes =
read($File_Handle,$Buffer,1024))
                                {
                                        $BytesRead += $Bytes;
                                        print UPLOADFILE $Buffer;
                                }

                                $TOTAL_BYTES += $BytesRead;
                                close($File_Handle);


                                if ($TOTAL_BYTES eq 0)
                                {
                                        print $cgi->header();
                                        $page =
merge_template("$HTML_DIR/contract_dufile_error.html",%data);
                                        print $page;
                                        die ("Contract Error - Selected File
has no data");
                                }



                close(UPLOADFILE);

                                system("to_dos", $file_name_ux, $file_name);

                                $data{CONTACTEMAIL} = $contactemail;
                                print $cgi->header();
                                $page =
merge_template("$HTML_DIR/contract_acknowledgement.html",%data);
                                print $page;
                                die "At the end";

                        }
                        else
                        {

                                unless (open ENTRYLOGFILE, "> " .
"$file_name_ux")
                                {
                                         printf TESTLOGFILE "Unable to open
unix file named %s\n", $file_name_ux;
                                }
                                else
                                {
                                        printf TESTLOGFILE "Opened the unix
file named %s successfully\n", $file_name_ux;
                                }

                                printf ENTRYLOGFILE
"ZZZ%-35.35s%-10.10s%-10.10s%-10.10s%-35.35s%-10.10s%-35.35s%-10.10s%-35.3
5s%-1.1s%-35.35s%-25.25s%-20.20s%-20.20s%-3.3s%-3.3s%-10.10s%-5.5s%-15.15s%-
5.5s%-20.20s%-15.15s%-10.10s%-1.1s%-10.10s%-25.25s
%-10.10s%-10.10s%-15.15s%-3.3s%-6.6s%-3.3s%-6.6s%-20.20s%-30.30s%-40.40s%-30
.30s%-256.256s%-20.20s%-8.8s%-25.25s%-12.12s%-12.1
2s%-20.20s%-1.1s%-40.40s%-5.5s%-21.21s\n",
                                $lender_name,
                                $master_policy,
                                $aplus_mp_label,
                                $aplus_master_policy,
                                $contactname,
                                $contacttelephone,
                                $authorizedrep,
                                $contactfax,
                                $contactemail,
                                $submission_type,
                                $credit_bureau,
                                $credit_report_ref,
                                $du_decision_type,
                                $lp_decision_type,
                                $crdt_score_reported,
                                $cb_crdt_score_reported,
                                $mi_sub_type,
                                $cov_pct,
                                $prem_type,
                                $single_years_type,
                                $rnwl_calc_basis_type,
                                $refundable,
                                $lender_paid_flg,
                                $premium_financed,
                                $base_loan_amt,
                                $special_plans,
                                $type_of_buydown,
                                $buydown_term,
    $index_type,
                                $mths_to_first_rate_chg,
                                $rate_cap_per_adj_pct,
                                $freq_of_rate_chg,
                                $cap_over_life_of_loan_pct,
                                $county,
                                $product_code,
                                $wholesaler_name,
                                $condo_proj_name,
                                $comment_msg,
                                $property_type,
                                $first_payment_date,
                                $secondary_financing_type,
                                $secondary_financing_amt,
                                $sales_concessions_amt,
                                $document_type_code,
                                $risk_grade_evaluation,
                                $affordable_product_type,
                                $aplus_note_label,
                                $aplus_note;

                                if ($file_to_upload =~ /([^\/\\]+)$/)
                                {
                                        $Filename = $1;
                                        $Filename =~ s/^\.+//;
                                        $File_Handle = $file_to_upload;
                                }

                                undef $BytesRead;
                                undef $Buffer;

                                while ($Bytes =
read($File_Handle,$Buffer,1024))
                                {
                                        $BytesRead += $Bytes;
                                        print ENTRYLOGFILE $Buffer;
                                }

                                $TOTAL_BYTES += $BytesRead;
                                close($File_Handle);


                                if ($TOTAL_BYTES eq 0)
                                {
                                        print $cgi->header();

merge_template("$HTML_DIR/contract_dufile_error.html",%data);
                                        die ("Contract Error - Selected File
has no data");
                                }





                                system("to_dos", $file_name_ux, $file_name);


   if ($TOTAL_BYTES eq 0)
                                {
                                        print $cgi->header();

merge_template("$HTML_DIR/contract_dufile_error.html",%data);
                                        die ("Contract Error - Selected File
has no data");
                                }





                                system("to_dos", $file_name_ux, $file_name);


                                open ENTRYLOGFILE_GO, "> " .
"$file_name_go";
                                close(ENTRYLOGFILE_GO);

                                $data{CONTACTEMAIL} = $contactemail;
                                print $cgi->header();
                                $page =
merge_template("$HTML_DIR/contract_acknowledgement.html",%data);

                                print $page;

                        }

                }

        }

}

##########################################################
# Test
##########################################################
sub test
{

        my ( %data ) = @_;

        print $cgi->header();
        print $cgi->start_html();

        for (keys(%data))
        {

                print "The keys is <b>$_</b>, and the value is
<b>$data{$_}</b><br>";

        }

        print "$data{APLUS_MASTER_POLICY}";
        print $cgi->end_html();

}


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to