private Range <int> GetEmploymentRange(Vrvirksomhed org) { DateTime latestEmployment = DateTime.MinValue; Range <int> employmentRange = null; if (org.virksomhedMetadata.NyesteAarsbeskaeftigelse != null) { var employment = org.virksomhedMetadata.NyesteAarsbeskaeftigelse; var date = new DateTime(employment.Aar, 1, 1); var rangeText = employment.IntervalKodeAntalAnsatte; var rangeMatch = Regex.Match(rangeText, @"^ANTAL_(?<from>\d+)_(?<to>\d+)$"); if (rangeMatch.Success && date > latestEmployment) { employmentRange = new Range <int>(int.Parse(rangeMatch.Groups["from"].Value), int.Parse(rangeMatch.Groups["to"].Value)); latestEmployment = date; } } if (org.virksomhedMetadata.NyesteKvartalsbeskaeftigelse != null) { var employment = org.virksomhedMetadata.NyesteKvartalsbeskaeftigelse; var date = new DateTime(employment.Aar, employment.Kvartal * 3, 1); var rangeText = employment.IntervalKodeAntalAnsatte; if (rangeText != null) { var rangeMatch = Regex.Match(rangeText, @"^ANTAL_(?<from>\d+)_(?<to>\d+)$"); if (rangeMatch.Success && date > latestEmployment) { employmentRange = new Range <int>(int.Parse(rangeMatch.Groups["from"].Value), int.Parse(rangeMatch.Groups["to"].Value)); latestEmployment = date; } } } if (org.virksomhedMetadata.NyesteMaanedsbeskaeftigelse != null) { var employment = org.virksomhedMetadata.NyesteMaanedsbeskaeftigelse; var date = new DateTime(employment.Aar, employment.Maaned, 1); var rangeText = employment.IntervalKodeAntalAnsatte; var rangeMatch = Regex.Match(rangeText, @"^ANTAL_(?<from>\d+)_(?<to>\d+)$"); if (rangeMatch.Success && date > latestEmployment) { employmentRange = new Range <int>(int.Parse(rangeMatch.Groups["from"].Value), int.Parse(rangeMatch.Groups["to"].Value)); latestEmployment = date; } } return(employmentRange); }
private CvrOrganization CreateCvrResult(Vrvirksomhed org, DateTimeOffset?lastUpdated) { var result = new CvrOrganization(); result.CvrNumber = org.cvrNummer; result.Name = org.virksomhedMetadata.NyesteNavn.Navn; result.ModifiedDate = lastUpdated; foreach (var name in org.navne ?? new List <Navne>()) { result.AlternateNames.Add(name.Navn); } foreach (var name in org.attributter.Where(a => a.Type == "NAVN_IDENTITET").SelectMany(a => a.Vaerdier)) { result.AlternateNames.Add(name.Vaerdi); } if (result.Name != null) { result.AlternateNames.Remove(result.Name); } var date = DateTime.UtcNow; var life = org.livsforloeb.OrderByDescending(l => l.periode.GyldigFra).FirstOrDefault(); if (org.virksomhedMetadata.NyesteStatus != null) { result.CreditStatusCode = org.virksomhedMetadata.NyesteStatus.Kreditoplysningkode; result.CreditStatusText = org.virksomhedMetadata.NyesteStatus.Kreditoplysningtekst; } result.Status = org.virksomhedMetadata.SammensatStatus; result.FoundingDate = org.virksomhedMetadata.StiftelsesDato; result.StartDate = life != null ? life.periode.GyldigFra : result.FoundingDate; result.EndDate = life != null ? life.periode.GyldigTil : null; if (result.EndDate != null) { date = result.EndDate.Value; } result.Email = this.GetCurrentValue(org.elektroniskPost, e => e.Periode, e => !e.Hemmelig, e => e.Kontaktoplysning, date); result.Website = this.GetCurrentValue(org.hjemmeside, e => e.Periode, e => !e.Hemmelig, e => e.Kontaktoplysning, date); result.PhoneNumber = this.GetCurrentValue(org.telefonNummer, e => e.Periode, e => !e.Hemmelig, e => e.Kontaktoplysning, date); result.FaxNumber = this.GetCurrentValue(org.telefaxNummer, e => e.Periode, e => !e.Hemmelig, e => e.Kontaktoplysning, date); result.Address = org.virksomhedMetadata.NyesteBeliggenhedsadresse ?? this.GetCurrentValue(org.beliggenhedsadresse, i => i.Periode, date); result.PostalAddress = this.GetCurrentValue(org.postadresse, i => i.Periode, date); result.Municipality = result.Address != null ? result.Address.Kommune.kommuneNavn : null; result.OptOutSalesAndAdvertising = org.reklamebeskyttet; result.CompanyTypeCode = org.virksomhedMetadata.NyesteVirksomhedsform != null ? org.virksomhedMetadata.NyesteVirksomhedsform.Virksomhedsformkode : 0; result.CompanyTypeLongName = org.virksomhedMetadata.NyesteVirksomhedsform != null ? org.virksomhedMetadata.NyesteVirksomhedsform.LangBeskrivelse : null; result.CompanyTypeShortName = org.virksomhedMetadata.NyesteVirksomhedsform != null ? org.virksomhedMetadata.NyesteVirksomhedsform.KortBeskrivelse : null; result.FiscalYearStart = this.GetCurrentValue(org.attributter.Where(a => a.Type == "REGNSKABSÅR_START").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.FiscalYearEnd = this.GetCurrentValue(org.attributter.Where(a => a.Type == "REGNSKABSÅR_SLUT").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); DateTimeOffset dummy; result.FirstFiscalYearStart = this.GetCurrentValue(org.attributter.Where(a => a.Type == "FØRSTE_REGNSKABSPERIODE_START").SelectMany(a => a.Vaerdier), v => v.Periode, v => DateTimeOffset.TryParse(v.Vaerdi, out dummy), v => (DateTimeOffset?)DateTimeOffset.Parse(v.Vaerdi), date); result.FirstFiscalYearEnd = this.GetCurrentValue(org.attributter.Where(a => a.Type == "FØRSTE_REGNSKABSPERIODE_SLUT").SelectMany(a => a.Vaerdier), v => v.Periode, v => DateTimeOffset.TryParse(v.Vaerdi, out dummy), v => (DateTimeOffset?)DateTimeOffset.Parse(v.Vaerdi), date); result.Purpose = this.GetCurrentValue(org.attributter.Where(a => a.Type == "FORMÅL").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.RegisteredCapital = this.GetCurrentValue(org.attributter.Where(a => a.Type == "KAPITAL").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.RegisteredCapitalCurrency = this.GetCurrentValue(org.attributter.Where(a => a.Type == "KAPITALVALUTA").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.StatutesLastChanged = this.GetCurrentValue(org.attributter.Where(a => a.Type == "VEDTÆGT_SENESTE").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.HasShareCapitalClasses = this.GetCurrentValue(org.attributter.Where(a => a.Type == "KAPITALKLASSER").SelectMany(a => a.Vaerdier), v => v.Periode, v => true, v => v.Vaerdi, date); result.MainIndustry = org.virksomhedMetadata.NyesteHovedbranche != null ? new IndustryDescription(org.virksomhedMetadata.NyesteHovedbranche) : null; result.OtherIndustry1 = org.virksomhedMetadata.NyesteBibranche1 != null ? new IndustryDescription(org.virksomhedMetadata.NyesteBibranche1) : null; result.OtherIndustry2 = org.virksomhedMetadata.NyesteBibranche2 != null ? new IndustryDescription(org.virksomhedMetadata.NyesteBibranche2) : null; result.OtherIndustry3 = org.virksomhedMetadata.NyesteBibranche3 != null ? new IndustryDescription(org.virksomhedMetadata.NyesteBibranche3) : null; result.NumberOfEmployees = this.GetEmploymentRange(org); return(result); }