private void UpdateStraatnm(StreetNameExtractItemV2 streetName, List <StreetNameName> streetNameNames) => UpdateRecord(streetName, record => { foreach (var streetNameName in streetNameNames) { switch (streetNameName.Language) { case Language.Dutch: streetName.NameDutch = streetNameName.Name; break; case Language.French: streetName.NameFrench = streetNameName.Name; break; case Language.German: streetName.NameGerman = streetNameName.Name; break; case Language.English: streetName.NameEnglish = streetNameName.Name; break; default: throw new ArgumentOutOfRangeException(nameof(streetName), streetName, null); } } });
private void UpdateHomoniemtv(StreetNameExtractItemV2 streetName, Language?language, string homonymAddition) => UpdateRecord(streetName, record => { switch (language) { case Language.Dutch: streetName.HomonymDutch = homonymAddition?.Substring(0, Math.Min(homonymAddition.Length, 5)); break; case Language.French: streetName.HomonymFrench = homonymAddition?.Substring(0, Math.Min(homonymAddition.Length, 5)); break; case Language.German: streetName.HomonymGerman = homonymAddition?.Substring(0, Math.Min(homonymAddition.Length, 5)); break; case Language.English: streetName.HomonymEnglish = homonymAddition?.Substring(0, Math.Min(homonymAddition.Length, 5)); break; default: throw new ArgumentOutOfRangeException(nameof(language), language, null); } });
private void UpdateRecord(StreetNameExtractItemV2 municipality, Action <StreetNameDbaseRecord> updateFunc) { var record = new StreetNameDbaseRecord(); record.FromBytes(municipality.DbaseRecord, _encoding); updateFunc(record); municipality.DbaseRecord = record.ToBytes(_encoding); }
public StreetNameExtractProjectionsV2(IOptions <ExtractConfig> extractConfig, Encoding encoding) { _extractConfig = extractConfig.Value; _encoding = encoding ?? throw new ArgumentNullException(nameof(encoding)); When <Envelope <StreetNameWasProposedV2> >(async(context, message, ct) => { var streetNameExtractItemV2 = new StreetNameExtractItemV2 { StreetNamePersistentLocalId = message.Message.PersistentLocalId, MunicipalityId = message.Message.MunicipalityId, DbaseRecord = new StreetNameDbaseRecord { gemeenteid = { Value = message.Message.NisCode }, versieid = { Value = message.Message.Provenance.Timestamp.ToBelgianDateTimeOffset().FromDateTimeOffset() } }.ToBytes(_encoding) }; UpdateStraatnm(streetNameExtractItemV2, message.Message.StreetNameNames); await context .StreetNameExtractV2 .AddAsync(streetNameExtractItemV2, ct); }); When <Envelope <MunicipalityNisCodeWasChanged> >(async(context, message, ct) => { var streetNames = context .StreetNameExtractV2 .Local .Where(s => s.MunicipalityId == message.Message.MunicipalityId) .Union(context.StreetNameExtractV2.Where(s => s.MunicipalityId == message.Message.MunicipalityId)); foreach (var streetName in streetNames) { UpdateRecord(streetName, i => i.gemeenteid.Value = message.Message.NisCode); } }); }
private void UpdateVersie(StreetNameExtractItemV2 streetName, Instant timestamp) => UpdateRecord(streetName, record => record.versieid.SetValue(timestamp.ToBelgianDateTimeOffset()));
private void UpdateStatus(StreetNameExtractItemV2 streetName, string status) => UpdateRecord(streetName, record => record.status.Value = status);