diff --git a/src/AssociationRegistry/Acties/GrarConsumer/HeradresseerLocaties/HeradresseerLocatiesMessageFactory.cs b/src/AssociationRegistry/Acties/GrarConsumer/HeradresseerLocaties/HeradresseerLocatiesMessageFactory.cs new file mode 100644 index 000000000..e3ef3afc0 --- /dev/null +++ b/src/AssociationRegistry/Acties/GrarConsumer/HeradresseerLocaties/HeradresseerLocatiesMessageFactory.cs @@ -0,0 +1,27 @@ +namespace AssociationRegistry.Acties.GrarConsumer.HeradresseerLocaties; + +using Grar.GrarUpdates.Hernummering; +using Grar.GrarUpdates.LocatieFinder; +using JasperFx.Core.Reflection; + +public class HeradresseerLocatiesMessageFactory +{ + private readonly LocatiesPerVCodeCollection _locatiesPerVCode; + + private HeradresseerLocatiesMessageFactory(LocatiesPerVCodeCollection locatiesPerVCode) + { + _locatiesPerVCode = locatiesPerVCode; + } + + public static HeradresseerLocatiesMessageFactory VoorLocaties(LocatiesPerVCodeCollection locatiesPerVCode) + => new(locatiesPerVCode); + + public IReadOnlyCollection MetNaarAdres(int destinationAdresId, string idempotencyKey) + { + return _locatiesPerVCode.Select(x => new HeradresseerLocatiesMessage( + x.VCode, + x.Locaties.Select(locatie => new TeHeradresserenLocatie(locatie.LocatieId, destinationAdresId.ToString())) + .ToList(), + idempotencyKey)).ToList().AsReadOnly(); + } +} diff --git a/src/AssociationRegistry/Grar/Models/PostalInfo/PostalInformationResponse.cs b/src/AssociationRegistry/Grar/Models/PostalInfo/PostalInformationResponse.cs index ec9145839..9780392c3 100644 --- a/src/AssociationRegistry/Grar/Models/PostalInfo/PostalInformationResponse.cs +++ b/src/AssociationRegistry/Grar/Models/PostalInfo/PostalInformationResponse.cs @@ -36,6 +36,8 @@ public static Postnamen FromValues(params string[] values) public record Postnaam { + public string Value { get; init; } + private Postnaam(string Value) { this.Value = Value; @@ -43,6 +45,7 @@ private Postnaam(string Value) public static Postnaam FromGrar(Models.Postnaam postnaam) => new(postnaam.GeografischeNaam.Spelling); + public static Postnaam FromValue(string postnaam) { if (string.IsNullOrEmpty(postnaam)) @@ -54,7 +57,8 @@ public static Postnaam FromValue(string postnaam) public static implicit operator string(Postnaam postnaam) => postnaam.Value; - public string Value { get; init; } + public override string ToString() + => Value; public void Deconstruct(out string Value) { diff --git a/src/AssociationRegistry/Vereniging/Locaties/Adres.cs b/src/AssociationRegistry/Vereniging/Locaties/Adres.cs index 2be642bd1..36b8054ab 100644 --- a/src/AssociationRegistry/Vereniging/Locaties/Adres.cs +++ b/src/AssociationRegistry/Vereniging/Locaties/Adres.cs @@ -72,12 +72,3 @@ public static Adres Hydrate(Registratiedata.AdresUitAdressenregister adres) adres.Gemeente, Belgiƫ); } - -public record Gemeentenaam(string Naam) -{ - public static Gemeentenaam Hydrate(string gemeente) - => new(gemeente); - - public static Gemeentenaam FromVerrijkteGemeentenaam(VerrijkteGemeentenaam gemeentenaam) - => new(gemeentenaam.Format()); -} diff --git a/src/AssociationRegistry/Vereniging/Locaties/Gemeentenaam.cs b/src/AssociationRegistry/Vereniging/Locaties/Gemeentenaam.cs new file mode 100644 index 000000000..92facb120 --- /dev/null +++ b/src/AssociationRegistry/Vereniging/Locaties/Gemeentenaam.cs @@ -0,0 +1,15 @@ +namespace AssociationRegistry.Vereniging; + +using Events; + +public record Gemeentenaam(string Naam) +{ + public static Gemeentenaam Hydrate(string gemeente) + => new(gemeente); + + public static Gemeentenaam FromVerrijkteGemeentenaam(VerrijkteGemeentenaam gemeentenaam) + => new(gemeentenaam.Format()); + + public override string ToString() + => Naam; +} diff --git a/src/AssociationRegistry/Vereniging/VerenigingOfAnyKind.cs b/src/AssociationRegistry/Vereniging/VerenigingOfAnyKind.cs index 027ead6ef..76988e038 100644 --- a/src/AssociationRegistry/Vereniging/VerenigingOfAnyKind.cs +++ b/src/AssociationRegistry/Vereniging/VerenigingOfAnyKind.cs @@ -355,9 +355,11 @@ private IEvent GetAdresMatchExceptionEvent( { IEvent @event = ex.StatusCode switch { - //TODO: is this correct? - HttpStatusCode.NotFound => AdresWerdNietGevondenInAdressenregister.From(VCode, locatieVoorTeMatchenAdres), - _ => new AdresKonNietOvergenomenWordenUitAdressenregister(VCode, locatieId, locatieVoorTeMatchenAdres.Adres.ToAdresString(), + HttpStatusCode.NotFound => + AdresWerdNietGevondenInAdressenregister.From(VCode, locatieVoorTeMatchenAdres), + + _ => + new AdresKonNietOvergenomenWordenUitAdressenregister(VCode, locatieId, locatieVoorTeMatchenAdres.Adres.ToAdresString(), GetExceptionMessage(ex.StatusCode)), }; diff --git a/test/AssociationRegistry.Test/When_ProbeerAdresTeMatchen/Given_GrarClient_Returned_BadRequest.cs b/test/AssociationRegistry.Test/When_ProbeerAdresTeMatchen/Given_GrarClient_Returned_BadRequest.cs index eab6c668b..b65e5c3ea 100644 --- a/test/AssociationRegistry.Test/When_ProbeerAdresTeMatchen/Given_GrarClient_Returned_BadRequest.cs +++ b/test/AssociationRegistry.Test/When_ProbeerAdresTeMatchen/Given_GrarClient_Returned_BadRequest.cs @@ -7,6 +7,7 @@ using Framework.Customizations; using Grar; using Grar.Exceptions; +using Grar.Models; using Moq; using Resources; using System.Net; @@ -40,12 +41,21 @@ public async Task Then_AdresKonNietOvergenomenWordenUitAdressenregister() new VerenigingState() .Apply(feitelijkeVerenigingWerdGeregistreerd)); - await vereniging.ProbeerAdresTeMatchen(grarClient.Object, feitelijkeVerenigingWerdGeregistreerd.Locaties.First().LocatieId, + var locatie = feitelijkeVerenigingWerdGeregistreerd.Locaties.First(); + + await vereniging.ProbeerAdresTeMatchen(grarClient.Object, locatie.LocatieId, CancellationToken.None); var @event = vereniging.UncommittedEvents.OfType().SingleOrDefault(); @event.Should().NotBeNull(); + + @event.Adres.Should().BeEquivalentTo($"{locatie.Adres.Straatnaam} {locatie.Adres.Huisnummer}" + + (!string.IsNullOrWhiteSpace(locatie.Adres.Busnummer) + ? $" bus {locatie.Adres.Busnummer}" + : string.Empty) + + $", {locatie.Adres.Postcode} {locatie.Adres.Gemeente}, {locatie.Adres.Land}"); + @event!.Reden.Should().Be(ExceptionMessages.AdresKonNietOvergenomenWordenBadRequest); } }