Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public RatingCounterTests(AlghorythmTestSeed testSeed)
 {
     _ratingCounter = testSeed.RatingCounter;
     _cV            = testSeed.CV;
     _vacancy       = testSeed.Vacancy;
     _splitedSkills = testSeed.SkillsMatcher.MatchSkills(testSeed.SkillKnowledge, testSeed.SplitedSkills);
 }
Ejemplo n.º 3
0
 private void ConfigVacancy()
 {
     Vacancy = new VacancyAlghorythmModel()
     {
         Id            = new Guid("12aab402-50c0-424a-aae0-4cf89a3d577b"),
         Qualification = INTERMEDIATE_QUALIFICATION_VALUE,
         SkillRequests = SkillRequests
     };
 }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }