#!/usr/bin/perl -w
# Russell Hyland
# WebHortLine SearchContacts.cgi
#
# Prompt for search string, then get a list of ContactIDs of Contact records that contain the searchstring in
# one or more fields. Use the list to display the records.
use strict;
use warnings;
use CGI::Carp qw();
use CGI::Pretty;
use CGI qw(:standard :cgi-lib -debug fatalsToBrowser);
use DBD::mysql;
use DBI;
my $cgi = new CGI;
my @css = (Link({-rel=>'stylesheet',-type=>'text/css',-src=>'Styles.css',-media=>'screen'}));
my ($dbh, $selectstr, $sth, @row);
my $SrchStr;
our @ContactIDList;
our $CurIDPtr = 0;
my $County = $cgi->cookie('MG_HortLine');
if (!$County) {
print redirect(-location=>"http://hortline.rbhyland.org/Login.cgi");
}
print $cgi->header();
print start_html(-title =>'Search Contacts',
-style =>'Styles.css',
-script=>{-language=>'JAVASCRIPT',
-src=>'Scripts.js'});
print "
";
print "
##
sub DisplayRec {
$dbh = DBI->connect("DBI:mysql:database=hortline;host=mysql.hortline.rbhyland.org","rbhyland","dh_R95w")
or &dienice("Database logon failed: $DBI::errstr\n");
$selectstr = "SELECT * ".
"FROM Contacts ".
"WHERE ContactID = ?; ";
$sth = $dbh->prepare("$selectstr");
$sth->execute("$main::ContactIDList[$main::CurIDPtr]") or &dbdie;
@row = $sth->fetchrow_array();
&dienice("Data fetching error: $DBI::errstr\n") if $DBI::err;
my $FirstName = $row[2];
my $LastName = $row[3];
my $Address = $row[4];
my $City = $row[5];
my $State = $row[6];
my $Zip = $row[7];
my $Muni = $row[8];
my $ClientType = $row[9];
my $Phone = $row[10];
my $EmailName = $row[11];
my $ContactMethodPhone = $row[12];
my $ContactMethodWalkIn = $row[13];
my $ContactMethodEmail = $row[14];
my $ContactMethodEvent = $row[15];
my $Answer = $row[16];
my $Question = $row[17];
my $MasterGardener = $row[18];
my $CallDate = $row[19];
my $InfoProvidedVerbally = $row[20];
my $InfoProvidedFaxed = $row[21];
my $InfoProvidedMailed = $row[22];
my $InfoProvidedHandout = $row[23];
my $InfoProvidedWebsite = $row[24];
my $SampleStatusDue = $row[25];
my $SampleStatusReceived = $row[26];
my $SampleStatusSentToPSU = $row[27];
my $CallCompleteDate = $row[28];
my $CallBackDate = $row[29];
my $MGCallBack = $row[30];
my $FactSheets = $row[31];
my $Topic = $row[32];
print "",
textfield(-name=>'FirstNameFld',-value=>$FirstName,-size=>50,-maxlength=>50,
-id=>'FirstNameFld', -readonly=>'readonly', -class=>'DataIn'),
# br,
# "",
textfield(-name=>'LastNameFld',-value=>$LastName,
-size=>50,-maxlength=>50,-id=>'LastNameFld', -readonly=>'readonly', -class=>'DataIn2'),
br,
"",
textfield(-name=>'AddressFld',-value=>$Address,
-size=>50,-maxlength=>50,-id=>'AddressFld', -readonly=>'readonly', -class=>'DataIn'),
# br,
# "",
textfield(-name=>'CityFld',-value=>$City,
-size=>50,-maxlength=>50,-id=>'CityFld', -readonly=>'readonly', -class=>'DataIn2'),
# br,
# "",
textfield(-name=>'StateFld',-value=>$State,
-size=>2,-maxlength=>2,-id=>'StateFld', -readonly=>'readonly', -class=>'DataIn3'),
# br,
# "",
textfield(-name=>'ZipFld',-value=>$Zip,
-size=>10,-maxlength=>10,-id=>'ZipFld', -readonly=>'readonly', -class=>'DataIn4'),
br,
"",
textfield(-name=>'MuniFld',-value=>$Muni,
-size=>50,-maxlength=>50,-id=>'MuniFld', -readonly=>'readonly', -class=>'DataIn'),
br,
"",
textfield(-name=>'EmailFld',-value=>$EmailName,
-size=>50,-maxlength=>50,-id=>'EmailFld', -readonly=>'readonly', -class=>'DataIn'),
br,
"",
textfield(-name=>'PhoneFld',-value=>$Phone,
-size=>20,-maxlength=>20,-id=>'PhoneFld', -readonly=>'readonly', -class=>'DataIn'),
br,
"",
textfield(-name=>'ClientTypeFld',-value=>$ClientType,
-size=>20,-maxlength=>20,-id=>'ClientTypeFld', -readonly=>'readonly', -class=>'DataIn'),
br,
"",
textfield(-name=>'CallDateFld',-value=>$CallDate,-size=>10,-maxlength=>10,-id=>'CallDateFld',
-class=>'DataIn', -readonly=>'readonly'),
br,
"",
textfield(-name=>'CallBackDateFld',-value=>$CallBackDate,-size=>10,-maxlength=>10,
-id=>'CallBackDateFld',-class=>'DataIn', -readonly=>'readonly'),
br,
"",
textfield(-name=>'CallCompleteDateFld',-value=>$CallCompleteDate,-size=>10,-maxlength=>10,
-id=>'CallCompleteDateFld',-class=>'DataIn', -readonly=>'readonly'),
br,
"",
checkbox(-name=>'SampleStatusDue',-checked=>$SampleStatusDue?1:0,
-value=>$SampleStatusDue,-label=>'Waiting/Client', -readonly=>'readonly'),
' ',
checkbox(-name=>'SampleStatusReceived',-checked=>$SampleStatusReceived?1:0,
-value=>$SampleStatusReceived,-label=>'Received', -readonly=>'readonly'),
' ',
checkbox(-name=>'SampleStatusSentToPSU',-checked=>$SampleStatusSentToPSU?1:0,
-value=>$SampleStatusSentToPSU,-label=>'Sent To PSU', -readonly=>'readonly'),
br,
"",
textarea(-name=>'QuestionFld',-value=>$Question,-rows=>10,-columns=>50,-class=>'DataIn',
-readonly=>'readonly'),
br,br,br,br,br,br,br,br,br,
"",
textarea(-name=>'AnswerFld',-value=>$Answer,-rows=>10,-columns=>50,-class=>'DataIn',
-readonly=>'readonly'),
br,br,br,br,br,br,br,br,br,
"",
checkbox(-name=>'ContactMethodPhone',-checked=>$ContactMethodPhone?1:0,
-value=>'1',-label=>'Phone', -readonly=>'readonly'),
' ',
checkbox(-name=>'ContactMethodWalkIn',-checked=>$ContactMethodWalkIn?1:0,
-value=>'1',-label=>'Walk In', -readonly=>'readonly'),
' ',
checkbox(-name=>'ContactMethodEmail',-checked=>$ContactMethodEmail?1:0,
-value=>'1',-label=>'Email', -readonly=>'readonly'),
' ',
checkbox(-name=>'ContactMethodEvent',-checked=>$ContactMethodEvent?1:0,
-value=>'1',-label=>'Event', -readonly=>'readonly'),
br,
"",
checkbox(-name=>'IPVerbally',-checked=>$InfoProvidedVerbally?1:0,
-value=>'1',-label=>'Verbally', -readonly=>'readonly'),
" ",
checkbox(-name=>'IPFaxed',-checked=>$InfoProvidedFaxed?1:0,
-value=>'1',-label=>'Faxed', -readonly=>'readonly'),
" ",
checkbox(-name=>'IPMailed',-checked=>$InfoProvidedMailed?1:0,
-value=>'1',-label=>'Mailed', -readonly=>'readonly'),
" ",
checkbox(-name=>'IPHandout',-checked=>$InfoProvidedHandout?1:0,
-value=>'1',-label=>'Handout', -readonly=>'readonly'),
" ",
checkbox(-name=>'IPWebsite',-checked=>$InfoProvidedWebsite?1:0,
-value=>'1',-label=>'Website', -readonly=>'readonly'),
br,
'',
textfield(-name=>'MGFld',-value=>$MasterGardener,-size=>30,-maxlength=>50,-id=>'MGFld',
-class=>'DataIn', -readonly=>'readonly'),
br,
'',
textfield(-name=>'CallBackMGFld',-value=>$MGCallBack,-size=>30,-maxlength=>50,-id=>'CallBackMGFld',
-class=>'DataIn', -readonly=>'readonly'),
br,
"",
textfield(-name=>'FactSheetsFld',-value=>$FactSheets,-size=>2,-maxlength=>2,-id=>'FactSheetsFld',
-class=>'DataIn', -readonly=>'readonly'),
br,
"",
textfield(-name=>'TopicFld',-value=>$Topic,-size=>20,-maxlength=>30,-id=>'TopicFld',
-class=>'DataIn', -readonly=>'readonly');
print start_form(-method=>"POST",
-name=>"NextForm",
-id=>"NextForm",
-action=>"http://www.hortline.rbhyland.org/SearchContacts.cgi");
print br,submit(-name=>'Next',-value=>'Next');
print br,submit(-name=>'Prev',-value=>'Prev');
print end_form;
}
sub getIDs {
$SrchStr = param('SearchFld');
$dbh = DBI->connect("DBI:mysql:database=hortline;host=mysql.hortline.rbhyland.org","rbhyland","dh_R95w")
or &dienice("Database logon failed: $DBI::errstr\n");
$selectstr = "SELECT * ".
"FROM Contacts ".
"WHERE County = ?; ";
$sth = $dbh->prepare("$selectstr");
$sth->execute($County);
while ( @row = $sth->fetchrow_array() ) {
my $row = "@row";
if (index(uc($row),uc($SrchStr)) >=0) {
push(@ContactIDList, $row[0]);
}
}
warn "Data fetching terminated early by error: $DBI::errstr\n"
if $DBI::err;
print "@ContactIDList",br;
}
sub dienice {
my ($msg) = @_;
print "$msg";
exit;
}
sub dbdie {
my ($errmsg) = "$DBI::errstr
";
&dienice($errmsg);
}