public ActionResult Report()
        {
            var model = new ReportModel();
            var curProj = this.projRepo.FindOne(new ByIdSpecify<Project>(this.CurrentProjectId));
            model.Title = curProj.Title;
            model.Description = curProj.Description;
            model.CommandAmount = curProj.Jobs.Count;
            foreach (var job in curProj.Jobs)
            {
                var jobRepModel = new JobReportModel
                    {
                        Title = job.Title,
                        Description = job.Description,
                        Salary = job.Salary,
                        Department = job.Department.Title
                    };

                foreach (var jobApp in job.JobApplications)
                {
                    var canRepModel = new CandidateReportModel
                        {
                            LastName = jobApp.User.LastName,
                            FirstName = jobApp.User.FirstName,
                            MiddleName = jobApp.User.MiddleName,
                            HasSelected = jobApp.User.Jobs.Any(x => x.ProjectId == this.CurrentProjectId),
                            HasTested = jobApp.User.TestResults.Any(x=>jobApp.User.AssignedTests.Any(a=>a.Id == x.TestId))
                        };

                    // Calculate PERCENT MATCH JOB PROFILE SKILLS

                    var jobSkills = job.JobSkills;
                    var userSkills = jobApp.User.UsersSkills;
                    foreach (var jobSkill in jobSkills)
                    {
                        int userEsitmate = 0;
                        if (userSkills.Any(x => x.SkillId == jobSkill.SkillId))
                        {
                            userEsitmate = userSkills.Single(x => x.SkillId == jobSkill.SkillId).Estimate;
                        }

                        canRepModel.PercentMatchJobProfile += (userEsitmate - jobSkill.Estimate);
                    }

                    var totalJobSkillEst = jobSkills.Sum(x => x.Estimate);
                    var candPercentage = canRepModel.PercentMatchJobProfile * 100 / totalJobSkillEst;
                    canRepModel.PercentMatchJobProfile = (candPercentage < 0) ? 100 - Math.Abs(candPercentage) : candPercentage;

                    // Calculate TESTS RESULTS
                    var assignedTests = jobApp.User.AssignedTests;
                    var testCompleted = assignedTests.Count(assignedTest => jobApp.User.TestResults.Any(x => x.TestId == assignedTest.Id));
                    canRepModel.TestsCompleted = string.Format("{0} of {1}", testCompleted, assignedTests.Count);

                    // Test Results Details
                    var passedTestsResults = jobApp.User.TestResults.Where(x => assignedTests.Any(a => a.Id == x.TestId));

                    foreach (var testRes in passedTestsResults)
                    {
                        var totalQuestions = testRes.Test.Questions.Count;
                        var correctAnswers = testRes.ResultQuestions.Count(x => x.ResultAnswers.Any(a => a.IsCorrect && a.IsChoisen));
                        var res = new TestResultModel
                        {
                            Name = testRes.Test.Name,
                            Category = testRes.Test.Category.Name,
                            PercentCorrectAnswers = (Math.Round((double)correctAnswers / totalQuestions * 100, 2)).ToString(),
                            Result = string.Format("{0} of {1}", correctAnswers, totalQuestions)
                        };

                        canRepModel.TestResults.Add(res);
                    }

                    jobRepModel.Candidates.Add(canRepModel);
                }

                model.Jobs.Add(jobRepModel);
             }

            return new PdfResult(model);
        }
        public JsonResult GetTestResultsForCandidate(long id)
        {
            var candidate = this.usersRepo.FindOne(new ByIdSpecify<User>(id));

            var assignedTests = candidate.AssignedTests;
            var passedTestsResults = candidate.TestResults.Where(x => assignedTests.Any(a => a.Id == x.TestId));

            var model = new List<TestResultModel>();

            foreach (var testRes in passedTestsResults)
            {
                var totalQuestions = testRes.Test.Questions.Count;
                var correctAnswers = testRes.ResultQuestions.Count(x => x.ResultAnswers.Any(a => a.IsCorrect && a.IsChoisen));
                var res = new TestResultModel
                    {
                        Name = testRes.Test.Name,
                        Category = testRes.Test.Category.Name,
                        PercentCorrectAnswers = (Math.Round((double)correctAnswers/totalQuestions*100, 2)).ToString(),
                        Result = string.Format("{0} of {1}", correctAnswers, totalQuestions)
                    };
                model.Add(res);
            }

            return Json(new {Data = model, TotalCount = model.Count}, JsonRequestBehavior.AllowGet);
        }