public void SplitBusinessDataByYears_MoreYears()
        {
            var inputBusinessItem = new BusinessDataItem
            {
                ICO              = "123",
                Name             = "Test company",
                LegalFormOfOwner = "s.r.o",
                CountryOfOwner   = "Czech republic",
                OwnerCountrySign = "DOM",
                OwnerType        = "FO",
                OwnerShare       = "50",
                FromTime         = DateTime.ParseExact("01.07.2015", "dd.MM.yyyy", CultureInfo.CurrentCulture),
                ToTime           = DateTime.ParseExact("30.09.2021", "dd.MM.yyyy", CultureInfo.CurrentCulture),
                IsValid          = "1",
            };

            var dateProcessor = new DateProcessor();
            var result        = dateProcessor.SplitBusinessDataByYear(inputBusinessItem);

            Assert.AreEqual(7, result.Count);

            Assert.AreEqual(DateTime.ParseExact("01.07.2015", "dd.MM.yyyy", CultureInfo.CurrentCulture), result[0].FromTime);
            Assert.AreEqual(DateTime.ParseExact("31.12.2015", "dd.MM.yyyy", CultureInfo.CurrentCulture), result[0].ToTime);

            Assert.AreEqual(DateTime.ParseExact("01.01.2021", "dd.MM.yyyy", CultureInfo.CurrentCulture), result[6].FromTime);
            Assert.AreEqual(DateTime.ParseExact("30.09.2021", "dd.MM.yyyy", CultureInfo.CurrentCulture), result[6].ToTime);
        }
        public List <BusinessDataItem> SplitBusinessDataByYear(BusinessDataItem businessDataItem)
        {
            var startYear = businessDataItem.FromTime.Year;
            var endYear   = businessDataItem.ToTime.Year;

            if (startYear == endYear)
            {
                return(new List <BusinessDataItem>()
                {
                    businessDataItem
                });
            }

            var resultList = new List <BusinessDataItem>();

            for (int i = startYear; i <= endYear; i++)
            {
                if (i >= 2000)
                {
                    resultList.Add(
                        new BusinessDataItem
                    {
                        OwnerId          = businessDataItem.OwnerId,
                        ICO              = businessDataItem.ICO,
                        Name             = businessDataItem.Name,
                        OwnerCountrySign = businessDataItem.OwnerCountrySign,
                        OwnerShare       = businessDataItem.OwnerShare,
                        CountryOfOwner   = businessDataItem.CountryOfOwner,
                        LegalFormOfOwner = businessDataItem.LegalFormOfOwner,
                        OwnerType        = businessDataItem.OwnerType,
                        FromTime         = i == startYear
                                ? businessDataItem.FromTime
                                : DateTime.ParseExact($"01.01.{i}", "dd.MM.yyyy", CultureInfo.CurrentCulture),
                        ToTime = i == endYear
                                ? businessDataItem.ToTime
                                : DateTime.ParseExact($"31.12.{i}", "dd.MM.yyyy", CultureInfo.CurrentCulture),
                        IsValid = businessDataItem.IsValid,
                    }
                        );
                }
            }

            return(resultList);
        }
 public List <BusinessDataItem> LoadDataFromFile(string filePath)
 => File.ReadAllLines(filePath, Encoding.UTF8)
 .Skip(1)
 .Select(value => BusinessDataItem.FromCsv(value))
 .ToList();