private Client AssemblerClient(CVSection clientSection, Employeur emp) { Client client = new Client(); List <Mandat> mandats = new List <Mandat>(); XmlDocParagraph emplDesc = (XmlDocParagraph)clientSection.Nodes.DefaultIfEmpty(null).FirstOrDefault(x => x is XmlDocParagraph); ClientGraphRepository clientGraphRepository = new ClientGraphRepository(); if (emplDesc != null) { string[] info = emplDesc.GetLinesWithTab(); client.Nom = string.Join(" ", info); client = clientGraphRepository.CreateIfNotExists(new Dictionary <string, object> { { "Nom", client.Nom } }); } mandats.AddRange(AssemblerMandats(clientSection)); mandats.ForEach(x => { x.Projet.Client = client; x.Projet.SocieteDeConseil = emp; }); conseiller.Mandats.AddRange(mandats); return(client); }
private void AssemblerLangues(CVSection langueSection) { LangueGraphRepository langueGraphRepository = new LangueGraphRepository(); List <Langue> langues = new List <Langue>(); List <CVSection> langueSections; SectionsExtractor extractor = new SectionsExtractor(); langueSections = extractor.GetCVSections(langueSection.GetOriginalNodes.Skip(1).ToList(), new List <IXmlToken>() { FormatationToken.CreateFormatationToken(new KeyValuePair <string, string>("w:val", "Puce1")) }, "w:b", true); foreach (CVSection section in langueSections) { Langue curLangue = new Langue(); XmlDocParagraph langueNom = (XmlDocParagraph)section.Nodes.First(x => x is XmlDocParagraph); curLangue.Nom = langueNom.GetParagraphText(); curLangue = langueGraphRepository.CreateIfNotExists(new Dictionary <string, object> { { "Nom", curLangue.Nom } }); if (section.Nodes.Skip(1).Count() > 0) { foreach (XmlDocParagraph langueNiveau in section.Nodes.Skip(1).Cast <XmlDocParagraph>().ToList()) { string[] niveau = langueNiveau.GetParagraphText().Split(':'); if (niveau[0].Contains("Parlé")) { curLangue.Parle = (Niveau)System.Enum.Parse(typeof(Niveau), niveau[1].Trim().Replace("-", "").ToCamelCase()); } if (niveau[0].Contains("Écrit")) { curLangue.Ecrit = (Niveau)System.Enum.Parse(typeof(Niveau), niveau[1].Trim().Replace("-", "").ToCamelCase()); } if (niveau[0].Contains("Lu")) { curLangue.Lu = (Niveau)System.Enum.Parse(typeof(Niveau), niveau[1].Trim().Replace("-", "").ToCamelCase()); } } } else { curLangue.Parle = curLangue.Ecrit = curLangue.Lu = Niveau.Avancé; } langues.Add(curLangue); } conseiller.Langues.AddRange(langues); }
private void AssemblerBio(CVSection sectionIdentification) { FonctionGraphRepository fonctionGraphRepository = new FonctionGraphRepository(); XmlDocNode identification = sectionIdentification.Nodes.First(); Fonction fonction = new Fonction(); CV cv = new CV(); if (identification is XmlDocTable) { var paragraphs = ((XmlDocTable)identification).GetParagraphsFromColumn(2); List <string> identLines = new List <string>(); if (paragraphs.Count() == 1) { XmlDocParagraph paragraph = paragraphs.First <XmlDocParagraph>(); identLines.AddRange(paragraph.GetLinesText()); } else { foreach (var paragragh in paragraphs) { identLines.AddRange(paragragh.GetLinesText()); } } utilisateur = new Utilisateur(); utilisateur.Nom = identLines.First(); fonction = fonctionGraphRepository.CreateIfNotExists(new Dictionary <string, object> { { "Description", identLines.Last() } }); } string description = string.Empty; List <XmlDocParagraph> descriptionParagraphs = sectionIdentification.Nodes.Skip(2).Cast <XmlDocParagraph>().ToList(); descriptionParagraphs.ForEach(x => description = $"{description}\n{x.GetText()}"); cv.ResumeExperience = description; cv.Status = StatusCV.Nouveau; utilisateur.Conseiller = conseiller; conseiller.Fonction = fonction; conseiller.CVs.Add(cv); }
private void AssemblerEmployeur(CVSection employeurSection) { XmlDocParagraph emplDesc = (XmlDocParagraph)employeurSection.Nodes.First(x => x is XmlDocParagraph); List <XmlDocParagraph> jobDescription = new List <XmlDocParagraph>(); EmployeurGraphRepository employeurGraphRepository = new EmployeurGraphRepository(); Employeur emp = new Employeur(); string periode = string.Empty; string[] info = emplDesc.GetLinesWithTab(), periodeSplited; if (info.Length > 1) { emp = employeurGraphRepository.CreateIfNotExists(new Dictionary <string, object> { { "Nom", info[1] } }); periode = info[0]; periodeSplited = periode.Split("-"); if (periodeSplited.Length > 1) { emp.DateDebut = DateTime.Parse($"{periodeSplited[0].Trim()}-01-01"); emp.DateFin = DateTime.Parse($"{periodeSplited[1].Trim()}-12-31"); } else { emp.DateDebut = DateTime.Parse($"{periodeSplited[0].Trim()}-01-01"); emp.DateFin = DateTime.Parse($"{periodeSplited[0].Trim()}-12-31"); } } else { emp = employeurGraphRepository.CreateIfNotExists(new Dictionary <string, object> { { "Nom", info[0] } }); } jobDescription.AddRange(employeurSection.Nodes.Skip(1).TakeWhile(x => x is XmlDocParagraph).Cast <XmlDocParagraph>()); if (jobDescription.Count > 0) { jobDescription.RemoveAt(jobDescription.Count - 1); employeurSection.Nodes.Remove(emplDesc); employeurSection.Nodes.RemoveAll(x => jobDescription.Contains(x)); if (jobDescription.Count > 0) { jobDescription.ForEach(x => { emp.DescriptionDuTravail += x.GetParagraphText(); }); } } else { emp.DescriptionDuTravail = string.Empty; } AssemblerClients(employeurSection, emp); conseiller.Employeurs.Add(emp); }