ClientVisitsTrackingWebApp II

by volkanuzun 2/2/2008 2:01:00 PM

Today, we are going to write the client class, it is a pretty basic class which only will hold information abut the client. The class diagram is as below :

 


So this class will sit in the VeteransDBClasses project, and our web app as well as ou database access class will use this class to communicate with database. Watch out that the encrypted fields in the database is clear text here; so the functions that will use this class should do the encryption, html encodes so forth. I didnt even want to post the code for the class, as it is very easy and dummy object; however here it is :

public class obClient
    {
        public int ClientID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MiddleName { get; set; }
        public obAddress Address { get; set; }
        public DateTime BirthDate { get; set; }
        public string SSN { get; set; }
        public obReferringAgency ReferringAgency { get; set; }
        public string PrimaryDisability { get; set; }
        public string SecondaryDisability { get; set; }
        public string Notes { get; set; }
        public string ServiceLocation { get; set; }

        public obClient() { }

        public obClient(int ClientID, string FirstName, string LastName, string MiddleName,
            obAddress Address, DateTime BirthDate, string SSN,
            string PrimaryDisability, string SecondaryDisability, string Notes, string ServiceLocation)
        {
            this.ClientID = ClientID;
            this.FirstName = FirstName;
            this.LastName = LastName;
            this.MiddleName = MiddleName;
            this.Address = Address;
            this.BirthDate = BirthDate;
            this.SSN = SSN;
            //this.ReferringAgency = ReferringAgency;
            this.PrimaryDisability = PrimaryDisability;
            this.SecondaryDisability = SecondaryDisability;
            this.Notes = Notes;
            this.ServiceLocation = ServiceLocation;
        }
        
        public override string ToString()
        {
            return FirstName + " " + LastName;
        }
    }

 

 

So now we have to add a class to the  VeteransDBAPI. This class will have functions such as add, edit, delete, list, search etc. Below is the class diagram:

 


All these functions either take a client class as a parameter, returns a client class, or a collection of client classes. So for example AddClient will take client class a  parameter, call a stored procedure in the database and save the data in the database. Of course it will do the encryption and encoding stuff inside. This is same with GetAllClients, and other Get functions. So here is the code below; enjoy it :)

public static class ClientsTB
    {
        private static string ConnectionString = Properties.Settings.Default.DBConnString;

        /// <summary>
        /// Adds a client to the database
        /// </summary>
        /// <param name="Client">Client to be added to the system</param>
        /// <returns>Client ID if successfull or -1 in failure</returns>
        /// <seealso cref="obClient.cs"/>
        /// <remarks>There is no html encoding, caller should encode the data</remarks>
        public static int AddClient(VeteransDBClasses.obClient Client)
        {
            int ClientID = -1;
            SqlConnection conn = new SqlConnection(ConnectionString);
            try
            {
                SqlCommand cmd = new SqlCommand("spClientAdd", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ClientID", -1);
                cmd.Parameters["@ClientID"].Direction = ParameterDirection.Output;
                cmd.Parameters.AddWithValue("@FirstName", Client.FirstName);
                cmd.Parameters.AddWithValue("@LastName", Client.LastName);
                cmd.Parameters.AddWithValue("@MiddleName", Client.MiddleName);
                cmd.Parameters.AddWithValue("@StreetAddress", Client.Address.StreetAddress);
                cmd.Parameters.AddWithValue("@City", Client.Address.City);
                cmd.Parameters.AddWithValue("@State", Client.Address.State);
                cmd.Parameters.AddWithValue("@Zip", Client.Address.Zip);
                cmd.Parameters.AddWithValue("@Phone1", Client.Address.Phone1);
                cmd.Parameters.AddWithValue("@Phone2", Client.Address.Phone2);
                cmd.Parameters.AddWithValue("@Fax", Client.Address.Fax);
                cmd.Parameters.AddWithValue("@Email", Client.Address.Email);
                //TODO: for now it is always one, but in the future change this
                cmd.Parameters.AddWithValue("@AgentID", 1);
                cmd.Parameters.AddWithValue("@ServiceLocation", Client.ServiceLocation);
                //now we have to encrypt some of the values
                //first read the key
                byte[] EncKey = Utilities.EncDec3DES.GetKeyFromFile(
                                Properties.Settings.Default.KeyFile);

                byte[] DOB = Utilities.EncDec3DES.EncryptData(EncKey, Client.BirthDate.ToShortDateString());
                byte[] SSN = Utilities.EncDec3DES.EncryptData(EncKey, Client.SSN);
                byte[] PrimaryDisability = Utilities.EncDec3DES.EncryptData(EncKey,
                                        Client.PrimaryDisability);
                byte[] SecondaryDisability = Utilities.EncDec3DES.EncryptData(EncKey,
                                        Client.SecondaryDisability);
                byte[] Notes = Utilities.EncDec3DES.EncryptData(EncKey, Client.Notes);
                cmd.Parameters.AddWithValue("@DOB", DOB);
                cmd.Parameters.AddWithValue("@SSN", SSN);
                cmd.Parameters.AddWithValue("@PrimaryDisability", PrimaryDisability);
                cmd.Parameters.AddWithValue("@SecondaryDisability", SecondaryDisability);
                cmd.Parameters.AddWithValue("@Notes", Notes);

                conn.Open();
                cmd.ExecuteNonQuery();
                ClientID = Int32.Parse(cmd.Parameters["@ClientID"].Value.ToString());
            }
            catch
            {
                ClientID = -1;
            }
            finally
            {
                conn.Close();
            }
            return ClientID;
        }

        /// <summary>
        /// Returns a list of clients in the collection of Clients
        /// </summary>
        /// <returns>if successfull list of clients, null in failure</returns>
        /// <seealso cref="obClient.cs"/>
        public static List<VeteransDBClasses.obClient> GetAllClients()
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            List<VeteransDBClasses.obClient>Clients = new List<VeteransDBClasses.obClient>();
            try
            {
                SqlCommand cmd = new SqlCommand("spClientGetAllClients", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int ClientID = (int)reader["ClientID"];
                    string FirstName = (string)reader["FirstName"];
                    string LastName = (string)reader["LastName"];
                    string MiddleName = (string)reader["MiddleName"];
                    string StreetAddress = (string)reader["StreetAddress"];
                    string City = (string)reader["City"];
                    string State = (string)reader["State"];
                    string Zip = (string)reader["Zip"];
                    string Phone1 = (string)reader["Phone1"];
                    string Phone2 = (string)reader["Phone2"];
                    string Fax = (string)reader["Fax"];
                    string Email = (string)reader["Email"];
                    int AgentID = 1;
                    string ServiceLocation = (string)reader["ServiceLocation"];

                    byte[] DOB = (byte[])reader["DOB"];
                    byte[] SSN = (byte[])reader["SSN"];
                    byte[] PrimaryDisability = (byte[])reader["PrimaryDisability"];
                    byte[] SecondaryDisability = (byte[])reader["SecondaryDisability"];
                    byte[] Notes = (byte[])reader["Notes"];
                 
                 
                    byte[] EncKey = Utilities.EncDec3DES.GetKeyFromFile(
                                Properties.Settings.Default.KeyFile);

                    string strDOB = Utilities.EncDec3DES.DecryptData(EncKey, DOB);
                    string strSSN = Utilities.EncDec3DES.DecryptData(EncKey, SSN);
                    string strPrimaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, PrimaryDisability);
                    string strSecondaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, SecondaryDisability);
                    string strNotes = Utilities.EncDec3DES.DecryptData(EncKey, Notes);

                    VeteransDBClasses.obAddress Address = new VeteransDBClasses.obAddress();
                    Address.StreetAddress = StreetAddress;
                    Address.City = City;
                    Address.State = State;
                    Address.Zip = Zip;
                    Address.Phone1 = Phone1;
                    Address.Phone2 = Phone2;
                    Address.Fax = Fax;
                    Address.Email = Email;

                    VeteransDBClasses.obClient Client = new VeteransDBClasses.obClient();
                    Client.Address = Address;
                    Client.FirstName = FirstName;
                    Client.LastName = LastName;
                    Client.MiddleName = MiddleName;
                    Client.ClientID = ClientID;
                    Client.PrimaryDisability = strPrimaryDisability;
                    Client.SecondaryDisability = strSecondaryDisability;
                    Client.Notes = strNotes;
                    Client.ServiceLocation = ServiceLocation;
                    Client.SSN = strSSN;
                    Client.BirthDate = DateTime.Parse(strDOB);
                    Clients.Add(Client);
                }//while loop
            }//try            
            catch
            {
                Clients = null;
            }
            finally
            {
                conn.Close();
            }
            return Clients;
        }

        /// <summary>
        /// Returns a client by supplied client id
        /// </summary>
        /// <param name="ClientID">ID of the client</param>
        /// <returns>if a client is found returns the client, else null</returns>
        /// <seealso cref="obClient.cs"/>
        public static VeteransDBClasses.obClient GetClientByClientID(int ClientID)
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            VeteransDBClasses.obClient Client = new VeteransDBClasses.obClient();
            try
            {
                SqlCommand cmd = new SqlCommand("spClientGetClientByClientID", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ClientID",ClientID);
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();
                {
                    int iClientID = (int)reader["ClientID"];
                    string FirstName = (string)reader["FirstName"];
                    string LastName = (string)reader["LastName"];
                    string MiddleName = (string)reader["MiddleName"];
                    string StreetAddress = (string)reader["StreetAddress"];
                    string City = (string)reader["City"];
                    string State = (string)reader["State"];
                    string Zip = (string)reader["Zip"];
                    string Phone1 = (string)reader["Phone1"];
                    string Phone2 = (string)reader["Phone2"];
                    string Fax = (string)reader["Fax"];
                    string Email = (string)reader["Email"];
                    int AgentID = 1;
                    string ServiceLocation = (string)reader["ServiceLocation"];

                    byte[] DOB = (byte[])reader["DOB"];
                    byte[] SSN = (byte[])reader["SSN"];
                    byte[] PrimaryDisability = (byte[])reader["PrimaryDisability"];
                    byte[] SecondaryDisability = (byte[])reader["SecondaryDisability"];
                    byte[] Notes = (byte[])reader["Notes"];
                    byte[] EncKey = Utilities.EncDec3DES.GetKeyFromFile(
                                Properties.Settings.Default.KeyFile);

                    string strDOB = Utilities.EncDec3DES.DecryptData(EncKey, DOB);
                    string strSSN = Utilities.EncDec3DES.DecryptData(EncKey, SSN);
                    string strPrimaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, PrimaryDisability);
                    string strSecondaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, SecondaryDisability);
                    string strNotes = Utilities.EncDec3DES.DecryptData(EncKey, Notes);

                    VeteransDBClasses.obAddress Address = new VeteransDBClasses.obAddress();
                    Address.StreetAddress = StreetAddress;
                    Address.City = City;
                    Address.State = State;
                    Address.Zip = Zip;
                    Address.Phone1 = Phone1;
                    Address.Phone2 = Phone2;
                    Address.Fax = Fax;
                    Address.Email = Email;

                    Client.Address = Address;
                    Client.FirstName = FirstName;
                    Client.LastName = LastName;
                    Client.MiddleName = MiddleName;
                    Client.ClientID = iClientID;
                    Client.PrimaryDisability = strPrimaryDisability;
                    Client.SecondaryDisability = strSecondaryDisability;
                    Client.Notes = strNotes;
                    Client.ServiceLocation = ServiceLocation;
                    Client.SSN = strSSN;
                    Client.BirthDate = DateTime.Parse(strDOB);                  
                }
            }//try            
            catch
            {
                Client = null;
            }
            finally
            {
                conn.Close();
            }
            return Client;
        }
        /// <summary>
        /// Searches a client either using a last name of first name
        /// </summary>
        /// <param name="keyword">first name or last name</param>
        /// <returns>client is successfull; null in failure</returns>
        /// <seealso cref="VeteransDBClasses.obClient"/>
        public static VeteransDBClasses.obClient GetClientByFirstNameOrLastName(string keyword)
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            VeteransDBClasses.obClient Client = new VeteransDBClasses.obClient();
            try
            {
                SqlCommand cmd = new SqlCommand("ClientGetByFirstNameOrLastName", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@Keyword", keyword);
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();

                int iClientID = (int)reader["ClientID"];
                string FirstName = (string)reader["FirstName"];
                string LastName = (string)reader["LastName"];
                string MiddleName = (string)reader["MiddleName"];
                string StreetAddress = (string)reader["StreetAddress"];
                string City = (string)reader["City"];
                string State = (string)reader["State"];
                string Zip = (string)reader["Zip"];
                string Phone1 = (string)reader["Phone1"];
                string Phone2 = (string)reader["Phone2"];
                string Fax = (string)reader["Fax"];
                string Email = (string)reader["Email"];
                int AgentID = 1;
                string ServiceLocation = (string)reader["ServiceLocation"];

                byte[] DOB = (byte[])reader["DOB"];
                byte[] SSN = (byte[])reader["SSN"];
                byte[] PrimaryDisability = (byte[])reader["PrimaryDisability"];
                byte[] SecondaryDisability = (byte[])reader["SecondaryDisability"];
                byte[] Notes = (byte[])reader["Notes"];
                byte[] EncKey = Utilities.EncDec3DES.GetKeyFromFile(
                            Properties.Settings.Default.KeyFile);

                string strDOB = Utilities.EncDec3DES.DecryptData(EncKey, DOB);
                string strSSN = Utilities.EncDec3DES.DecryptData(EncKey, SSN);
                string strPrimaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, PrimaryDisability);
                string strSecondaryDisability = Utilities.EncDec3DES.DecryptData(EncKey, SecondaryDisability);
                string strNotes = Utilities.EncDec3DES.DecryptData(EncKey, Notes);

                VeteransDBClasses.obAddress Address = new VeteransDBClasses.obAddress();
                Address.StreetAddress = StreetAddress;
                Address.City = City;
                Address.State = State;
                Address.Zip = Zip;
                Address.Phone1 = Phone1;
                Address.Phone2 = Phone2;
                Address.Fax = Fax;
                Address.Email = Email;

                Client.Address = Address;
                Client.FirstName = FirstName;
                Client.LastName = LastName;
                Client.MiddleName = MiddleName;
                Client.ClientID = iClientID;
                Client.PrimaryDisability = strPrimaryDisability;
                Client.SecondaryDisability = strSecondaryDisability;
                Client.Notes = strNotes;
                Client.ServiceLocation = ServiceLocation;
                Client.SSN = strSSN;
                Client.BirthDate = DateTime.Parse(strDOB);                  
            }
            catch
            {
                Client = null;
            }
            finally
            {
                conn.Close();
            }

            return Client;
        }
    }

 

Tags:

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading



About the author

Volkan Uzun




E-mail me Send mail

Twitter

Calendar

<<  December 2008  >>
MoTuWeThFrSaSu
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

Flickr Badge

www.flickr.com
This is a Flickr badge showing public photos from volkanuzun. Make your own badge here.

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008

Sign in