#!/opt/local/bin/perl

use HTML::Entities ();
use CGI;
use lib '/Library/WebServer/perl/lib';
use EduFileTwo::Student;
use EduFileTwo::Util;

my $query = new CGI;

my $ok_chars = '%+\-0-9<=>A-Z_a-z{|}@.,';
foreach my $param_name ( $query->param ) {
    $_ = HTML::Entities::decode( $query->param($param_name) );
    $_ =~ s/[^$ok_chars]//go;
    $query->param($param_name,$_);
}

print $query->header;
my $showForm = 0;
my $id = 0;
#Declare some local variables to save typing.


if($query->param())
{
	if($query->param('action') eq "doUpdate")
	{
		my $user_id = $query->param('user_id');
		my $firstname = $query->param('first_name');
		my $lastname = $query->param('last_name');
		my $student_id = $query->param('student_id');
		my $password_old = $query->param('password_old');
		my $password = $query->param('password');
		my $password_confirm = $query->param('password_confirm');
		my $phone = $query->param('phone');
		my $email = $query->param('email');
		$password =~ tr/"%+\-0-9<=>A-Z_a-z{|}//cd;
		$password_confirm =~ tr/"%+\-0-9<=>A-Z_a-z{|}//cd;
	
		#Error Checking Statements
		if ($firstname eq ""){
	
			EduFileTwo::Util::printHead("");;
			&printMessage("Invalid Field", "The first name field was left blank. Please click back on your browser to try again.\n");
			EduFileTwo::Util::printFoot();
		}
		if ($lastname eq ""){
	
			EduFileTwo::Util::printHead("");;
			&printMessage("Invalid Field", "The last name field was left blank. Please click back on your browser to try again.\n");
			EduFileTwo::Util::printFoot();
		}
		if ($student_id eq ""){
	
			EduFileTwo::Util::printHead("");;
			&printMessage("Invalid Field", "The student_id field was left blank. Please click back on your browser to try again.\n");
			EduFileTwo::Util::printFoot();
		}
		if ($phone eq ""){
	
			EduFileTwo::Util::printHead("");;
			&printMessage("Invalid Field", "The phone field was left blank. Please click back on your browser to try again.\n");
			EduFileTwo::Util::printFoot();
		}
		if ($email !~ /.+\@.+\..+/ or $email eq ""){
	
			EduFileTwo::Util::printHead("");;
			&printMessage("Invalid Email", "The Email Address you provided was invalid. Please click back on your browser to try again.\n");
			EduFileTwo::Util::printFoot();
		}
		
		## See if user wanted to change password and then compare new
		if(length($password_old) > 0)
		{
			if($password ne $password_confirm || $password eq "" || $password_confirm eq "")
			{
				EduFileTwo::Util::printHead("");;
				&printMessage("Invalid Password", "The new password you provided was either left blank or it does not match the conform password.\n");
				EduFileTwo::Util::printFoot();
				
			}
		}
		
		## Update user data.
		my $student = new EduFileTwo::Student($user_id);	
		$student->setLoginID($student_id);
		$student->setPassword($password);
		$student->setFirstName($firstname);
		$student->setLastName($lastname);
		$student->setPhoneNumber($phone);
		$student->setEmailAddress($email);
		if(!$student->save())
		{
			EduFileTwo::Util::printHead("");;
			&printMessage("Error", "There was a problem updating your information. Please click back and try again.\n");
			EduFileTwo::Util::printFoot();
		}	
		EduFileTwo::Util::printHead("");;
		&printMessage("Success", "Your information has been successfully updated.\n");
		EduFileTwo::Util::printFoot();
	}
	else
	{
		$showForm = 1;
		$id = $query->param('user_id');
	}

}

if($showForm)
{
	my $student = new EduFileTwo::Student($id);
	my $firstname = $student->getFirstName();
	my $lastname = $student->getLastName();
	my $student_id = $student->getLoginID();
	my $phone = $student->getPhoneNumber();
	my $email = $student->getEmailAddress();

EduFileTwo::Util::printHead("Edit User Profile");
print <<END_HTML;
<div id="content2" align="center">
<p>Make corrections or updates to this form and click save.</p>
<form action="edituser.cgi" method="post">
          <table border=0 cellpadding="3" cellspacing="1" width="400" bgcolor="#CFB87C" align="center">
           <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">First Name:</font></font></font></div>
            </td>
            <td width="232" bgcolor="#CFB87C"> <font face="Arial, Helvetica, sans-serif" size="2"> 
              <input type="hidden" name="user_id" value="$id" style = "background-color: #FAF5E2;">
              <input type="text" name="first_name" size="30" value="$firstname" maxlength="100" style = "background-color: #FAF5E2;">
              </font></td>
          </tr>
           <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">Last Name:</font></font></font></div>
            </td>
            <td width="232" bgcolor="#CFB87C"> <font face="Arial, Helvetica, sans-serif" size="2"> 
              <input type="text" name="last_name" size="30" value="$lastname" maxlength="100" style = "background-color: #FAF5E2;">
              </font></td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">Student ID:</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C">
                
              <input type="text" name="student_id" value="$student_id" size="30" maxlength="100" style = "background-color: #FAF5E2;">
              </td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">Old Password:</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C">
                
              <input type="password" name="password_old" value="$password_old" size="30" maxlength="100" style = "background-color: #FAF5E2;">
              </td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">New Password:</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C">
                
              <input type="password" name="password" value="$password" size="30" maxlength="100" style = "background-color: #FAF5E2;">
              </td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">Confirm Password:</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C">
                
              <input type="password" name="password_confirm" value="$password_confirm" size="30" maxlength="100" style = "background-color: #FAF5E2;">
              </td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">Phone:</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C"><font face="Arial, Helvetica, sans-serif" size="2">
                
              <input type="text" name="phone" size="30" value="$phone" maxlength="100" style = "background-color: #FAF5E2;">
                </font></td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">E-mail 
                Address: </font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C"><font face="Arial, Helvetica, sans-serif" size="2">
              <input type="text" name="email" size="30" value="$email" maxlength="100" style = "background-color: #FAF5E2;">
                </font></td>
          </tr>
          <tr> 
            <td width="146" bgcolor="#CFB87C"> 
              <div align="right"><font face="Arial, Helvetica, sans-serif"><font face="Arial, Helvetica, sans-serif"><font size="2">&nbsp;</font></font></font></div>
            </td>
              <td width="232" bgcolor="#CFB87C"><font face="Arial, Helvetica, sans-serif" size="2">
				<input type="hidden" name="action" value="doUpdate">
                <input type="submit" name="Submit" value="Save">&nbsp;&nbsp;<input type="reset" value="Reset">
                </font></td>
          </tr>
        </table>
</div>
</form>
END_HTML

EduFileTwo::Util::printFoot();
}


#Subroutines
sub printMessage{
	print "<h1>$_[0]</H1>";
	print "<p>$_[1]</p>";
}
