diff --git a/src/RoadRegistry.BackOffice/Infrastructure/Converters/StreetNameLocalIdConverter.cs b/src/RoadRegistry.BackOffice/Infrastructure/Converters/StreetNameLocalIdConverter.cs new file mode 100644 index 000000000..84e511a63 --- /dev/null +++ b/src/RoadRegistry.BackOffice/Infrastructure/Converters/StreetNameLocalIdConverter.cs @@ -0,0 +1,25 @@ +namespace RoadRegistry.BackOffice.Infrastructure.Converters +{ + using System; + using Newtonsoft.Json; + + public class StreetNameLocalIdConverter : JsonConverter + { + public override StreetNameLocalId? ReadJson(JsonReader reader, Type objectType, StreetNameLocalId? existingValue, bool hasExistingValue, JsonSerializer serializer) + { + if (reader.Value?.ToString() is null) + { + return null; + } + + return new StreetNameLocalId(int.Parse(reader.Value!.ToString()!)); + } + + public override void WriteJson(JsonWriter writer, StreetNameLocalId? value, JsonSerializer serializer) + { + if (!value.HasValue) return; + + writer.WriteValue(value.Value.ToInt32()); + } + } +} diff --git a/src/RoadRegistry.BackOffice/JsonSerializerSettingsProvider.cs b/src/RoadRegistry.BackOffice/JsonSerializerSettingsProvider.cs index fd2e9eaa8..a0bf5c941 100644 --- a/src/RoadRegistry.BackOffice/JsonSerializerSettingsProvider.cs +++ b/src/RoadRegistry.BackOffice/JsonSerializerSettingsProvider.cs @@ -40,11 +40,11 @@ public static JsonSerializerSettings CreateSerializerSettings() settings.Converters.Add(new NumberedRoadNumberConverter()); settings.Converters.Add(new RoadSegmentNumberedRoadDirectionConverter()); settings.Converters.Add(new RoadSegmentNumberedRoadOrdinalConverter()); + settings.Converters.Add(new StreetNameLocalIdConverter()); foreach (var converter in WellKnownJsonConverters.Converters) { settings.Converters.Add(converter); - } return settings;