protected void btnApply_Click(object sender, EventArgs e)
        {
            string fileName = Path.GetFileName(CvApply.PostedFile.FileName);

            string Jobid = Request.QueryString["id"];
            string Empid = Request.QueryString["empId"];

            int JobidParsed = int.Parse(Jobid);
            int EmpidParsed = int.Parse(Empid);

            fileName = DateTime.Now.ToString() + fileName;

            fileName = fileName.Replace("/", " ").Replace("'\'", "").Replace(" ", "").Replace("-", "").Replace(":", "").Replace(";", "");

            CvApply.PostedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName);

            JobApplication UserAppliedForJob = new JobApplication();

            UserAppliedForJob.FullName = txtAppFullname.Text;
            UserAppliedForJob.ContactNumber = txtAppContactNumber.Text;
            Validations validations = new Validations();

            UserAppliedForJob.Email = txtEmail.Text;
            bool isValid = validations.EmailValidation(UserAppliedForJob.Email);
            if (!isValid)
            {
                txtEmail.Text = "Invalid Email";
            }
            UserAppliedForJob.Experience = txtRelvExp.Text;
            UserAppliedForJob.CoverLetter = txtCoverLetter.Text;
            UserAppliedForJob.UploadCvPath = fileName;
            UserAppliedForJob.JobIdApplied = JobidParsed;
            UserAppliedForJob.EmpidApplied = EmpidParsed;
            if (Session["JobseekerID"] != null)
            {
                UserAppliedForJob.JSId = (int)Session["JobseekerID"];
            }
            else
            {
                // all guests have jobseeker id of 1
                int noID = 1;
                UserAppliedForJob.JSId = noID;
            }

            if (isValid)
            {
                BLLRecruiterWebsiteManager ProcessJobApp = new BLLRecruiterWebsiteManager();

                bool check;

                check = ProcessJobApp.InsertJobApplication(UserAppliedForJob);

                Response.Redirect("~/index.aspx");
            }
        }
        // insert job application form the JobApply page. 

        public bool InsertJobApplication(JobApplication NewApp)
        {
            bool DidItWork;

            DAL.DALRecruiterWebsiteManager InsertNewApp = new DALRecruiterWebsiteManager();

            DidItWork = InsertNewApp.InsertJobApplication(NewApp);

           return DidItWork;

        }
        // insert job application

        public bool InsertJobApplication( JobApplication NewApp)
        {
            bool DidItWork = false;

            try
            {
                using (SqlConnection Cxn = new SqlConnection(CxnString))
                {
                    /*
                     BEWARE OF MIS-SPELLING ON STORED PROC. 
                     */

                    using (SqlCommand Cmd = new SqlCommand("InsertJobApplcation",Cxn))
                    {
                        Cmd.CommandType = CommandType.StoredProcedure;

                        SqlParameter InsertFullName = new SqlParameter("@FullName", SqlDbType.NVarChar, 50);
                        SqlParameter InsertContactNumber = new SqlParameter("@ContactNumber", SqlDbType.NVarChar, 50);
                        SqlParameter InsertEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50);
                        SqlParameter InsertExper = new SqlParameter("@Exper", SqlDbType.NVarChar, 50);
                        SqlParameter InsertCover = new SqlParameter("@CoverLetter", SqlDbType.NVarChar, 50);
                        SqlParameter InsertCvPath = new SqlParameter("@CvPath", SqlDbType.NVarChar, 50);
                        SqlParameter JobIdapplied = new SqlParameter("@JobIdapplied", SqlDbType.Int);
                        SqlParameter EmpIdapplied = new SqlParameter("@Empidapplied", SqlDbType.Int);
                        SqlParameter JSIdapplied = new SqlParameter("@JSIdapplied", SqlDbType.Int);

                        InsertFullName.Value = NewApp.FullName.ToString();
                        InsertContactNumber.Value = NewApp.ContactNumber.ToString();
                        InsertEmail.Value = NewApp.Email.ToString();
                        InsertExper.Value = NewApp.Experience.ToString();
                        InsertCover.Value = NewApp.CoverLetter.ToString();
                        InsertCvPath.Value = NewApp.UploadCvPath.ToString();
                        JobIdapplied.Value = NewApp.JobIdApplied;
                        EmpIdapplied.Value = NewApp.EmpidApplied;
                        JSIdapplied.Value = NewApp.JSId;

                        Cmd.Parameters.Add(InsertFullName);
                        Cmd.Parameters.Add(InsertContactNumber);
                        Cmd.Parameters.Add(InsertEmail);
                        Cmd.Parameters.Add(InsertExper);
                        Cmd.Parameters.Add(InsertCover);
                        Cmd.Parameters.Add(InsertCvPath);
                        Cmd.Parameters.Add(JobIdapplied);
                        Cmd.Parameters.Add(EmpIdapplied);
                        Cmd.Parameters.Add(JSIdapplied);

                        Cxn.Open();
                        int i = Cmd.ExecuteNonQuery();
                        if (i > 0)
                        {
                            DidItWork = true;
                        }
                        Cxn.Close();

                        
                            

                    }
                }
            }
            catch (SqlException ex )
            {
                
                throw;
            }


            return DidItWork;

        }
        // gets all the job applications form the database form teh Employer Profile

        public List<JobApplication> RequestJobApplicationsFormDB(int EmployerID)
        {
            List<JobApplication> ListofApplicants = new List<JobApplication>();

            try
            {
                using (SqlConnection Cxn = new SqlConnection(CxnString))
                {
                    using (SqlCommand Cmd = new SqlCommand("spGetJobApplicants",Cxn))
                    {
                        Cmd.CommandType = CommandType.StoredProcedure;

                        SqlParameter EmpIdParam = new SqlParameter("@EmpId", SqlDbType.Int);

                        EmpIdParam.Value = EmployerID;

                        Cmd.Parameters.Add(EmpIdParam);

                      

                        Cxn.Open();
                        dr = Cmd.ExecuteReader();

                        while (dr.Read())
                        {
                            JobApplication Applicant = new JobApplication();

                            string FullName = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_FullName)).ToString());
                            string ContactNumber = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_ContactNumber)).ToString());
                            string Email = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_Email)).ToString());
                            string phone = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_ContactNumber)).ToString());
                            string Exper = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_Experience)).ToString());
                            string CoverLetter = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_CoverLetter)).ToString());//SP_CoverLetter
                            string UploadPath = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_UploadCvPath)).ToString());
                            string JobId = (dr.GetValue(Convert.ToInt32(JobAppDetails.JobIdApplied)).ToString());
                            string EmpId = (dr.GetValue(Convert.ToInt32(JobAppDetails.EmpidApplied)).ToString());
                            string JSId = (dr.GetValue(Convert.ToInt32(JobAppDetails.JSidApplied)).ToString());

                            int JobIDParsed = int.Parse(JobId);
                            int EmpIDParsed = int.Parse(EmpId);
                            int JSIDParsed = int.Parse(JSId);


                            Applicant.FullName = FullName;
                            Applicant.ContactNumber = ContactNumber;
                            Applicant.Email = Email;
                            Applicant.Experience = Exper;
                            Applicant.CoverLetter = CoverLetter;
                            Applicant.UploadCvPath = UploadPath;
                            Applicant.JobIdApplied = JobIDParsed;
                            Applicant.EmpidApplied = EmpIDParsed;
                            Applicant.JSId = JSIDParsed;

                            

                            ListofApplicants.Add(Applicant);


                        }

                        dr.Close();
                        Cxn.Close();

                    }
                }
            }
            catch (SqlException ex)
            {
                
                throw;
            }



            return ListofApplicants;
            
        }
        // get list of active jobs applicantcations for Admin 

        public List<JobApplication> GetListOfActiveJobApplications()
        {
            List<JobApplication> ListOfJobApplication = new List<JobApplication>();

            try
            {

                using (SqlConnection Cxn = new SqlConnection(CxnString))
                {
                    using (SqlCommand Cmd = new SqlCommand("spGetAllJobApplicantAdmin", Cxn))
                    {
                        Cxn.Open();
                        dr = Cmd.ExecuteReader();

                        while (dr.Read())
                        {

                            JobApplication JobApplicant = new JobApplication();


                            string FullName = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_FullName)).ToString());
                            string ContactNumber = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_ContactNumber)).ToString());
                            string Email = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_Email)).ToString());
                            string Exper = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_Experience)).ToString());
                            string UploadPath = (dr.GetValue(Convert.ToInt32(JobAppDetails.SP_UploadCvPath)).ToString());
                            string JobId = (dr.GetValue(Convert.ToInt32(JobAppDetails.JobIdApplied)).ToString());
                            string EmpId = (dr.GetValue(Convert.ToInt32(JobAppDetails.EmpidApplied)).ToString());
                            string JSId = (dr.GetValue(Convert.ToInt32(JobAppDetails.JSidApplied)).ToString());

                            int JobIDParsed = int.Parse(JobId);
                            int EmpIDParsed = int.Parse(EmpId);
                            int JSIDParsed = int.Parse(JSId);


                            JobApplicant.FullName = FullName;
                            JobApplicant.ContactNumber = ContactNumber;
                            JobApplicant.Email = Email;
                            JobApplicant.Experience = Exper;
                            JobApplicant.UploadCvPath = UploadPath;
                            JobApplicant.JobIdApplied = JobIDParsed;
                            JobApplicant.EmpidApplied = EmpIDParsed;
                            JobApplicant.JSId = JSIDParsed;



                            ListOfJobApplication.Add(JobApplicant);
                            
                        }

                        Cxn.Close();
                        dr.Close();
                    }                 
                }

            }
            catch (SqlException ex)
            {

                throw;
            }

            return ListOfJobApplication;
        }