Пример #1
0
        private static void Fill2019YearData()
        {
            using var reader = new StreamReader("testdata.csv");
            using var csv    = new CsvReader(reader,
                                             new CsvConfiguration(CultureInfo.InvariantCulture)
            {
                BadDataFound = null, Delimiter = ","
            });

            while (csv.Read())
            {
                var         firstTimeString = true;
                Interviewee interviewee     = null;

                var companies = csv.GetField <string>(22).Split("\n");
                foreach (var company in companies)
                {
                    var cs           = company.Split(":");
                    var companyScore = new CompanyScore
                    {
                        IntervieweeId = csv.GetField <int>(0),
                        CompanyName   = cs[0].Trim('"'),
                        IsKnown       = cs[1].Trim().StartsWith("Знаю") || cs[1].Trim().Equals("Слышал"),
                        IsWanted      = cs[1].Trim().Equals("Знаю и хочу работать") ||
                                        cs[1].Trim().Equals("Знаю и уважаю"),
                        Age                  = csv.GetField <int>(8),
                        City                 = csv.GetField <string>(7),
                        Education            = csv.GetField <string>(9),
                        ExperienceLevel      = csv.GetField <string>(11),
                        ExperienceYears      = csv.GetField <int>(10),
                        Profession           = csv.GetField <string>(12),
                        ProgrammingLanguages = csv.GetField <string>(13).Split(",").Select(l => l.Trim()).ToList(),
                        CompanySources       = csv.GetField <string>(15).Split(",").Select(l => l.Trim()).ToList(),
                        IsCommunity          = csv.GetField <string>(18) == "Да",
                        CommunitySource      = csv.GetField <string>(19).Split(",").Select(l => l.Trim()).ToList(),
                    };

                    if (!Companies.ContainsKey(companyScore.CompanyName))
                    {
                        var c = new Company {
                            Id = Guid.NewGuid(), Name = companyScore.CompanyName
                        };
                        Companies.Add(c.Name, c);
                    }

                    if (firstTimeString)
                    {
                        foreach (var language in companyScore.ProgrammingLanguages)
                        {
                            if (!Languages.ContainsKey(language))
                            {
                                var l = new Language {
                                    Id = Guid.NewGuid(), Name = language
                                };
                                Languages.Add(l.Name, l);
                            }
                        }

                        interviewee = new Interviewee
                        {
                            Id              = Guid.NewGuid(),
                            Age             = companyScore.Age,
                            City            = companyScore.City,
                            Education       = companyScore.Education,
                            Profession      = companyScore.Profession,
                            ProfessionLevel = companyScore.ExperienceLevel,
                            VisitMeetups    = companyScore.IsCommunity,
                            Year            = 2019,
                            IsCommunity     = companyScore.IsCommunity
                        };
                        Interviewees.Add(interviewee);

                        foreach (var language in companyScore.ProgrammingLanguages)
                        {
                            IntervieweeLanguages.Add(new IntervieweeLanguage
                            {
                                IntervieweeId = interviewee.Id,
                                LanguageId    = Languages[language].Id
                            });
                        }

                        if (companyScore.IsCommunity && companyScore.CommunitySource != null)
                        {
                            foreach (var ms in companyScore.CommunitySource)
                            {
                                if (!CommunitySources.ContainsKey(ms))
                                {
                                    var l = new CommunitySource {
                                        Id = Guid.NewGuid(), Name = ms
                                    };
                                    CommunitySources.Add(l.Name, l);
                                }

                                IntervieweeCommunitySources.Add(new IntervieweeCommunitySource
                                {
                                    IntervieweeId     = interviewee.Id,
                                    CommunitySourceId = CommunitySources[ms].Id
                                });
                            }
                        }

                        firstTimeString = false;
                    }

                    Answers.Add(new CompanyAnswer
                    {
                        Id            = Guid.NewGuid(),
                        IntervieweeId = interviewee.Id,
                        CompanyId     = Companies[companyScore.CompanyName].Id,
                        IsKnown       = companyScore.IsKnown,
                        IsGood        = companyScore.IsWanted,
                        IsWanted      = companyScore.IsWanted
                    });
                }
            }
        }