public override IAddressSource GetCurrentAddressSource(IAddressSource populationAddress, IAddressSource departure, PersonCivilRegistrationStatusCode civilRegistrationStatus) { var ret = new LogicalAddressStrategy().GetCurrentAddressSource(populationAddress, departure, civilRegistrationStatus); if (ret == null || ret is DummyAddressSource) { ret = new AvailableAddressSrategy().GetCurrentAddressSource(populationAddress, departure, civilRegistrationStatus); } return(ret); }
public override IAddressSource GetCurrentAddressSource(IAddressSource populationAddress, IAddressSource departure, PersonCivilRegistrationStatusCode civilRegistrationStatus) { var addresses = new IAddressSource[] { populationAddress, departure }; var all = addresses.Where(adr => adr != null).ToArray(); var active = all.Where(adr => !adr.ToEndTS().HasValue).FirstOrDefault(); if (active != null) { return(active); } var latest = all.OrderByDescending(adr => adr.ToStartTS()).FirstOrDefault(); if (latest != null) { return(latest); } return(new DummyAddressSource()); }
public override IAddressSource GetCurrentAddressSource(IAddressSource populationAddress, IAddressSource departure, PersonCivilRegistrationStatusCode civilRegistrationStatus) { // 1,3,5,7 var cprAddressStates = new PersonCivilRegistrationStatusCode[] { PersonCivilRegistrationStatusCode.RegisteredWithResidenceInDanishPopulationRegister, PersonCivilRegistrationStatusCode.RegisteredWithHighStreetcodeInDanishPopulationRegister, PersonCivilRegistrationStatusCode.RegisteredWithResidenceInGreenlandicPopulationRegister, PersonCivilRegistrationStatusCode.RegisteredWithHighStreetcodeIn_GreenlandicPopulationRegister }; if (cprAddressStates.Contains(civilRegistrationStatus)) { return(populationAddress); } // 80 if (civilRegistrationStatus == PersonCivilRegistrationStatusCode.Emigrated) { return(departure); } return(new DummyAddressSource()); }
public abstract IAddressSource GetCurrentAddressSource(IAddressSource populationAddress, IAddressSource departure, PersonCivilRegistrationStatusCode civilRegistrationStatus);