private void UpdateTable() { using (var db = new DBParsingEntities1()) { var resumeDS = db.Resume.ToArray(); resumeDataGridView.DataSource = resumeDS; } }
private void DataSet() { txtURL.Text = "https://hh.ru/resume/" + hashTextBox.Text; ClearList(); using (var db = new DBParsingEntities1()) { var resume = db.Resume.Find(hashTextBox.Text); var ResumeLang = resume.Language.ToArray(); var ResumeSkills = resume.Skills.ToArray(); var ResumeSpec = resume.Spec.ToArray(); for (int l = 0; l < ResumeLang.Length; l++) { listLang.Items.Add(ResumeLang[l].Language1.ToString()); } for (int l = 0; l < ResumeSkills.Length; l++) { listSkills.Items.Add(ResumeSkills[l].Skill.ToString()); } for (int l = 0; l < ResumeSpec.Length; l++) { listSpec.Items.Add(ResumeSpec[l].Specialization.ToString()); } } }
public async Task ReadResume(int Salary, List <string> ResumeHash) { using (var db = new DBParsingEntities1()) { var ResumeTable = db.Resume; var LangTable = db.Language; var SpecTable = db.Spec; var SkillTable = db.Skills; var sredSalary = Salary / ResumeHash.Count; var startSalary = sredSalary * 0.9; var endSalary = sredSalary * 1.1; for (int id = 0; id < ResumeHash.Count; id++) { var urlPage = "https://hh.ru/resume/" + ResumeHash[id]; var httpClientPage = new HttpClient(); var htmlPage = await httpClientPage.GetStringAsync(urlPage); var htmlPageDocument = new HtmlAgilityPack.HtmlDocument(); htmlPageDocument.LoadHtml(htmlPage); //контейнер резюме var PageList = htmlPageDocument.DocumentNode.Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("resume-applicant")).ToList(); var CompensationBlock = PageList[0].Descendants("span").Where(node => node.GetAttributeValue("class", "").Equals("resume-block__salary")).ToList(); var Compensation = CompensationBlock[0].FirstChild.InnerText.ToString(); Compensation = Regex.Replace(Compensation, @"\s*", "").Trim(); var SalaryResume = Convert.ToInt32(Compensation.Remove(Compensation.IndexOf('р'))); //если входит в +-10% от средней if (SalaryResume >= startSalary && SalaryResume <= endSalary && await ResumeTable.FindAsync(ResumeHash[id]) == null) { Resume resume = new Resume(); resume.Hash = ResumeHash[id]; resume.Salary = SalaryResume; /////////////////Шапка резюме//////////////// var HeaderBlock = PageList[0].Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("resume-header-block")).ToList(); if (HeaderBlock[0].InnerHtml.Contains("gender")) { resume.Gender = HeaderBlock[0].Descendants("span").Where(node => node.GetAttributeValue("itemprop", "").Equals("gender")).FirstOrDefault().InnerText; } //получаем дату if (HeaderBlock[0].InnerHtml.Contains("birthDate")) { var HeaderMainInfoDataList = HeaderBlock[0].Descendants("meta").Where(node => node.GetAttributeValue("itemprop", "").Equals("birthDate")).ToList(); resume.Birthday = Convert.ToDateTime(HeaderMainInfoDataList[0].GetAttributeValue("content", "").ToString()); } //получаем место if (HeaderBlock[0].InnerHtml.Contains("addressLocality")) { resume.Address = HeaderBlock[0].Descendants("span").Where(node => node.GetAttributeValue("itemprop", "").Equals("addressLocality")).FirstOrDefault().InnerText; } ///////////////////////Основная часть резюме////////////////////// var MainBlock = PageList[0].Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("resume-wrapper")).ToList(); //должность if (MainBlock[0].InnerHtml.Contains("resume-block-title-position")) { resume.Position = MainBlock[0].Descendants("span").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-title-position")).FirstOrDefault().InnerText; } var TimeTableList = MainBlock[0].Descendants("p").ToList(); if (TimeTableList[0].InnerText.Contains("Занятость:")) { resume.Employment = TimeTableList.FindAll(nat => nat.InnerText.Contains("Занятость")).FirstOrDefault().InnerText.ToString(); } if (TimeTableList[1].InnerText.Contains("График")) { resume.WorkTime = TimeTableList[1].FirstChild.InnerText.ToString(); } //опыт работы if (MainBlock[0].InnerHtml.Contains("worksFor")) { var Experience = MainBlock[0].Descendants("div").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-experience")).ToList(); //Список предыдущих работ if (Experience.Count > 0) { var WorkExperience = Experience[0].Descendants("span").FirstOrDefault().InnerText.Trim().ToString(); resume.Experience = WorkExperience; } } //Обо мне if (MainBlock[0].InnerHtml.Contains("resume-block-skills")) { var Skills = MainBlock[0].Descendants("div").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-skills")).FirstOrDefault().InnerText.ToString(); resume.Info = Skills; } //образование if (MainBlock[0].InnerHtml.Contains("resume-block-education")) { var EducationBlok = MainBlock[0].Descendants("div").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-education")).ToList(); if (EducationBlok.Count > 0) { string Education = string.Empty; var EducationDegree = EducationBlok[0].Descendants("span").Where(node => node.GetAttributeValue("class", "").Equals("resume-block__title-text resume-block__title-text_sub")).FirstOrDefault().InnerText.ToString(); if (EducationBlok[0].InnerHtml.Contains("resume-block-item-gap")) { Education = EducationBlok[0].Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("resume-block-item-gap")).FirstOrDefault().InnerText.ToString(); } else { Education = EducationBlok[0].Descendants("p").FirstOrDefault().InnerText.ToString(); } Education = Education.Insert(4, " "); resume.Education = EducationDegree + " " + Education; } } //специализация if (MainBlock[0].InnerHtml.Contains("resume-block-position-specialization")) { var Specialization = MainBlock[0].Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("bloko-gap bloko-gap_bottom")).ToList(); if (Specialization.Count > 0) { var SpecializationsList = Specialization[0].Descendants("li").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-position-specialization")).ToList(); //список специализаций for (int i = 0; i < SpecializationsList.Count; i++) { Spec spec = new Spec(); var PromSpec = SpecializationsList[i].InnerText.Trim().ToString(); if (await SpecTable.AnyAsync(s => s.Specialization == PromSpec) == false) { spec.Specialization = PromSpec; db.Spec.Add(spec); resume.Spec.Add(spec); } else { spec = await SpecTable.FirstOrDefaultAsync(s => s.Specialization == PromSpec); resume.Spec.Add(spec); } await db.SaveChangesAsync(); } } } //ключевые навыки if (MainBlock[0].InnerHtml.Contains("skills-table")) { var SkillsTable = MainBlock[0].Descendants("div").Where(node => node.GetAttributeValue("data-qa", "").Equals("skills-table")).ToList(); if (SkillsTable.Count > 0) { var SkillsList = SkillsTable[0].Descendants("span").Where(node => node.GetAttributeValue("data-qa", "").Equals("bloko-tag_inline")).ToList(); for (int s = 0; s < SkillsList.Count; s++) { Skills skills = new Skills(); var PromSkill = SkillsList[s].Descendants("span").Where(node => node.GetAttributeValue("class", "").Equals("Bloko-TagList-Text")).FirstOrDefault().InnerText.Trim().ToString(); if (await SkillTable.AnyAsync(q => q.Skill == PromSkill) == false) { skills.Skill = PromSkill; db.Skills.Add(skills); resume.Skills.Add(skills); } else { skills = await SkillTable.FirstOrDefaultAsync(q => q.Skill == PromSkill); resume.Skills.Add(skills); } await db.SaveChangesAsync(); } } } //языки if (MainBlock[0].InnerHtml.Contains("resume-block-language-item")) { var Languages = MainBlock[0].Descendants("p").Where(node => node.GetAttributeValue("data-qa", "").Equals("resume-block-language-item")).ToList(); if (Languages.Count > 0) { for (int l = 0; l < Languages.Count; l++) { Language lang = new Language(); var PromLang = Languages[l].FirstChild.InnerText.Trim().ToString(); if (await LangTable.AnyAsync(q => q.Language1 == PromLang) == false) { lang.Language1 = PromLang; db.Language.Add(lang); resume.Language.Add(lang); } else { lang = await LangTable.FirstOrDefaultAsync(q => q.Language1 == PromLang); resume.Language.Add(lang); } await db.SaveChangesAsync(); } } } db.Resume.Add(resume); await db.SaveChangesAsync(); } else { } } } }
private void btn_Search_Click(object sender, EventArgs e) { btn_CancelSearch.Enabled = true; using (var db = new DBParsingEntities1()) { var resume = db.Resume; List <Resume> EqualList = new List <Resume>(); if (SearchBox.SelectedIndex == 0) //Salary { foreach (var r in resume) { if (r.Salary.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 1) //Gender { foreach (var r in resume) { if (r.Gender.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 2) //Address { foreach (var r in resume) { if (r.Address.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 3) //Position { foreach (var r in resume) { if (r.Position.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 4) //Employment { foreach (var r in resume) { if (r.Employment.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 5) //Work Time { foreach (var r in resume) { if (r.WorkTime.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 6) //Education { foreach (var r in resume) { if (r.Education.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } if (SearchBox.SelectedIndex == 7) //Lang { foreach (var r in resume) { var ResumeLang = r.Language.ToArray(); for (int l = 0; l < ResumeLang.Length; l++) { if (ResumeLang[l].Language1.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } } if (SearchBox.SelectedIndex == 8) //Skills { foreach (var r in resume) { var ResumeSkills = r.Skills.ToArray(); for (int l = 0; l < ResumeSkills.Length; l++) { if (ResumeSkills[l].Skill.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } } if (SearchBox.SelectedIndex == 9) //Spec { foreach (var r in resume) { var ResumeSpec = r.Spec.ToArray(); for (int l = 0; l < ResumeSpec.Length; l++) { if (ResumeSpec[l].Specialization.ToString() == EqualsBox.Text) { EqualList.Add(r); } } } } resumeDataGridView.DataSource = EqualList; } }
private void SearchBox_SelectedValueChanged(object sender, EventArgs e) { using (var db = new DBParsingEntities1()) { var resume = db.Resume; EqualsBox.Items.Clear(); List <string> EqualList = new List <string>(); if (SearchBox.SelectedIndex == 0) //Salary { foreach (var r in resume) { EqualList.Add(r.Salary.ToString()); } } if (SearchBox.SelectedIndex == 1) //Gender { foreach (var r in resume) { EqualList.Add(r.Gender.ToString()); } } if (SearchBox.SelectedIndex == 2) //Address { foreach (var r in resume) { EqualList.Add(r.Address.ToString()); } } if (SearchBox.SelectedIndex == 3) //Position { foreach (var r in resume) { EqualList.Add(r.Position.ToString()); } } if (SearchBox.SelectedIndex == 4) //Employment { foreach (var r in resume) { EqualList.Add(r.Employment.ToString()); } } if (SearchBox.SelectedIndex == 5) //Work Time { foreach (var r in resume) { EqualList.Add(r.WorkTime.ToString()); } } if (SearchBox.SelectedIndex == 6) //Education { foreach (var r in resume) { EqualList.Add(r.Education.ToString()); } } if (SearchBox.SelectedIndex == 7) //Lang { foreach (var r in resume) { var ResumeLang = r.Language.ToArray(); for (int l = 0; l < ResumeLang.Length; l++) { EqualList.Add(ResumeLang[l].Language1.ToString()); } } } if (SearchBox.SelectedIndex == 8) //Skills { foreach (var r in resume) { var ResumeSkills = r.Skills.ToArray(); for (int l = 0; l < ResumeSkills.Length; l++) { EqualList.Add(ResumeSkills[l].Skill.ToString()); } } } if (SearchBox.SelectedIndex == 9) //Spec { foreach (var r in resume) { var ResumeSpec = r.Spec.ToArray(); for (int l = 0; l < ResumeSpec.Length; l++) { EqualList.Add(ResumeSpec[l].Specialization.ToString()); } } } EqualsBox.Items.AddRange(EqualList.Distinct().ToArray()); } }