Exemple #1
0
        public async Task <IEnumerable <AlghorythmResponseServiceModel> > GetCVsByVacancy(Guid vacancyId)
        {
            var vacansy = await GetVacancyFromDBAsync(vacancyId);

            var qualifications = new List <Qualification>(await _qualificationService.GetAllAsync());
            var cVs            = new List <CVServiceModel>(await _cVService.GetAllAsync());
            var skillTypes     = new List <SkillType>(await _skillTypeService.GetAllAsync());

            List <CVAlghorythmModel> algCVs = new List <CVAlghorythmModel>();

            var knowledgeScaleSteps = new KnowledgeScaleStepsAlgorithmModel()
            {
                HardKnowledgeScaleStep     = PERCENT_DIVIDER / skillTypes[0].SkillKnowledgeTypes.Count,
                SoftKnowledgeScaleStep     = PERCENT_DIVIDER / skillTypes[1].SkillKnowledgeTypes.Count,
                LanguageKnowledgeScaleStep = PERCENT_DIVIDER / skillTypes[2].SkillKnowledgeTypes.Count,
                QualificationScaleStep     = PERCENT_DIVIDER / qualifications.Count
            };
            var skillTypeValues = new SkillTypeValuesAlgorithmModel()
            {
                SoftSkillsValue     = skillTypes[1].Value,
                HardSkillsValue     = skillTypes[0].Value,
                LanguageSkillsValue = skillTypes[2].Value
            };

            _alghorythm = _alghorythmBuilder.GetScoreAlghorythm(
                _mapper.Map <SkillTypeValuesAlgorithmModel, SkillTypeValues>(skillTypeValues),
                _mapper.Map <KnowledgeScaleStepsAlgorithmModel, KnowledgeScaleSteps>(knowledgeScaleSteps));

            for (int i = 0; i < cVs.Count; i++)
            {
                algCVs.Add(new CVAlghorythmModel());

                algCVs.Last().Id            = cVs[i].Id;
                algCVs.Last().Qualification = qualifications
                                              .FirstOrDefault(q => q.Id == cVs[i].QualificationId).Value;
                algCVs.Last().SkillKnowledges = new List <SkillKnowledgeAlghorythmModel>();

                foreach (var sk in cVs[i].SkillKnowledges)
                {
                    algCVs[i].SkillKnowledges.Add(new SkillKnowledgeAlghorythmModel()
                    {
                        KnowledgeLevel = sk.KnowledgeLevel
                                         .SkillKnowledgeTypes
                                         .Where(i => i.KnowledgeLevelId == sk.KnowledgeLevelId)
                                         .FirstOrDefault().Value,
                        Expirience = sk.Experience.Value,
                        Skill      = new SkillAlghorythmModel()
                        {
                            Id        = sk.SkillId,
                            SubSkills = MapSubSkills(sk.Skill)
                        }
                    });
                }
            }

            var alghResponse = new List <AlghorythmResponseServiceModel>(_mapper.Map <IEnumerable <IdAndRating>
                                                                                      , IEnumerable <AlghorythmResponseServiceModel> >(_alghorythm.GetCVsRating(vacansy, algCVs)));

            return(FindCVTitle(cVs, alghResponse));
        }