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();
     }
 }
Пример #6
0
 /// <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);
 }
Пример #7
0
        /// <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;
        }