コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }