From 9a8886ce99f480eabc005e2f1bbbe7842210c2e2 Mon Sep 17 00:00:00 2001 From: emalfroy Date: Mon, 18 Nov 2024 16:01:18 +0100 Subject: [PATCH 1/4] feat: or-2560 add json ld mapping for lidmaatschap publiek detail --- .../publiek/detail-vereniging-context.json | 2 + .../Detail/PubliekVerenigingDetailMapper.cs | 4 +- .../DetailVerenigingResponseExamples.cs | 3 +- .../Detail/ResponseModels/Lidmaatschap.cs | 18 +++- .../Search/ResponseModels/Lidmaatschap.cs | 14 +-- .../PubliekVerenigingDetailProjector.cs | 100 +++++++++--------- .../JsonLdContext/JsonLdType.cs | 2 +- .../Mappers/PubliekZoekResponseMapper.cs | 7 +- ...rns_Detail_With_Toegevoegd_Lidmaatschap.cs | 7 +- .../Returns_Detail_With_Lidmaatschap.cs | 9 +- 10 files changed, 91 insertions(+), 75 deletions(-) diff --git a/src/AssociationRegistry.Public.Api/Contexten/publiek/detail-vereniging-context.json b/src/AssociationRegistry.Public.Api/Contexten/publiek/detail-vereniging-context.json index 17b23e24f..ba6439acf 100644 --- a/src/AssociationRegistry.Public.Api/Contexten/publiek/detail-vereniging-context.json +++ b/src/AssociationRegistry.Public.Api/Contexten/publiek/detail-vereniging-context.json @@ -21,6 +21,8 @@ "hoofdactiviteitenVerenigingsloket": "regorg:orgActivity", "werkingsgebieden": "dc:spatial", "wg": "http://data.vlaanderen.be/id/concept/werkingsgebied/", + "lidmaatschappen": "org:memberof", + "lidmaatschap": "org:Memberschip", "regorg": "http://www.w3.org/ns/regorg#", "cont": "http://data.lblod.info/id/contact-punten/", "org": "http://www.w3.org/ns/org#", diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/PubliekVerenigingDetailMapper.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/PubliekVerenigingDetailMapper.cs index 10ac670d7..a3f46fe44 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/PubliekVerenigingDetailMapper.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/PubliekVerenigingDetailMapper.cs @@ -79,13 +79,15 @@ public static PubliekVerenigingDetailResponse MapDetailAll(PubliekVerenigingDeta private static Lidmaatschap Map(PubliekVerenigingDetailDocument.Lidmaatschap l, INamenVoorLidmaatschapMapper namenVoorLidmaatschapMapper) => new() { + id = l.JsonLdMetadata.Id, + type = l.JsonLdMetadata.Type, Beschrijving = l.Beschrijving, Naam = namenVoorLidmaatschapMapper.MapNaamVoorLidmaatschap(l.AndereVereniging), AndereVereniging = l.AndereVereniging, Identificatie = l.Identificatie, Van = l.Van.FormatAsBelgianDate(), Tot = l.Tot.FormatAsBelgianDate(), - LidmaatschapId = l.LidmaatschapId, + //LidmaatschapId = l.LidmaatschapId, }; private static Relatie Map(AppSettings appSettings, PubliekVerenigingDetailDocument.Relatie r) diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs index 224121de2..f904270a1 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs @@ -139,7 +139,8 @@ public PubliekVerenigingDetailResponse GetExamples() [ new Lidmaatschap { - LidmaatschapId = 1, + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001111"), + type = JsonLdType.Lidmaatschap.Type, Beschrijving = "Een lidmaatschap", Naam = "De andere vereniging", Van = "2002-11-15", diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs index c2b6ed70c..d24cac1b4 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs @@ -5,11 +5,19 @@ [DataContract] public class Lidmaatschap { - /// - /// De unieke identificatie code van dit lidmaatschap binnen de vereniging - /// - [DataMember(Name = "LidmaatschapId")] - public int LidmaatschapId { get; set; } + /// De json-ld id + [DataMember(Name = "@id")] + public string id { get; init; } + + /// Het json-ld type + [DataMember(Name = "@type")] + public string type { get; set; } + + // /// + // /// De unieke identificatie code van dit lidmaatschap binnen de vereniging + // /// + // [DataMember(Name = "LidmaatschapId")] + // public int LidmaatschapId { get; set; } /// /// De unieke identificator van de vereniging waarvan deze vereniging lid werd diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs index 6ebc28448..8d95dfcdd 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs @@ -5,13 +5,13 @@ [DataContract] public class Lidmaatschap { - // /// De json-ld id - // [DataMember(Name = "@id")] - // public string id { get; init; } - // - // /// Het json-ld type - // [DataMember(Name = "@type")] - // public string type { get; set; } + /// De json-ld id + [DataMember(Name = "@id")] + public string id { get; init; } + + /// Het json-ld type + [DataMember(Name = "@type")] + public string type { get; set; } /// /// De vCode van de andere vereniging diff --git a/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs b/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs index 4d09c6515..406c99696 100644 --- a/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs +++ b/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs @@ -4,6 +4,7 @@ namespace AssociationRegistry.Public.ProjectionHost.Projections.Detail; using Formats; using Framework; using Infrastructure.Extensions; +using JasperFx.Core; using JsonLdContext; using Marten.Events; using Schema.Constants; @@ -228,23 +229,21 @@ public static void Apply(IEvent doelgroepWerdGewijzigd, public static void Apply(IEvent contactgegevenWerdToegevoegd, PubliekVerenigingDetailDocument document) { - document.Contactgegevens = document.Contactgegevens - .Append( - new PubliekVerenigingDetailDocument.Contactgegeven - { - JsonLdMetadata = new JsonLdMetadata( - JsonLdType.Contactgegeven.CreateWithIdValues( - contactgegevenWerdToegevoegd.StreamKey!, - contactgegevenWerdToegevoegd.Data.ContactgegevenId.ToString()), - JsonLdType.Contactgegeven.Type), - ContactgegevenId = contactgegevenWerdToegevoegd.Data.ContactgegevenId, - Contactgegeventype = contactgegevenWerdToegevoegd.Data.Contactgegeventype, - Waarde = contactgegevenWerdToegevoegd.Data.Waarde, - Beschrijving = contactgegevenWerdToegevoegd.Data.Beschrijving, - IsPrimair = contactgegevenWerdToegevoegd.Data.IsPrimair, - }) - .OrderBy(c => c.ContactgegevenId) - .ToArray(); + document.Contactgegevens = Enumerable.Append(document.Contactgegevens, new PubliekVerenigingDetailDocument.Contactgegeven + { + JsonLdMetadata = new JsonLdMetadata( + JsonLdType.Contactgegeven.CreateWithIdValues( + contactgegevenWerdToegevoegd.StreamKey!, + contactgegevenWerdToegevoegd.Data.ContactgegevenId.ToString()), + JsonLdType.Contactgegeven.Type), + ContactgegevenId = contactgegevenWerdToegevoegd.Data.ContactgegevenId, + Contactgegeventype = contactgegevenWerdToegevoegd.Data.Contactgegeventype, + Waarde = contactgegevenWerdToegevoegd.Data.Waarde, + Beschrijving = contactgegevenWerdToegevoegd.Data.Beschrijving, + IsPrimair = contactgegevenWerdToegevoegd.Data.IsPrimair, + }) + .OrderBy(c => c.ContactgegevenId) + .ToArray(); } public static void Apply(IEvent contactgegevenWerdGewijzigd, PubliekVerenigingDetailDocument document) @@ -279,10 +278,9 @@ public static void Apply(IEvent contactgegevenWerd public static void Apply(IEvent locatieWerdToegevoegd, PubliekVerenigingDetailDocument document) { - document.Locaties = document.Locaties - .Append(MapLocatie(document.VCode, locatieWerdToegevoegd.Data.Locatie)) - .OrderBy(l => l.LocatieId) - .ToArray(); + document.Locaties = Enumerable.Append(document.Locaties, MapLocatie(document.VCode, locatieWerdToegevoegd.Data.Locatie)) + .OrderBy(l => l.LocatieId) + .ToArray(); } public static void Apply(IEvent locatieWerdGewijzigd, PubliekVerenigingDetailDocument document) @@ -352,10 +350,9 @@ public static void Apply( IEvent maatschappelijkeZetelWerdOvergenomenUitKbo, PubliekVerenigingDetailDocument document) { - document.Locaties = document.Locaties - .Append(MapLocatie(document.VCode, maatschappelijkeZetelWerdOvergenomenUitKbo.Data.Locatie)) - .OrderBy(l => l.LocatieId) - .ToArray(); + document.Locaties = Enumerable.Append(document.Locaties, MapLocatie(document.VCode, maatschappelijkeZetelWerdOvergenomenUitKbo.Data.Locatie)) + .OrderBy(l => l.LocatieId) + .ToArray(); } public static void Apply( @@ -400,22 +397,20 @@ public static void Apply( IEvent contactgegevenWerdOvergenomenUitKBO, PubliekVerenigingDetailDocument document) { - document.Contactgegevens = document.Contactgegevens - .Append( - new PubliekVerenigingDetailDocument.Contactgegeven - { - JsonLdMetadata = new JsonLdMetadata( - JsonLdType.Contactgegeven.CreateWithIdValues( - contactgegevenWerdOvergenomenUitKBO.StreamKey!, - contactgegevenWerdOvergenomenUitKBO.Data.ContactgegevenId.ToString()), - JsonLdType.Contactgegeven.Type), - ContactgegevenId = contactgegevenWerdOvergenomenUitKBO.Data.ContactgegevenId, - Contactgegeventype = contactgegevenWerdOvergenomenUitKBO.Data.Contactgegeventype, - Beschrijving = string.Empty, - Waarde = contactgegevenWerdOvergenomenUitKBO.Data.Waarde, - }) - .OrderBy(c => c.ContactgegevenId) - .ToArray(); + document.Contactgegevens = Enumerable.Append(document.Contactgegevens, new PubliekVerenigingDetailDocument.Contactgegeven + { + JsonLdMetadata = new JsonLdMetadata( + JsonLdType.Contactgegeven.CreateWithIdValues( + contactgegevenWerdOvergenomenUitKBO.StreamKey!, + contactgegevenWerdOvergenomenUitKBO.Data.ContactgegevenId.ToString()), + JsonLdType.Contactgegeven.Type), + ContactgegevenId = contactgegevenWerdOvergenomenUitKBO.Data.ContactgegevenId, + Contactgegeventype = contactgegevenWerdOvergenomenUitKBO.Data.Contactgegeventype, + Beschrijving = string.Empty, + Waarde = contactgegevenWerdOvergenomenUitKBO.Data.Waarde, + }) + .OrderBy(c => c.ContactgegevenId) + .ToArray(); } public static void Apply( @@ -711,20 +706,21 @@ public static void Apply( public static void Apply(IEvent lidmaatschapWerdToegevoegd, PubliekVerenigingDetailDocument document) { - document.Lidmaatschappen = document.Lidmaatschappen - .Append(MapLidmaatschap(lidmaatschapWerdToegevoegd.Data.Lidmaatschap)) - .OrderBy(l => l.LidmaatschapId) - .ToArray(); + document.Lidmaatschappen = Enumerable.Append(document.Lidmaatschappen, MapLidmaatschap(lidmaatschapWerdToegevoegd.Data.Lidmaatschap)) + .OrderBy(l => l.LidmaatschapId) + .ToArray(); } private static PubliekVerenigingDetailDocument.Lidmaatschap MapLidmaatschap(Registratiedata.Lidmaatschap lidmaatschap) - => new(null, - lidmaatschap.LidmaatschapId, - lidmaatschap.AndereVereniging, - lidmaatschap.DatumVan, - lidmaatschap.DatumTot, - lidmaatschap.Identificatie, - lidmaatschap.Beschrijving); + => new( new JsonLdMetadata( + JsonLdType.Lidmaatschap.CreateWithIdValues(lidmaatschap.AndereVereniging, lidmaatschap.LidmaatschapId.ToString()), + JsonLdType.Lidmaatschap.Type), + lidmaatschap.LidmaatschapId, + lidmaatschap.AndereVereniging, + lidmaatschap.DatumVan, + lidmaatschap.DatumTot, + lidmaatschap.Identificatie, + lidmaatschap.Beschrijving); public static void Apply(IEvent lidmaatschapWerdGewijzigd, PubliekVerenigingDetailDocument document) { diff --git a/src/AssociationRegistry/JsonLdContext/JsonLdType.cs b/src/AssociationRegistry/JsonLdContext/JsonLdType.cs index 278f94e89..8df94e4d9 100644 --- a/src/AssociationRegistry/JsonLdContext/JsonLdType.cs +++ b/src/AssociationRegistry/JsonLdContext/JsonLdType.cs @@ -12,7 +12,7 @@ public class JsonLdType public static readonly JsonLdType VerenigingMetRechtspersoonlijkheid = new(JsonLdContext.GuidNamespace.Vereniging, type: "regorg:RegisteredOrganization"); public static readonly JsonLdType Hoofdactiviteit = new(JsonLdContext.GuidNamespace.Hoofdactiviteit, type: "skos:Concept", prefix:"act"); public static readonly JsonLdType Werkingsgebied = new(JsonLdContext.GuidNamespace.Werkingsgebied, type: "skos:Concept", prefix:"wg"); - public static readonly JsonLdType Lidmaatschap = new(JsonLdContext.GuidNamespace.Lidmaatschap, type: "skos:Concept", prefix:"lid"); + public static readonly JsonLdType Lidmaatschap = new(JsonLdContext.GuidNamespace.Lidmaatschap, type: "org:Membership", prefix:"lidmaatschap"); public static readonly JsonLdType Vertegenwoordiger = new(JsonLdContext.GuidNamespace.Vertegenwoordiger, type: "person:Person", prefix: "person"); diff --git a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs index e293023cb..55505827d 100644 --- a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs +++ b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs @@ -3,7 +3,6 @@ using Admin.Api.Verenigingen.Lidmaatschap.VoegLidmaatschapToe.RequestModels; using Admin.Api.Verenigingen.Lidmaatschap.WijzigLidmaatschap.RequestModels; using Admin.Api.Verenigingen.WijzigBasisgegevens.FeitelijkeVereniging.RequestModels; -using Admin.ProjectionHost.Infrastructure.Extensions; using Events; using Formats; using JsonLdContext; @@ -171,9 +170,9 @@ public static Lidmaatschap[] MapLidmaatschappen(VoegLidmaatschapToeRequest reque [ new Lidmaatschap() { - // id = JsonLdType.Lidmaatschap.CreateWithIdValues( - // vCode, "1"), - // type = JsonLdType.Lidmaatschap.Type, + id = JsonLdType.Lidmaatschap.CreateWithIdValues( + vCode, "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = vCode, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, diff --git a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs index 6328b595f..9ddb68a2f 100644 --- a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs @@ -2,6 +2,7 @@ using Formats; using Framework.AlbaHost; +using JsonLdContext; using KellermanSoftware.CompareNetObjects; using Public.Api.Verenigingen.Detail.ResponseModels; using Public.ProjectionHost.Infrastructure.Extensions; @@ -27,7 +28,9 @@ public void JsonContentMatches() var expected = new Lidmaatschap { - LidmaatschapId = 1, + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging), + type = JsonLdType.Lidmaatschap.Type, + //LidmaatschapId = 1, AndereVereniging = _context.Request.AndereVereniging, Beschrijving = _context.Request.Beschrijving, Van = _context.Request.Van.FormatAsBelgianDate(), @@ -36,7 +39,7 @@ public void JsonContentMatches() Naam = _context.Scenario.AndereFeitelijkeVerenigingWerdGeregistreerd.Naam, }; - Response.Vereniging.Lidmaatschappen.Single(x => x.LidmaatschapId == 1) + Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging)) .ShouldCompare(expected, compareConfig: comparisonConfig); } diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs index e89acaf44..af035e378 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs @@ -5,6 +5,7 @@ using AssociationRegistry.Public.ProjectionHost.Infrastructure.Extensions; using AssociationRegistry.Test.E2E.Framework.AlbaHost; using Formats; +using JsonLdContext; using KellermanSoftware.CompareNetObjects; using Xunit; @@ -27,7 +28,9 @@ public void JsonContentMatches() var expected = new Lidmaatschap { - LidmaatschapId = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId, + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString()), + type = JsonLdType.Lidmaatschap.Type, + //LidmaatschapId = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId, AndereVereniging = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, Beschrijving = _context.Request.Beschrijving, Van = _context.Request.Van.Value.FormatAsBelgianDate(), @@ -36,7 +39,9 @@ public void JsonContentMatches() Naam = _context.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.Naam, }; - Response.Vereniging.Lidmaatschappen.Single(x => x.LidmaatschapId == _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId) + // Response.Vereniging.Lidmaatschappen.Single(x => x.LidmaatschapId == _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId) + // .ShouldCompare(expected, compareConfig: comparisonConfig); + Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString())) .ShouldCompare(expected, compareConfig: comparisonConfig); } From cc750ef5ff6c89d21addead2a49291df7ecc1ea7 Mon Sep 17 00:00:00 2001 From: emalfroy Date: Mon, 18 Nov 2024 16:20:43 +0100 Subject: [PATCH 2/4] feat: or-2560 add lidmaatschap json ld for publiek zoeken --- .../Search/SearchVerenigingenResponseMapper.cs | 4 ++-- .../Projections/Search/ElasticEventProjection.cs | 2 +- .../Framework/Mappers/PubliekZoekResponseMapper.cs | 8 ++++---- .../Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs | 4 ++-- .../Publiek/Zoeken/Returns_ZoekResponse.cs | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs index 34b979208..f2053676a 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs @@ -205,8 +205,8 @@ private static string CalculateHoofdactiviteiten(IEnumerable originalHoo private static Lidmaatschap Map(VerenigingZoekDocument.Lidmaatschap l) => new() { - // id = l.JsonLdMetadata.Id, - // type = l.JsonLdMetadata.Type, + id = l.JsonLdMetadata.Id, + type = l.JsonLdMetadata.Type, AndereVereniging = l.AndereVereniging, Van = l.DatumVan, Tot = l.DatumTot, diff --git a/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs b/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs index e5d2d3914..40ba2adaf 100644 --- a/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs +++ b/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs @@ -459,7 +459,7 @@ await _elasticRepository.RemoveLidmaatschap( private static VerenigingZoekDocument.Lidmaatschap Map(Registratiedata.Lidmaatschap lidmaatschap, string vCode) => new() { - JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Lidmaatschap, vCode, lidmaatschap.LidmaatschapId.ToString()), + JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Lidmaatschap, lidmaatschap.AndereVereniging, lidmaatschap.LidmaatschapId.ToString()), LidmaatschapId = lidmaatschap.LidmaatschapId, AndereVereniging = lidmaatschap.AndereVereniging, diff --git a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs index 55505827d..f49672c49 100644 --- a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs +++ b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs @@ -181,14 +181,14 @@ public static Lidmaatschap[] MapLidmaatschappen(VoegLidmaatschapToeRequest reque }, ]; - public static Lidmaatschap[] MapLidmaatschappen(WijzigLidmaatschapRequest request, string vCode) + public static Lidmaatschap[] MapLidmaatschappen(WijzigLidmaatschapRequest request, string vCode, int lidmaatschapId) => [ new Lidmaatschap() { - // id = JsonLdType.Lidmaatschap.CreateWithIdValues( - // vCode, "1"), - // type = JsonLdType.Lidmaatschap.Type, + id = JsonLdType.Lidmaatschap.CreateWithIdValues( + vCode, lidmaatschapId.ToString()), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = vCode, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, diff --git a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs index 9ddb68a2f..8858821be 100644 --- a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs @@ -28,7 +28,7 @@ public void JsonContentMatches() var expected = new Lidmaatschap { - id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging), + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging, "1"), type = JsonLdType.Lidmaatschap.Type, //LidmaatschapId = 1, AndereVereniging = _context.Request.AndereVereniging, @@ -39,7 +39,7 @@ public void JsonContentMatches() Naam = _context.Scenario.AndereFeitelijkeVerenigingWerdGeregistreerd.Naam, }; - Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging)) + Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging, "1")) .ShouldCompare(expected, compareConfig: comparisonConfig); } diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs index da1273479..ee3c19a62 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs @@ -56,7 +56,7 @@ public async Task WithFeitelijkeVereniging() HoofdactiviteitenVerenigingsloket = PubliekZoekResponseMapper.MapHoofdactiviteitenVerenigingsloket(FeitelijkeVerenigingWerdGeregistreerd.HoofdactiviteitenVerenigingsloket), Werkingsgebieden = PubliekZoekResponseMapper.MapWerkingsgebieden(FeitelijkeVerenigingWerdGeregistreerd.Werkingsgebieden), Locaties = PubliekZoekResponseMapper.MapLocaties(FeitelijkeVerenigingWerdGeregistreerd.Locaties, _testContext.VCode), - Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.VCode), + Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.VCode, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId), Relaties = [], Sleutels = PubliekZoekResponseMapper.MapSleutels(_testContext.VCode), Links = new VerenigingLinks() From 3485f8601e62835e6c3cbd3b632b8fbcb0b69ccd Mon Sep 17 00:00:00 2001 From: emalfroy Date: Tue, 19 Nov 2024 10:06:52 +0100 Subject: [PATCH 3/4] fix: or-2560 use vcode instead of anderevereniging to create json ld id for lidmaatschap --- .../Detail/PubliekVerenigingDetailProjector.cs | 8 ++++---- .../Projections/Search/ElasticEventProjection.cs | 2 +- .../Framework/Mappers/PubliekZoekResponseMapper.cs | 6 +++--- .../Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs | 4 ++-- .../Publiek/Zoeken/Returns_ZoekResponse.cs | 2 +- .../Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs | 7 ++----- .../Publiek/Zoeken/Returns_ZoekResponse.cs | 2 +- 7 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs b/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs index 406c99696..881f3dace 100644 --- a/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs +++ b/src/AssociationRegistry.Public.ProjectionHost/Projections/Detail/PubliekVerenigingDetailProjector.cs @@ -706,14 +706,14 @@ public static void Apply( public static void Apply(IEvent lidmaatschapWerdToegevoegd, PubliekVerenigingDetailDocument document) { - document.Lidmaatschappen = Enumerable.Append(document.Lidmaatschappen, MapLidmaatschap(lidmaatschapWerdToegevoegd.Data.Lidmaatschap)) + document.Lidmaatschappen = Enumerable.Append(document.Lidmaatschappen, MapLidmaatschap(lidmaatschapWerdToegevoegd.Data.Lidmaatschap, document.VCode)) .OrderBy(l => l.LidmaatschapId) .ToArray(); } - private static PubliekVerenigingDetailDocument.Lidmaatschap MapLidmaatschap(Registratiedata.Lidmaatschap lidmaatschap) + private static PubliekVerenigingDetailDocument.Lidmaatschap MapLidmaatschap(Registratiedata.Lidmaatschap lidmaatschap, string vCode) => new( new JsonLdMetadata( - JsonLdType.Lidmaatschap.CreateWithIdValues(lidmaatschap.AndereVereniging, lidmaatschap.LidmaatschapId.ToString()), + JsonLdType.Lidmaatschap.CreateWithIdValues(vCode, lidmaatschap.LidmaatschapId.ToString()), JsonLdType.Lidmaatschap.Type), lidmaatschap.LidmaatschapId, lidmaatschap.AndereVereniging, @@ -726,7 +726,7 @@ public static void Apply(IEvent lidmaatschapWerdGewij { document.Lidmaatschappen = document.Lidmaatschappen .Where(l => l.LidmaatschapId != lidmaatschapWerdGewijzigd.Data.Lidmaatschap.LidmaatschapId) - .Append(MapLidmaatschap(lidmaatschapWerdGewijzigd.Data.Lidmaatschap)) + .Append(MapLidmaatschap(lidmaatschapWerdGewijzigd.Data.Lidmaatschap, document.VCode)) .OrderBy(l => l.LidmaatschapId) .ToArray(); } diff --git a/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs b/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs index 40ba2adaf..e5d2d3914 100644 --- a/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs +++ b/src/AssociationRegistry.Public.ProjectionHost/Projections/Search/ElasticEventProjection.cs @@ -459,7 +459,7 @@ await _elasticRepository.RemoveLidmaatschap( private static VerenigingZoekDocument.Lidmaatschap Map(Registratiedata.Lidmaatschap lidmaatschap, string vCode) => new() { - JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Lidmaatschap, lidmaatschap.AndereVereniging, lidmaatschap.LidmaatschapId.ToString()), + JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Lidmaatschap, vCode, lidmaatschap.LidmaatschapId.ToString()), LidmaatschapId = lidmaatschap.LidmaatschapId, AndereVereniging = lidmaatschap.AndereVereniging, diff --git a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs index f49672c49..b0e1a429f 100644 --- a/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs +++ b/test/AssociationRegistry.Test.E2E/Framework/Mappers/PubliekZoekResponseMapper.cs @@ -173,7 +173,7 @@ public static Lidmaatschap[] MapLidmaatschappen(VoegLidmaatschapToeRequest reque id = JsonLdType.Lidmaatschap.CreateWithIdValues( vCode, "1"), type = JsonLdType.Lidmaatschap.Type, - AndereVereniging = vCode, + AndereVereniging = request.AndereVereniging, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, Van = request.Van!.Value.FormatAsBelgianDate(), @@ -181,7 +181,7 @@ public static Lidmaatschap[] MapLidmaatschappen(VoegLidmaatschapToeRequest reque }, ]; - public static Lidmaatschap[] MapLidmaatschappen(WijzigLidmaatschapRequest request, string vCode, int lidmaatschapId) + public static Lidmaatschap[] MapLidmaatschappen(WijzigLidmaatschapRequest request, string vCode, string andereVereniging, int lidmaatschapId) => [ new Lidmaatschap() @@ -189,7 +189,7 @@ public static Lidmaatschap[] MapLidmaatschappen(WijzigLidmaatschapRequest reques id = JsonLdType.Lidmaatschap.CreateWithIdValues( vCode, lidmaatschapId.ToString()), type = JsonLdType.Lidmaatschap.Type, - AndereVereniging = vCode, + AndereVereniging = andereVereniging, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, Van = request.Van!.Value.FormatAsBelgianDate(), diff --git a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs index 8858821be..ceeb514c0 100644 --- a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs @@ -28,7 +28,7 @@ public void JsonContentMatches() var expected = new Lidmaatschap { - id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging, "1"), + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, "1"), type = JsonLdType.Lidmaatschap.Type, //LidmaatschapId = 1, AndereVereniging = _context.Request.AndereVereniging, @@ -39,7 +39,7 @@ public void JsonContentMatches() Naam = _context.Scenario.AndereFeitelijkeVerenigingWerdGeregistreerd.Naam, }; - Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Request.AndereVereniging, "1")) + Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, "1")) .ShouldCompare(expected, compareConfig: comparisonConfig); } diff --git a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Zoeken/Returns_ZoekResponse.cs b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Zoeken/Returns_ZoekResponse.cs index d2cb49b3d..dbeb0959b 100644 --- a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Zoeken/Returns_ZoekResponse.cs +++ b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Publiek/Zoeken/Returns_ZoekResponse.cs @@ -58,7 +58,7 @@ public async Task WithFeitelijkeVereniging() HoofdactiviteitenVerenigingsloket = PubliekZoekResponseMapper.MapHoofdactiviteitenVerenigingsloket(FeitelijkeVerenigingWerdGeregistreerd.HoofdactiviteitenVerenigingsloket), Werkingsgebieden = PubliekZoekResponseMapper.MapWerkingsgebieden(FeitelijkeVerenigingWerdGeregistreerd.Werkingsgebieden), Locaties = PubliekZoekResponseMapper.MapLocaties(FeitelijkeVerenigingWerdGeregistreerd.Locaties, _testContext.VCode), - Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.Scenario.AndereFeitelijkeVerenigingWerdGeregistreerd.VCode), + Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.VCode), Relaties = [], Sleutels = PubliekZoekResponseMapper.MapSleutels(_testContext.VCode), Links = new VerenigingLinks() diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs index af035e378..52e62c6e6 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Detail/Returns_Detail_With_Lidmaatschap.cs @@ -28,9 +28,8 @@ public void JsonContentMatches() var expected = new Lidmaatschap { - id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString()), + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString()), type = JsonLdType.Lidmaatschap.Type, - //LidmaatschapId = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId, AndereVereniging = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, Beschrijving = _context.Request.Beschrijving, Van = _context.Request.Van.Value.FormatAsBelgianDate(), @@ -39,9 +38,7 @@ public void JsonContentMatches() Naam = _context.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.Naam, }; - // Response.Vereniging.Lidmaatschappen.Single(x => x.LidmaatschapId == _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId) - // .ShouldCompare(expected, compareConfig: comparisonConfig); - Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString())) + Response.Vereniging.Lidmaatschappen.Single(x => x.id == JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString())) .ShouldCompare(expected, compareConfig: comparisonConfig); } diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs index ee3c19a62..bc41ad1c0 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Publiek/Zoeken/Returns_ZoekResponse.cs @@ -56,7 +56,7 @@ public async Task WithFeitelijkeVereniging() HoofdactiviteitenVerenigingsloket = PubliekZoekResponseMapper.MapHoofdactiviteitenVerenigingsloket(FeitelijkeVerenigingWerdGeregistreerd.HoofdactiviteitenVerenigingsloket), Werkingsgebieden = PubliekZoekResponseMapper.MapWerkingsgebieden(FeitelijkeVerenigingWerdGeregistreerd.Werkingsgebieden), Locaties = PubliekZoekResponseMapper.MapLocaties(FeitelijkeVerenigingWerdGeregistreerd.Locaties, _testContext.VCode), - Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.VCode, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId), + Lidmaatschappen = PubliekZoekResponseMapper.MapLidmaatschappen(_testContext.Request, _testContext.VCode, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId), Relaties = [], Sleutels = PubliekZoekResponseMapper.MapSleutels(_testContext.VCode), Links = new VerenigingLinks() From 8d044c925700aab95e58051c8aa69f8eee882629 Mon Sep 17 00:00:00 2001 From: emalfroy Date: Tue, 19 Nov 2024 10:46:50 +0100 Subject: [PATCH 4/4] feat: or-2560 add json ld to lidmaatschap beheer detail & zoek --- .../Detail/BeheerVerenigingDetailMapper.cs | 2 + .../DetailVerenigingResponseExamples.cs | 30 +++++++++++++ .../Detail/ResponseModels/Lidmaatschap.cs | 8 ++++ .../SearchVerenigingenResponseExamples.cs | 6 +++ .../Search/ResponseModels/Lidmaatschap.cs | 14 +++--- .../SearchVerenigingenResponseMapper.cs | 4 +- .../Detail/BeheerVerenigingDetailMapper.cs | 2 +- .../DetailVerenigingResponseExamples.cs | 44 +++++++++++++++++-- .../SearchVerenigingenResponseExamples.cs | 6 +++ .../Mappers/BeheerZoekResponseMapper.cs | 16 +++---- ...rns_Detail_With_Toegevoegd_Lidmaatschap.cs | 3 ++ .../Returns_Detail_With_Lidmaatschap.cs | 3 ++ .../Beheer/Zoeken/Returns_ZoekResponse.cs | 2 +- 13 files changed, 118 insertions(+), 22 deletions(-) diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/BeheerVerenigingDetailMapper.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/BeheerVerenigingDetailMapper.cs index 2d9e2d5d0..b88914fa7 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/BeheerVerenigingDetailMapper.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/BeheerVerenigingDetailMapper.cs @@ -95,6 +95,8 @@ INamenVoorLidmaatschapMapper namenVoorLidmaatschapMapper ) => new() { + id = lidmaatschap.JsonLdMetadata.Id, + type = lidmaatschap.JsonLdMetadata.Type, AndereVereniging = lidmaatschap.AndereVereniging, Beschrijving = lidmaatschap.Beschrijving, Identificatie = lidmaatschap.Identificatie, diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/Examples/DetailVerenigingResponseExamples.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/Examples/DetailVerenigingResponseExamples.cs index 5a076655c..064f5d728 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/Examples/DetailVerenigingResponseExamples.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/Examples/DetailVerenigingResponseExamples.cs @@ -1,5 +1,6 @@ namespace AssociationRegistry.Admin.Api.Verenigingen.Detail.Examples; +using Formats; using Hosts.Configuration.ConfigurationBindings; using JsonLdContext; using NodaTime; @@ -178,6 +179,8 @@ public IEnumerable> GetExamples() [ new Lidmaatschap { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, LidmaatschapId = 1, Beschrijving = "Een lidmaatschap", Naam = "De andere vereniging", @@ -348,6 +351,33 @@ public IEnumerable> GetExamples() }, }, Relaties = Array.Empty(), + Lidmaatschappen = new [] + { + new Lidmaatschap() + { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, + LidmaatschapId = 1, + AndereVereniging = "V0001002", + Naam = "De andere vereniging", + Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), + Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), + Beschrijving = "Gewoon een lid", + Identificatie = "L1234", + }, + new Lidmaatschap() + { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "2"), + type = JsonLdType.Lidmaatschap.Type, + LidmaatschapId = 2, + Naam = "Samen sterk", + AndereVereniging = "V0001003", + Van = DateOnly.FromDateTime(DateTime.Today.AddMonths(-5)).ToString(WellknownFormats.DateOnly), + Tot = DateOnly.FromDateTime(DateTime.Today.AddDays(-5)).ToString(WellknownFormats.DateOnly), + Beschrijving = "Tijdelijk lidmaatschap", + Identificatie = "L4321", + }, + }, Bron = Bron.KBO.Waarde, }, Metadata = new Metadata diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs index 22503acde..b3bdb2c2e 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Detail/ResponseModels/Lidmaatschap.cs @@ -5,6 +5,14 @@ [DataContract] public class Lidmaatschap { + /// De json-ld id + [DataMember(Name = "@id")] + public string id { get; init; } + + /// Het json-ld type + [DataMember(Name = "@type")] + public string type { get; set; } + /// /// De unieke identificatie code van dit lidmaatschap binnen de vereniging /// diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/Examples/SearchVerenigingenResponseExamples.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/Examples/SearchVerenigingenResponseExamples.cs index 62c66ad28..e6ea1daa2 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/Examples/SearchVerenigingenResponseExamples.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/Examples/SearchVerenigingenResponseExamples.cs @@ -87,6 +87,8 @@ public SearchVerenigingenResponse GetExamples() { new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001002", Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), @@ -176,6 +178,8 @@ public SearchVerenigingenResponse GetExamples() { new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001002", Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), @@ -184,6 +188,8 @@ public SearchVerenigingenResponse GetExamples() }, new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "2"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001003", Van = DateOnly.FromDateTime(DateTime.Today.AddMonths(-5)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today.AddDays(-5)).ToString(WellknownFormats.DateOnly), diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs index 8f1a5b7cf..c2b01bfa7 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/ResponseModels/Lidmaatschap.cs @@ -5,13 +5,13 @@ [DataContract] public class Lidmaatschap { - // /// De json-ld id - // [DataMember(Name = "@id")] - // public string id { get; init; } - // - // /// Het json-ld type - // [DataMember(Name = "@type")] - // public string type { get; set; } + /// De json-ld id + [DataMember(Name = "@id")] + public string id { get; init; } + + /// Het json-ld type + [DataMember(Name = "@type")] + public string type { get; set; } /// /// De vCode van de andere vereniging diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs index f7755f9db..ff52fe1a0 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Search/SearchVerenigingenResponseMapper.cs @@ -79,8 +79,8 @@ private static Vereniging Map( private static Lidmaatschap Map(VerenigingZoekDocument.Lidmaatschap l) => new() { - // id = l.JsonLdMetadata.Id, - // type = l.JsonLdMetadata.Type, + id = l.JsonLdMetadata.Id, + type = l.JsonLdMetadata.Type, AndereVereniging = l.AndereVereniging, Van = l.DatumVan, Tot = l.DatumTot, diff --git a/src/AssociationRegistry.Admin.ProjectionHost/Projections/Detail/BeheerVerenigingDetailMapper.cs b/src/AssociationRegistry.Admin.ProjectionHost/Projections/Detail/BeheerVerenigingDetailMapper.cs index 6db78fea7..b9277c4b9 100644 --- a/src/AssociationRegistry.Admin.ProjectionHost/Projections/Detail/BeheerVerenigingDetailMapper.cs +++ b/src/AssociationRegistry.Admin.ProjectionHost/Projections/Detail/BeheerVerenigingDetailMapper.cs @@ -19,7 +19,7 @@ namespace AssociationRegistry.Admin.ProjectionHost.Projections.Detail; public class BeheerVerenigingDetailMapper { public static Lidmaatschap MapLidmaatschap(Registratiedata.Lidmaatschap lid, string vCode) - => new(CreateJsonLdMetadata(JsonLdType.Locatie, vCode, lid.LidmaatschapId.ToString()), + => new(CreateJsonLdMetadata(JsonLdType.Lidmaatschap, vCode, lid.LidmaatschapId.ToString()), lid.LidmaatschapId, lid.AndereVereniging, lid.DatumVan, diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs index f904270a1..c044243fa 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Detail/ResponseExamples/DetailVerenigingResponseExamples.cs @@ -5,6 +5,7 @@ using AssociationRegistry.Public.Api.Verenigingen.Detail.ResponseModels; using AssociationRegistry.Public.Schema.Constants; using AssociationRegistry.Vereniging; +using Formats; using Swashbuckle.AspNetCore.Filters; using Adres = ResponseModels.Adres; using AdresId = ResponseModels.AdresId; @@ -139,7 +140,7 @@ public PubliekVerenigingDetailResponse GetExamples() [ new Lidmaatschap { - id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001111"), + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), type = JsonLdType.Lidmaatschap.Type, Beschrijving = "Een lidmaatschap", Naam = "De andere vereniging", @@ -265,7 +266,20 @@ public PubliekVerenigingDetailResponse[] GetExamples() }, }, Relaties = Array.Empty(), - Lidmaatschappen = Array.Empty(), + Lidmaatschappen = new [] + { + new Lidmaatschap() + { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, + AndereVereniging = "V0001002", + Naam = "De andere vereniging", + Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), + Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), + Beschrijving = "Gewoon een lid", + Identificatie = "L1234", + }, + }, }, Metadata = new Metadata { DatumLaatsteAanpassing = "2023-05-15" }, }, @@ -368,7 +382,31 @@ public PubliekVerenigingDetailResponse[] GetExamples() }, }, Relaties = Array.Empty(), - Lidmaatschappen = Array.Empty(), + Lidmaatschappen = new [] + { + new Lidmaatschap() + { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, + AndereVereniging = "V0001002", + Naam = "De andere vereniging", + Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), + Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), + Beschrijving = "Gewoon een lid", + Identificatie = "L1234", + }, + new Lidmaatschap() + { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "2"), + type = JsonLdType.Lidmaatschap.Type, + AndereVereniging = "V0001003", + Naam = "Samen sterk", + Van = DateOnly.FromDateTime(DateTime.Today.AddMonths(-5)).ToString(WellknownFormats.DateOnly), + Tot = DateOnly.FromDateTime(DateTime.Today.AddDays(-5)).ToString(WellknownFormats.DateOnly), + Beschrijving = "Tijdelijk lidmaatschap", + Identificatie = "L4321", + }, + }, }, Metadata = new Metadata { DatumLaatsteAanpassing = "2024-09-09" }, }, diff --git a/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseExamples/SearchVerenigingenResponseExamples.cs b/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseExamples/SearchVerenigingenResponseExamples.cs index 8ea5aa26b..d68182af9 100644 --- a/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseExamples/SearchVerenigingenResponseExamples.cs +++ b/src/AssociationRegistry.Public.Api/Verenigingen/Search/ResponseExamples/SearchVerenigingenResponseExamples.cs @@ -82,6 +82,8 @@ public SearchVerenigingenResponse GetExamples() { new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001002", Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), @@ -164,6 +166,8 @@ public SearchVerenigingenResponse GetExamples() { new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001002", Van = DateOnly.FromDateTime(DateTime.Today.AddYears(-1)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today).ToString(WellknownFormats.DateOnly), @@ -172,6 +176,8 @@ public SearchVerenigingenResponse GetExamples() }, new Lidmaatschap() { + id = JsonLdType.Lidmaatschap.CreateWithIdValues("V0001001", "2"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = "V0001003", Van = DateOnly.FromDateTime(DateTime.Today.AddMonths(-5)).ToString(WellknownFormats.DateOnly), Tot = DateOnly.FromDateTime(DateTime.Today.AddDays(-5)).ToString(WellknownFormats.DateOnly), diff --git a/test/AssociationRegistry.Test.E2E/Framework/Mappers/BeheerZoekResponseMapper.cs b/test/AssociationRegistry.Test.E2E/Framework/Mappers/BeheerZoekResponseMapper.cs index af24b38ac..b9be8dfc7 100644 --- a/test/AssociationRegistry.Test.E2E/Framework/Mappers/BeheerZoekResponseMapper.cs +++ b/test/AssociationRegistry.Test.E2E/Framework/Mappers/BeheerZoekResponseMapper.cs @@ -186,9 +186,9 @@ public static Lidmaatschap[] MapRequestLidmaatschappen(VoegLidmaatschapToeReques [ new Lidmaatschap() { - // id = JsonLdType.Lidmaatschap.CreateWithIdValues( - // vCode, "1"), - // type = JsonLdType.Lidmaatschap.Type, + id = JsonLdType.Lidmaatschap.CreateWithIdValues( + vCode, "1"), + type = JsonLdType.Lidmaatschap.Type, AndereVereniging = request.AndereVereniging, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, @@ -197,15 +197,15 @@ public static Lidmaatschap[] MapRequestLidmaatschappen(VoegLidmaatschapToeReques }, ]; - public static Lidmaatschap[] MapRequestLidmaatschappen(WijzigLidmaatschapRequest request, string vCode) + public static Lidmaatschap[] MapRequestLidmaatschappen(WijzigLidmaatschapRequest request, string vCode, string andereVereniging, int lidmaatschapId) => [ new Lidmaatschap() { - // id = JsonLdType.Lidmaatschap.CreateWithIdValues( - // vCode, "1"), - // type = JsonLdType.Lidmaatschap.Type, - AndereVereniging = vCode, + id = JsonLdType.Lidmaatschap.CreateWithIdValues( + vCode, lidmaatschapId.ToString()), + type = JsonLdType.Lidmaatschap.Type, + AndereVereniging = andereVereniging, Beschrijving = request.Beschrijving, Identificatie = request.Identificatie, Van = request.Van!.Value.FormatAsBelgianDate(), diff --git a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Beheer/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Beheer/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs index 50f9247f3..4f6037ba5 100644 --- a/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Beheer/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Voeg_Lidmaatschap_Toe/Beheer/Detail/Returns_Detail_With_Toegevoegd_Lidmaatschap.cs @@ -4,6 +4,7 @@ using Admin.ProjectionHost.Infrastructure.Extensions; using Formats; using Framework.AlbaHost; +using JsonLdContext; using KellermanSoftware.CompareNetObjects; using Xunit; using Lidmaatschap = Admin.Api.Verenigingen.Detail.ResponseModels.Lidmaatschap; @@ -27,6 +28,8 @@ public void JsonContentMatches() var expected = new Lidmaatschap { + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, "1"), + type = JsonLdType.Lidmaatschap.Type, LidmaatschapId = 1, AndereVereniging = _context.Request.AndereVereniging, Beschrijving = _context.Request.Beschrijving, diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Detail/Returns_Detail_With_Lidmaatschap.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Detail/Returns_Detail_With_Lidmaatschap.cs index a41677f1e..ad007114f 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Detail/Returns_Detail_With_Lidmaatschap.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Detail/Returns_Detail_With_Lidmaatschap.cs @@ -4,6 +4,7 @@ using Admin.ProjectionHost.Infrastructure.Extensions; using Formats; using Framework.AlbaHost; +using JsonLdContext; using KellermanSoftware.CompareNetObjects; using Xunit; @@ -26,6 +27,8 @@ public void JsonContentMatches() var expected = new Lidmaatschap { + id = JsonLdType.Lidmaatschap.CreateWithIdValues(_context.VCode, _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId.ToString()), + type = JsonLdType.Lidmaatschap.Type, LidmaatschapId = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId, AndereVereniging = _context.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, Beschrijving = _context.Request.Beschrijving, diff --git a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Zoeken/Returns_ZoekResponse.cs b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Zoeken/Returns_ZoekResponse.cs index 170da1eb2..73156f82c 100644 --- a/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Zoeken/Returns_ZoekResponse.cs +++ b/test/AssociationRegistry.Test.E2E/When_Wijzig_Lidmaatschap/Beheer/Zoeken/Returns_ZoekResponse.cs @@ -63,7 +63,7 @@ public async Task WithFeitelijkeVereniging() Werkingsgebieden = BeheerZoekResponseMapper.MapScenarioWerkingsgebieden(FeitelijkeVerenigingWerdGeregistreerd.Werkingsgebieden), Locaties = BeheerZoekResponseMapper.MapScenarioLocaties(FeitelijkeVerenigingWerdGeregistreerd.Locaties, _testContext.VCode), Sleutels = BeheerZoekResponseMapper.MapSleutels(_testContext.VCode), - Lidmaatschappen = BeheerZoekResponseMapper.MapRequestLidmaatschappen(_testContext.Request, _testContext.Scenario.BaseScenario.AndereFeitelijkeVerenigingWerdGeregistreerd.VCode), + Lidmaatschappen = BeheerZoekResponseMapper.MapRequestLidmaatschappen(_testContext.Request, _testContext.VCode, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.AndereVereniging, _testContext.Scenario.LidmaatschapWerdToegevoegd.Lidmaatschap.LidmaatschapId), Links = new VerenigingLinks() { Detail = new Uri($"{_testContext.AdminApiAppSettings.BaseUrl}/v1/verenigingen/{_testContext.VCode}"),