private static void UpdateNameByLanguage(StreetNameNameV2 entity, List <StreetNameName> streetNameNames)
        {
            foreach (var streetNameName in streetNameNames)
            {
                switch (streetNameName.Language)
                {
                case Language.Dutch:
                    entity.NameDutch       = streetNameName.Name;
                    entity.NameDutchSearch = streetNameName.Name.SanitizeForBosaSearch();
                    break;

                case Language.French:
                    entity.NameFrench       = streetNameName.Name;
                    entity.NameFrenchSearch = streetNameName.Name.SanitizeForBosaSearch();
                    break;

                case Language.German:
                    entity.NameGerman       = streetNameName.Name;
                    entity.NameGermanSearch = streetNameName.Name.SanitizeForBosaSearch();
                    break;

                case Language.English:
                    entity.NameEnglish       = streetNameName.Name;
                    entity.NameEnglishSearch = streetNameName.Name.SanitizeForBosaSearch();
                    break;
                }
            }
        }
        public StreetNameNameProjectionsV2()
        {
            When <Envelope <StreetNameWasProposedV2> >(async(context, message, ct) =>
            {
                var streetNameNameV2 = new StreetNameNameV2
                {
                    PersistentLocalId = message.Message.PersistentLocalId,
                    MunicipalityId    = message.Message.MunicipalityId,
                    NisCode           = message.Message.NisCode,
                    VersionTimestamp  = message.Message.Provenance.Timestamp,
                    IsFlemishRegion   = RegionFilter.IsFlemishRegion(message.Message.NisCode),
                    Status            = StreetNameStatus.Proposed,
                    Removed           = false
                };

                UpdateNameByLanguage(streetNameNameV2, message.Message.StreetNameNames);

                await context
                .StreetNameNamesV2
                .AddAsync(streetNameNameV2, ct);
            });

            When <Envelope <MunicipalityNisCodeWasChanged> >(async(context, message, ct) =>
            {
                var streetNames = context
                                  .StreetNameNamesV2
                                  .Local
                                  .Where(s => s.MunicipalityId == message.Message.MunicipalityId)
                                  .Union(context.StreetNameNamesV2.Where(s => s.MunicipalityId == message.Message.MunicipalityId));

                foreach (var streetName in streetNames)
                {
                    streetName.NisCode = message.Message.NisCode;
                }
            });
        }
 private static void UpdateVersionTimestamp(StreetNameNameV2 streetNameName, Instant versionTimestamp)
 => streetNameName.VersionTimestamp = versionTimestamp;