private void ExtractExpectedVisitors(List <Festival_Unformatted> festivalsWithSameTitle, Festival festival)
        {
            var expectedVisitorsString = festivalsWithSameTitle.FirstOrDefault(f => f.TableColOne == "Besucher")
                                         ?.TableColTwo;

            if (!string.IsNullOrWhiteSpace(expectedVisitorsString))
            {
                festival.AverageExpectedVisitors = RemoveCharacters.RemoveAllExceptNumeric <int>(expectedVisitorsString);
            }
        }
        private void ExtractAddress(List <Festival_Unformatted> festivalsWithSameTitle, Festival festival)
        {
            var splitZipStateAddressCountrys =
                Regex.Split(festivalsWithSameTitle.First().DateZipCodeStateCountry, @"\s{2,}");

            if (splitZipStateAddressCountrys.Length == 4)
            {
                splitZipStateAddressCountrys = splitZipStateAddressCountrys.Skip(1).ToArray();

                for (int i = 0; i < splitZipStateAddressCountrys.Length; i++)
                {
                    //Extract Zip and State
                    if (i == 0)
                    {
                        var splitZipCodeAndProvince = splitZipStateAddressCountrys[i].Split("-");

                        for (int j = 0; j < splitZipCodeAndProvince.Length; j++)
                        {
                            splitZipCodeAndProvince[j] = RemoveCharacters.RemoveWhitespaces(splitZipCodeAndProvince[j]);

                            //Extract Zip
                            if (j == 0)
                            {
                                festival.Address.ZipCode = splitZipCodeAndProvince[j];
                            }

                            //Extract State
                            if (j >= 1)
                            {
                                if (!string.IsNullOrEmpty(festival.Address.State))
                                {
                                    festival.Address.State += " ";
                                }

                                festival.Address.State += splitZipCodeAndProvince[j];
                            }
                        }
                    }

                    //Extract Street
                    if (i == 1)
                    {
                        festival.Address.Location = splitZipStateAddressCountrys[i];
                    }

                    //Extract Country
                    if (i == 2)
                    {
                        festival.Address.Country = splitZipStateAddressCountrys[i];
                    }
                }
            }
        }
        private void ExtractDates(List <Festival_Unformatted> festivalsWithSameTitle, Festival festival)
        {
            var date = festivalsWithSameTitle.First().Date;

            //Parse Festivals with only one date
            DateTime parsedDate1;

            if (DateTime.TryParse(date, out parsedDate1))
            {
                festival.Dates.Add(new FestivalDate()
                {
                    Date = parsedDate1
                });
            }

            //Parse Festivals with more than one Date

            var splitDates = date.Split("-");

            for (int i = 0; i < splitDates.Length; i++)
            {
                splitDates[i] = RemoveCharacters.RemoveWhitespaces(splitDates[i]);
            }

            if (splitDates.Length > 1)
            {
                if (DateTime.TryParse(splitDates[1], out parsedDate1))
                {
                    splitDates[0] += parsedDate1.Date.Year;
                    festival.Dates.Add(new FestivalDate()
                    {
                        Date = parsedDate1
                    });
                }

                if (DateTime.TryParse(splitDates[0], out parsedDate1))
                {
                    festival.Dates.Add(new FestivalDate()
                    {
                        Date = parsedDate1
                    });
                }
            }
        }
        private void ExtractEmailAndTelephone(List <Festival_Unformatted> festivalsWithSameTitle, Festival festival)
        {
            var hotlineKontaktString = festivalsWithSameTitle
                                       .First(f => f.TableColOne == "Info-Hotline:" || f.TableColOne == "Kontakt")
                                       .TableColTwo;

            if (!string.IsNullOrWhiteSpace(hotlineKontaktString))
            {
                //Extract Email
                festival.Email = EmailRegex.MatchEmail(hotlineKontaktString);

                //Extract Phone Number
                hotlineKontaktString = RemoveCharacters.RemoveWhitespaces(hotlineKontaktString);

                hotlineKontaktString = RemoveCharacters.RemoveSpecialCharacters(hotlineKontaktString, new [] { '+' });

                festival.PhoneNumber = TelephoneRegex.MatchTelephone(hotlineKontaktString);
            }
        }