package csis626;
import java.io.*;
import java.net.*;
import java.sql.*;

/**
   This bean authenticates the user
*/
public class LoginBean
{
   private boolean isLoginSuccessful;
   private String stud_id;
   private String password;
   private String retrieved_password;
   private String output_message;
   private Connection conn = null;
   private ResultSet result;
   private Statement stat;
   private StudentData student;

   /**
      Constructor
   */
   public LoginBean()
   {
      isLoginSuccessful = false;
      output_message = "Didn't do anything";
   }

   /**
      Read-only stud_id property
      @return the Student ID
   */
   public String getStud_id()
   {
      return stud_id;
   }

   /**
      Write-only stud_id property
      @param input_id the Student ID
   */
   public void setStud_id(String input_id)
   {
      stud_id = input_id;
   }

   /**
      Read-only password property
      @return the Passwprd
   */
   public String getPassword()
   {
      return password;
   }

   /**
      Write-only password property
      @param input_id the Student ID
   */
   public void setPassword(String input_password) throws Exception
   {
      password = input_password;

      /* Authenticate user */
      authenticate();

   } /* End method setPassword */

   /**
      Read-only output_message property
      @return output_message with regards to whether url link is valid
   */
   public String getOutput_message()
   {
      return output_message;
   }
   
   /**
      Write-only output_message property
      @param input_msg the output message to report
   */
   public void setOutput_message(String input_msg)
   {
      output_message = input_msg;
   }

   /**
      Read-only isLoginSuccessful property
      @return output_message with regards to whether url link is valid
   */
   public boolean getIsLoginSuccessful()
   {
      return isLoginSuccessful;
   }

   /**
      Read-only StudentData property
      @return Student Personal Info in HTML string
   */
   public String getStudentData()
   {
      return student.toStringHTML();
   }


   /**
      Authenticates user
   */
   public void authenticate() throws Exception
   {
      try
      {
         /* Connect to search_db database */
         conn = DataSourceBean.getConnection();

         /* Create SQL statement object */
         stat = conn.createStatement();

         /* Retrieve password from database */
         result = stat.executeQuery("SELECT * FROM Students where stud_id='" +
                                    stud_id + "';");

         /* Student ID exists in database */
         if (result.next())
         {
            retrieved_password = result.getString("password");
         }

         /* Authenticate user */
         if (password.equals(retrieved_password))
         {
            isLoginSuccessful = true;
            if (result.getString("degree") != null)
            {
               student = new StudentData(result.getString("last_name"),
                                         result.getString("first_name"),
                                         result.getString("middle_name"),
                                         stud_id,
                                         result.getString("email"),
                                         result.getString("address"),
                                         result.getString("city"),
                                         result.getString("state"),
                                         result.getString("zip"),
                                         result.getString("phone"),
                                         password,
                                         result.getString("degree"));                                          
            }
            else
            {
               student = new StudentData(result.getString("last_name"),
                                         result.getString("first_name"),
                                         result.getString("middle_name"),
                                         stud_id,
                                         result.getString("email"),
                                         result.getString("address"),
                                         result.getString("city"),
                                         result.getString("state"),
                                         result.getString("zip"),
                                         result.getString("phone"),
                                         password);
            }
            setOutput_message("Login Successful!");
         }
         else
         {
            isLoginSuccessful = false;
            setOutput_message(" Login Failed!");
         }
      }
      finally
      {
         if (conn != null) conn.close();
      }

   } /* End method authenticate */


} /* End class LoginBean */