Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }