private async Task <VacancyAlghorythmModel> GetVacancyFromDBAsync(Guid id) { VacancyAlghorythmModel vacancy = new VacancyAlghorythmModel(); VacancyServiceModel vacancy2 = await _vacancyService.GetByIdWithSkillAsync(id); vacancy.Id = vacancy2.Id; vacancy.Qualification = vacancy2.Qualification.Value; foreach (var sr in vacancy2.SkillRequirements) { vacancy.SkillRequests.Add(new SkillRequestAlghorythmModel() { Expirience = sr.Experience.Value, KnowledgeLevel = sr.KnowledgeLevel .SkillKnowledgeTypes .Where(i => i.KnowledgeLevelId == sr.KnowledgeLevelId) .FirstOrDefault().Value, Weight = (int)sr.Weight, Skill = new SkillAlghorythmModel() { Id = sr.SkillId, SkillType = sr.Skill.SkillType.Value, SubSkills = MapSubSkills(sr.Skill) } }); } return(vacancy); }
public RatingCounterTests(AlghorythmTestSeed testSeed) { _ratingCounter = testSeed.RatingCounter; _cV = testSeed.CV; _vacancy = testSeed.Vacancy; _splitedSkills = testSeed.SkillsMatcher.MatchSkills(testSeed.SkillKnowledge, testSeed.SplitedSkills); }
private void ConfigVacancy() { Vacancy = new VacancyAlghorythmModel() { Id = new Guid("12aab402-50c0-424a-aae0-4cf89a3d577b"), Qualification = INTERMEDIATE_QUALIFICATION_VALUE, SkillRequests = SkillRequests }; }
public int GetRating(VacancyAlghorythmModel vacancy, CVAlghorythmModel cV) { int middleWeight = FindMiddleWeight(vacancy.SkillRequests); var splitedSkills = _skillSplitter.SplitSkills(vacancy.SkillRequests, middleWeight); splitedSkills = _skillsMatcher.MatchSkills(cV.SkillKnowledges, splitedSkills); return(_ratingCounter.CountRating(splitedSkills, cV, vacancy, middleWeight)); }
private int CountRatingWithQualification(int raiting, CVAlghorythmModel cv , VacancyAlghorythmModel vacancy) { if (cv.Qualification < vacancy.Qualification) { raiting = raiting - raiting * (vacancy.Qualification - cv.Qualification) * _qualificationScaleStep / PERCENT_DIVIDER; } else if (cv.Qualification > vacancy.Qualification) { raiting = raiting - raiting * (cv.Qualification - vacancy.Qualification) * _qualificationScaleStep / PERCENT_DIVIDER; } return(raiting); }
public List <IdAndRating> GetCVsRating(VacancyAlghorythmModel vacancy, IEnumerable <CVAlghorythmModel> cVs) { List <IdAndRating> cvsByRaiting = new List <IdAndRating>(); int middleWeight = FindMiddleWeight(vacancy.SkillRequests); var splitedSkills = _skillSplitter.SplitSkills(vacancy.SkillRequests, middleWeight); int rating; foreach (CVAlghorythmModel cV in cVs) { splitedSkills = _skillsMatcher.MatchSkills(cV.SkillKnowledges, splitedSkills); rating = _ratingCounter.CountRating(splitedSkills, cV, vacancy, middleWeight); cvsByRaiting.Add(new IdAndRating() { Id = cV.Id, Rating = rating }); splitedSkills.ClearCV(); } cvsByRaiting = cvsByRaiting.OrderByDescending(x => x.Rating).ToList(); return(cvsByRaiting); }
public int CountRating(SplitedSkillsAlghorythmModel splitedSkills, CVAlghorythmModel cv, VacancyAlghorythmModel vacancy , int middleWeight) { int rating = 1; rating += CountOtherSkillScore(splitedSkills.SoftSkills, _softKnowledgeScaleStep); rating += CountMainSkillScore(splitedSkills.MainSkills); rating += CountOtherSkillScore(splitedSkills.HardSkills, _hardKnowledgeScaleStep); rating += CountLanguageSkillScore(splitedSkills, middleWeight); rating = CountRatingWithQualification(rating, cv, vacancy); rating = RatingToZeroIfLess(rating); return(rating); }