private void LoadKillerQuestions(int jobApplicationId) { var killerQuestions = new KillerQuestions().GetKillerQuestionsAnswersForCandidate(jobApplicationId).ToList(); if (killerQuestions.Count == 0) { // hide killer questions divKillerQuestions.Visible = false; no_items.Visible = true; //hide score on modal ScriptManager.RegisterStartupScript(this, this.GetType(), "hide_score", "hideScoreOnModal();", true); } else { // bind killer questions no_items.Visible = false; divKillerQuestions.Visible = true; rptKillerQuestions.DataSource = killerQuestions; rptKillerQuestions.DataBind(); } }
// ReSharper disable once FunctionComplexityOverflow void LoadVacancy() { var job = new Jobs().GetJob(Convert.ToInt32(lblJobId.Text)); if (job.JobId > 0) { lblJobId.Text = job.JobId + ""; txtRef.Text = job.Ref; txtTitle.Text = job.JobTitle; txtLocationDescription.Text = job.JobLocation; ddlJobType.SelectedValue = job.JobType; ddlHours.SelectedValue = job.ContractType; txtSalaryMin.Text = job.MinSalary + ""; txtSalaryMax.Text = job.MaxSalary + ""; txtHoursPerWeek.Text = job.HoursOrDaysPerWeek.ToString(); ddlSalaryType.SelectedValue = job.SalaryType; txtBenefits.Text = job.Benefits; txtDescription.Text = job.JobDescription; txtOverview.Text = job.Overview; txtSelectedClient.Text = job.ClientId.ToString(); txtClient.Text = job.ClientName; if (job.StartDate.ToString() != "") txtStartDate.Text = Convert.ToDateTime(job.StartDate).ToString("dd/MM/yyyy"); if (job.ExpiryDate.ToString() != "") txtExpiryDate.Text = Convert.ToDateTime(job.ExpiryDate).ToString("dd/MM/yyyy"); txtNotificationEmail.Text = job.NotificationEmail; // archived rbtnArchivedYes.Checked = job.Archived; rbtnArchivedNo.Checked = !job.Archived; // publised rbtnPublichedYes.Checked = job.Published; rbtnPublichedNo.Checked = !job.Published; //recruitment manager ddlRecruitmentManager.SelectedValue = job.Manager + ""; //all users access chbAllUserAccess.Checked = job.AllUserAccess; //hide and show select user panel if (job.AllUserAccess) divSelectUserAccess.Attributes.Add("style", "display:none"); else divSelectUserAccess.Attributes.Add("style", "display:block"); //sectors foreach (var id in job.SectorIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { foreach (var chbSector in rptSector.Items.Cast<RepeaterItem>().Select(item => (HtmlInputCheckBox)item.FindControl("chbSector")).Where(chbSector => int.Parse(chbSector.Attributes["data-id"]) == int.Parse(id))) { chbSector.Checked = true; break; } } rbtnUKLocationsYes.Checked = (job.SearchLocationType.ToLower().Equals("uk")); rbtnOtherCountriesNo.Checked = !(job.SearchLocationType.ToLower().Equals("uk")); //locations if (job.Locations != null) { if (rbtnUKLocationsYes.Checked) { //bind uk locations rptLocations.DataSource = job.Locations; rptLocations.DataBind(); } else { rptOtherLocations.DataSource = job.Locations; rptOtherLocations.DataBind(); } } //users foreach (var id in job.JobUserIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { foreach (RepeaterItem item in rptUsers.Items) { HtmlInputCheckBox chbUser = (HtmlInputCheckBox)item.FindControl("chbUser"); if (int.Parse(chbUser.Attributes["data-id"]) == int.Parse(id)) { chbUser.Checked = true; break; } } } //killer questions var kqList = new KillerQuestions().GetKillerQuestionsForJob(job.JobId); if (kqList != null) { rptKillerQuestions.DataSource = kqList; rptKillerQuestions.DataBind(); } //documents var docList = Documents.GetDocumentByDocType(new[] { 1 }, job.JobId).ToList(); rptDocuments.DataSource = docList; rptDocuments.DataBind(); //images var imgList = Documents.GetDocumentByDocType(new[] { 2 }, job.JobId).ToList(); if (imgList.Any()) { { div_uploaded_logo.Attributes.Remove("class"); div_uploaded_logo.Attributes.Add("class", "uploaded-logo"); img_uploaded_logo.Attributes.Add("src", imgList.First().DownloadUrl); btn_delete_logo.Attributes.Add("data-name", imgList.First().DocGuid); } } } }
private bool ValidateKillerQuestionAnswers() { foreach (RepeaterItem item in rptKillerQuestions.Items) { var lblQuestionid = item.FindControl("lblQuestionId") as Label; if (lblQuestionid != null) { var questionId = Convert.ToInt32(lblQuestionid.Text); var question = new KillerQuestions().GetKillerQuestion(questionId); if (question != null) { if (question.Answers == null || question.Answers.Count == 0) { //open question - show text box var txtOpenQuestion = item.FindControl("txtOpenQuestion") as TextBox; if (txtOpenQuestion != null && !question.ExcludeFromScoring && string.IsNullOrEmpty(txtOpenQuestion.Text)) { return false; } } else { if (question.SingleChoice) { // single choice - radio buttons var rbtLstKillerQuestion = item.FindControl("rbtLstKillerQuestion") as RadioButtonList; if (rbtLstKillerQuestion != null) { var ans = rbtLstKillerQuestion.SelectedItem; if (ans == null) { return false; } } } else { //multiple choice - check boxes var chkMultichoice = item.FindControl("chkMultichoice") as CheckBoxList; if (chkMultichoice != null) { var answers = chkMultichoice.Items.Cast<ListItem>() .Count(li => li.Selected); if (answers == 0) { return false; } } } } } } } return true; }
private void SaveKillerQuestion(int jobApplicationId) { var questions = new List<KillerQuestion>(); foreach (RepeaterItem item in rptKillerQuestions.Items) { var lblQuestionid = item.FindControl("lblQuestionId") as Label; if (lblQuestionid != null) { var questionId = Convert.ToInt32(lblQuestionid.Text); var question = new KillerQuestions().GetKillerQuestion(questionId); if (question != null) { question.CandidateAnswers = new List<KillerQuestionCandidateAnswer>(); if (question.Answers == null || question.Answers.Count == 0) { //open question - show text box var txtOpenQuestion = item.FindControl("txtOpenQuestion") as TextBox; if (txtOpenQuestion != null) question.CandidateAnswers.Add(new KillerQuestionCandidateAnswer { OpenQuestionAnswer = txtOpenQuestion.Text, JobApplicationId = jobApplicationId }); } else { if (question.SingleChoice) { // single choice - radio buttons var rbtLstKillerQuestion = item.FindControl("rbtLstKillerQuestion") as RadioButtonList; if (rbtLstKillerQuestion != null) { var ans = rbtLstKillerQuestion.SelectedItem.Value; question.CandidateAnswers.Add(new KillerQuestionCandidateAnswer { AnswerId = Convert.ToInt32(ans), JobApplicationId = jobApplicationId }); } } else { //multiple choice - check boxes var chkMultichoice = item.FindControl("chkMultichoice") as CheckBoxList; if (chkMultichoice != null) { var answers = chkMultichoice.Items.Cast<ListItem>() .Where(li => li.Selected) .Select(t => new KillerQuestionCandidateAnswer { AnswerId = Convert.ToInt32(t.Value), JobApplicationId = jobApplicationId }); question.CandidateAnswers.AddRange(answers); } } } } questions.Add(question); } } //save the answers and calculate the score new JobApplications().SaveKillerQuestionAnswersForJob(jobApplicationId, questions); }
private void LoadKillerQuestions(int jobId) { var killerQuestions = new KillerQuestions().GetKillerQuestionsForJob(jobId).ToList(); if (killerQuestions.Count == 0) { // hide killerquestions divKillerQuestions.Visible = false; } else { // bind killer questions divKillerQuestions.Visible = true; rptKillerQuestions.DataSource = killerQuestions; rptKillerQuestions.DataBind(); } }
/// <summary> /// This fucntion calculates the score for the application /// </summary> /// <param name="jobApplicationId"></param> /// <returns></returns> public double CalculateKillerQuestionScoreForApplication(int jobApplicationId) { var finalTotalQuestionScore = 0.0f; // get all the questions which consider for scoreing with candidate answers var killerQuestions = new KillerQuestions().GetKillerQuestionsAnswersForCandidate(jobApplicationId).Where(t => !t.ExcludeFromScoring).ToList(); if (killerQuestions.Count <= 0) return -1; foreach (var kQuestion in killerQuestions) { // add the total scores finalTotalQuestionScore += (float)CalculateScoreForQuestion(kQuestion); } // get final average score var finslSocre = finalTotalQuestionScore / killerQuestions.Count; return Math.Round(finslSocre, 2); }
/// <summary> /// This function add/update job details /// </summary> /// <param name="jobDetails"></param> /// <returns></returns> // ReSharper disable once FunctionComplexityOverflow public PostPutResponse AddUpdateJob(Job jobDetails) { var context = new dbDataContext(); int jobId = jobDetails.JobId; var response = new PostPutResponse { DisplayError = "", IsError = false, ObjectId = -1 }; // Create or retrieve the job var job = context.tbl_Jobs.FirstOrDefault(t => t.JobId == jobDetails.JobId) ?? new tbl_Job(); // Assign job values job.JobTitle = jobDetails.JobTitle; job.ClientId = jobDetails.ClientId; job.Ref = jobDetails.Ref; job.Benefits = jobDetails.Benefits; job.Overview = jobDetails.Overview; job.JobDescription = jobDetails.JobDescription; job.JobLocation = jobDetails.JobLocation; job.JobApplicationPageLink = jobDetails.JobApplicationPageLink; job.Published = jobDetails.Published; job.Archived = jobDetails.Archived; job.Deleted = jobDetails.Deleted; job.NotificationEmail = jobDetails.NotificationEmail; job.JobType = jobDetails.JobType; job.ContractType = jobDetails.ContractType; job.PostedBy = jobDetails.PostedBy; job.ExpiryDate = jobDetails.ExpiryDate; job.LastUpdatedDate = DateTime.Now; job.Manager = jobDetails.Manager; job.SalaryType = jobDetails.SalaryType; job.MinSalary = jobDetails.MinSalary; job.MaxSalary = jobDetails.MaxSalary; job.SearchLocationType = jobDetails.SearchLocationType; job.HoursOrDaysPerWeek = jobDetails.HoursOrDaysPerWeek; job.MinSalaryAnnum = CalculateAnnualSalary(job.MinSalary, jobDetails.SalaryType, jobDetails.HoursOrDaysPerWeek); job.MaxSalaryAnnum = CalculateAnnualSalary(job.MaxSalary, jobDetails.SalaryType, jobDetails.HoursOrDaysPerWeek); if (!(jobDetails.SalaryType == "hour" || jobDetails.SalaryType == "day")) job.HoursOrDaysPerWeek = 0; job.StartDate = jobDetails.StartDate; job.AllUserAccess = jobDetails.AllUserAccess; try { // Add/Update Job if (job.JobId <= 0) { job.RefId = Guid.NewGuid().ToString(); job.CreatedDate = DateTime.Now; context.tbl_Jobs.InsertOnSubmit(job); } context.SubmitChanges(); } catch (Exception e) { response.ActualError = e.ToString(); response.DisplayError = "Error " + (jobId > 0 ? "updating" : "adding") + " the job!"; response.IsError = true; } if (job.JobId > 0) { jobDetails.JobId = job.JobId; // Save Job Locations context.tbl_JobLocations.DeleteAllOnSubmit(context.tbl_JobLocations.Where(t => t.JobId == job.JobId)); context.SubmitChanges(); if (jobDetails.LocationIds != null) { foreach ( var locId in jobDetails.LocationIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { context.tbl_JobLocations.InsertOnSubmit(new tbl_JobLocation { JobId = job.JobId, LocationId = int.Parse(locId), Type = job.SearchLocationType }); } context.SubmitChanges(); } // Save Job Sectors context.tbl_JobSectors.DeleteAllOnSubmit(context.tbl_JobSectors.Where(t => t.JobId == job.JobId)); context.SubmitChanges(); if (jobDetails.SectorIds != null) { foreach (var secId in jobDetails.SectorIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries) ) { context.tbl_JobSectors.InsertOnSubmit(new tbl_JobSector { JobId = job.JobId, SectorId = int.Parse(secId) }); } context.SubmitChanges(); } // Save Job Users context.tbl_JobUsers.DeleteAllOnSubmit(context.tbl_JobUsers.Where(t => t.JobId == job.JobId)); context.SubmitChanges(); if (jobDetails.JobUserIds != null) { foreach (var userId in jobDetails.JobUserIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { context.tbl_JobUsers.InsertOnSubmit(new tbl_JobUser { JobId = job.JobId, UserId = int.Parse(userId) }); } context.SubmitChanges(); } // Save Job Killer Questions if (jobDetails.KillerQuestions != null && jobDetails.KillerQuestions.ToList().Count > 0) { var objKillerQuestions = new KillerQuestions(); foreach (var killerQuestion in jobDetails.KillerQuestions) { killerQuestion.JobId = job.JobId; objKillerQuestions.AddEditKillerQuestion(killerQuestion); } // re-calculate the killer question score for applications objKillerQuestions.CalculateKillerQuestionScoreForJob(jobDetails.JobId); } // Save Documents if (jobDetails.Documents != null) { jobDetails.Documents.ToList().ForEach(t => t.RefId = job.JobId); new Documents().SaveDocuments(jobDetails.Documents); } // save job - job boards if (jobDetails.JobBoards != null) { SaveJobJobBoards(jobDetails.JobBoards, jobDetails, job.JobId); } //add history new Histories().AddHistory(new History { RefId = job.JobId, RefType = "Job", ClientUserId = jobDetails.ClientUserId, TypeId = jobId < 1 ? 5 : 6, SubRefType = "ClientUser", SubRefId = jobDetails.ClientUserId }); // If new job send notification email to client if (jobId < 1) { // TODO - Send Notification Email } response.ObjectId = jobDetails.JobId; } return response; }