Skip to content

Commit

Permalink
feat: or-1282 add jsonLd for publiek zoeken
Browse files Browse the repository at this point in the history
  • Loading branch information
QuintenGreenstack committed Jan 18, 2024
1 parent cd8023f commit 5c70e6f
Show file tree
Hide file tree
Showing 23 changed files with 321 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ private static ResponseModels.Sleutel Map(Schema.Detail.Sleutel sleutel)
id = sleutel.GestructureerdeIdentificator.JsonLdMetadata.Id,
type = sleutel.GestructureerdeIdentificator.JsonLdMetadata.Type,
Nummer = sleutel.GestructureerdeIdentificator.Nummer,
}
},
};

private static ResponseModels.Contactgegeven Map(Schema.Detail.Contactgegeven contactgegeven)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public static Sleutel MapKboSleutel(string kboNummer, string vCode)
GestructureerdeIdentificator = new GestructureerdeIdentificator()
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.GestructureerdeSleutel, vCode, Sleutelbron.Kbo.Waarde), Nummer = kboNummer,
}
},
};

public static Doelgroep MapDoelgroep(Registratiedata.Doelgroep doelgroep)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ public static void Apply(
Telefoon = vertegenwoordigerWerdToegevoegd.Data.Telefoon,
Mobiel = vertegenwoordigerWerdToegevoegd.Data.Mobiel,
SocialMedia = vertegenwoordigerWerdToegevoegd.Data.SocialMedia,
}
},
})
.OrderBy(v => v.VertegenwoordigerId)
.ToArray();
Expand Down Expand Up @@ -251,7 +251,7 @@ public static void Apply(IEvent<VertegenwoordigerWerdGewijzigd> vertegenwoordige
Telefoon = vertegenwoordigerWerdGewijzigd.Data.Telefoon,
Mobiel = vertegenwoordigerWerdGewijzigd.Data.Mobiel,
SocialMedia = vertegenwoordigerWerdGewijzigd.Data.SocialMedia,
}
},
})
.OrderBy(v => v.VertegenwoordigerId)
.ToArray();
Expand Down Expand Up @@ -426,7 +426,7 @@ public static void Apply(
Telefoon = string.Empty,
Mobiel = string.Empty,
SocialMedia = string.Empty,
}
},

})
.OrderBy(v => v.VertegenwoordigerId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
namespace AssociationRegistry.Public.Api.Verenigingen.Search.Examples;

using Infrastructure.ConfigurationBindings;
using JsonLdContext;
using ResponseModels;
using Swashbuckle.AspNetCore.Filters;
using System;
Expand All @@ -26,7 +27,8 @@ public SearchVerenigingenResponse GetExamples()
{
new Vereniging
{
VCode = "V0001001",
id = JsonLdType.Vereniging.CreateWithIdValues("V0001001"),
type = JsonLdType.Vereniging.Type, VCode = "V0001001",
Naam = "FWA De vrolijke BA’s",
KorteNaam = "DVB",
Verenigingstype = new VerenigingsType
Expand All @@ -35,7 +37,14 @@ public SearchVerenigingenResponse GetExamples()
Naam = Verenigingstype.FeitelijkeVereniging.Naam,
},
HoofdactiviteitenVerenigingsloket = new[]
{ new HoofdactiviteitVerenigingsloket { Code = "CULT", Naam = "Cultuur" } },
{
new HoofdactiviteitVerenigingsloket
{
id = JsonLdType.Hoofdactiviteit.CreateWithIdValues("CULT"),
type = JsonLdType.Hoofdactiviteit.Type,
Code = "CULT", Naam = "Cultuur"
}
},
Doelgroep = new DoelgroepResponse
{
Minimumleeftijd = 0,
Expand All @@ -45,6 +54,8 @@ public SearchVerenigingenResponse GetExamples()
{
new Locatie
{
id = JsonLdType.Locatie.CreateWithIdValues("V0001001", "1"),
type = JsonLdType.Locatie.Type,
Locatietype = "Correspondentie",
IsPrimair = true,
Adresvoorstelling = "kerkstraat 5, 1770 Liedekerke, Belgie",
Expand All @@ -62,6 +73,8 @@ public SearchVerenigingenResponse GetExamples()
},
new Vereniging
{
id = JsonLdType.Vereniging.CreateWithIdValues("V0036651"),
type = JsonLdType.Vereniging.Type,
VCode = "V0036651",
Naam = "FWA De Bron",
Roepnaam = "Bronneke",
Expand All @@ -75,6 +88,8 @@ public SearchVerenigingenResponse GetExamples()
{
new HoofdactiviteitVerenigingsloket
{
id = JsonLdType.Hoofdactiviteit.CreateWithIdValues("SPRT"),
type = JsonLdType.Hoofdactiviteit.Type,
Code = "SPRT",
Naam = "Sport",
},
Expand All @@ -88,6 +103,8 @@ public SearchVerenigingenResponse GetExamples()
{
new Locatie
{
id = JsonLdType.Locatie.CreateWithIdValues("V0036651", "1"),
type = JsonLdType.Locatie.Type,
Locatietype = "Activiteiten",
IsPrimair = false,
Adresvoorstelling = "dorpstraat 91, 9000 Gent, Belgie",
Expand All @@ -104,8 +121,16 @@ public SearchVerenigingenResponse GetExamples()
{
new Sleutel
{
id = JsonLdType.Sleutel.CreateWithIdValues("V0036651", Sleutelbron.Kbo.Waarde),
type = JsonLdType.Sleutel.Type,
Waarde = "0123456789",
Bron = Sleutelbron.Kbo.Waarde,
GestructureerdeIdentificator = new GestructureerdeIdentificator()
{
id = JsonLdType.GestructureerdeSleutel.CreateWithIdValues("V0036651", Sleutelbron.Kbo.Waarde),
type = JsonLdType.GestructureerdeSleutel.Type,
Nummer = "0123456789",
}
},
},
Relaties = Array.Empty<Relatie>(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace AssociationRegistry.Public.Api.Verenigingen.Search.ResponseModels;

using System.Runtime.Serialization;

[DataContract]
public class GestructureerdeIdentificator
{
/// <summary>De json-ld id</summary>
[DataMember(Name = "@id")]
public string id { get; init; }

/// <summary>Het json-ld type</summary>
[DataMember(Name = "@type")]
public string type { get; init; }

/// <summary>
/// De externe identificator van de vereniging in de bron
/// </summary>
[DataMember(Name = "Nummer")]
public string Nummer { get; set; } = null!;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
[DataContract]
public class HoofdactiviteitVerenigingsloket
{
/// <summary>De json-ld id</summary>
[DataMember(Name = "@id")]
public string id { get; init; }

/// <summary>Het json-ld type</summary>
[DataMember(Name = "@type")]
public string type { get; set; }

/// <summary>
/// De verkorte code van de hoofdactiviteit
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
[DataContract]
public class Locatie
{
/// <summary>De json-ld id</summary>
[DataMember(Name = "@id")]
public string id { get; init; }

/// <summary>Het json-ld type</summary>
[DataMember(Name = "@type")]
public string type { get; set; }

/// <summary>
/// Het soort locatie dat beschreven wordt<br />
/// <br />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
[DataContract]
public class Sleutel
{
/// <summary>De json-ld id</summary>
[DataMember(Name = "@id")]
public string id { get; init; }

/// <summary>Het json-ld type</summary>
[DataMember(Name = "@type")]
public string type { get; set; }

/// <summary>
/// De bron van de sleutel
/// </summary>
Expand All @@ -16,4 +24,10 @@ public class Sleutel
/// </summary>
[DataMember(Name = "Waarde")]
public string Waarde { get; set; } = null!;

/// <summary>
/// De gestructureerde identificator
/// </summary>
[DataMember(Name = "GestructureerdeIdentificator")]
public GestructureerdeIdentificator GestructureerdeIdentificator { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ namespace AssociationRegistry.Public.Api.Verenigingen.Search.ResponseModels;

[DataContract]
public class Vereniging
{
{/// <summary>De json-ld id</summary>
[DataMember(Name = "@id")]
public string id { get; init; }

/// <summary>Het json-ld type</summary>
[DataMember(Name = "@type")]
public string type { get; set; }
/// <summary>De vCode van de vereniging</summary>
[DataMember(Name = "VCode")]
public string VCode { get; init; } = null!;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ private Facets MapFacets(ISearchResponse<VerenigingZoekDocument> searchResponse,
private static Vereniging Map(VerenigingZoekDocument verenigingZoekDocument, AppSettings appSettings)
=> new()
{
id = verenigingZoekDocument.JsonLdMetadata.Id,
type = verenigingZoekDocument.JsonLdMetadata.Type,
VCode = verenigingZoekDocument.VCode,
Verenigingstype = Map(verenigingZoekDocument.Verenigingstype),
Naam = verenigingZoekDocument.Naam,
Expand Down Expand Up @@ -76,7 +78,13 @@ private static VerenigingLinks Map(string vCode, AppSettings appSettings)
=> new() { Detail = new Uri($"{appSettings.BaseUrl}/v1/verenigingen/{vCode}") };

private static HoofdactiviteitVerenigingsloket Map(VerenigingZoekDocument.HoofdactiviteitVerenigingsloket h)
=> new() { Code = h.Code, Naam = h.Naam };
=> new()
{
id = h.JsonLdMetadata.Id,
type = h.JsonLdMetadata.Type,
Code = h.Code,
Naam = h.Naam,
};

private static VerenigingsType Map(VerenigingZoekDocument.VerenigingsType verenigingDocumentType)
=> new()
Expand Down Expand Up @@ -143,6 +151,8 @@ private static string CalculateHoofdactiviteiten(IEnumerable<string> originalHoo
private static Locatie Map(VerenigingZoekDocument.Locatie loc)
=> new()
{
id = loc.JsonLdMetadata.Id,
type = loc.JsonLdMetadata.Type,
Locatietype = loc.Locatietype,
IsPrimair = loc.IsPrimair,
Adresvoorstelling = loc.Adresvoorstelling,
Expand All @@ -154,8 +164,17 @@ private static Locatie Map(VerenigingZoekDocument.Locatie loc)
private static Sleutel Map(VerenigingZoekDocument.Sleutel s)
=> new()
{
id = s.JsonLdMetadata.Id,
type = s.JsonLdMetadata.Type,
Bron = s.Bron,
Waarde = s.Waarde,
GestructureerdeIdentificator =
new GestructureerdeIdentificator()
{
id = s.GestructureerdeIdentificator.JsonLdMetadata.Id,
type = s.GestructureerdeIdentificator.JsonLdMetadata.Type,
Nummer = s.GestructureerdeIdentificator.Nummer,
},
};

private static Relatie Map(AppSettings appSettings, Schema.Search.Relatie r)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ namespace AssociationRegistry.Public.ProjectionHost.Projections.Search;

using Events;
using Formatters;
using JsonLdContext;
using Schema.Constants;
using Schema.Detail;
using Schema.Search;
using Vereniging;
using Doelgroep = Schema.Search.Doelgroep;
Expand All @@ -20,6 +22,7 @@ public async Task Handle(EventEnvelope<FeitelijkeVerenigingWerdGeregistreerd> me
=> await _elasticRepository.IndexAsync(
new VerenigingZoekDocument
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Vereniging, message.Data.VCode),
VCode = message.Data.VCode,
Verenigingstype = new VerenigingZoekDocument.VerenigingsType
{
Expand All @@ -31,12 +34,16 @@ public async Task Handle(EventEnvelope<FeitelijkeVerenigingWerdGeregistreerd> me
Status = VerenigingStatus.Actief,
IsUitgeschrevenUitPubliekeDatastroom = message.Data.IsUitgeschrevenUitPubliekeDatastroom,
Doelgroep = Map(message.Data.Doelgroep),
Locaties = message.Data.Locaties.Select(Map).ToArray(),
Locaties = message.Data.Locaties.Select(locatie => Map(locatie, message.VCode)).ToArray(),
HoofdactiviteitenVerenigingsloket = message.Data.HoofdactiviteitenVerenigingsloket
.Select(
hoofdactiviteitVerenigingsloket =>
new VerenigingZoekDocument.HoofdactiviteitVerenigingsloket
{
JsonLdMetadata =
CreateJsonLdMetadata(
JsonLdType.Hoofdactiviteit,
hoofdactiviteitVerenigingsloket.Code),
Code = hoofdactiviteitVerenigingsloket.Code,
Naam = hoofdactiviteitVerenigingsloket.Naam,
})
Expand All @@ -50,6 +57,7 @@ public async Task Handle(EventEnvelope<VerenigingMetRechtspersoonlijkheidWerdGer
=> await _elasticRepository.IndexAsync(
new VerenigingZoekDocument
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Vereniging, message.Data.VCode),
VCode = message.Data.VCode,
Verenigingstype = new VerenigingZoekDocument.VerenigingsType
{
Expand All @@ -71,8 +79,14 @@ public async Task Handle(EventEnvelope<VerenigingMetRechtspersoonlijkheidWerdGer
{
new VerenigingZoekDocument.Sleutel
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Sleutel, message.Data.VCode, Sleutelbron.Kbo),
Bron = Sleutelbron.Kbo,
Waarde = message.Data.KboNummer,
GestructureerdeIdentificator = new VerenigingZoekDocument.GestructureerdeIdentificator()
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.GestructureerdeSleutel, message.Data.VCode, Sleutelbron.Kbo),
Nummer = message.Data.KboNummer,
},
},
},
Relaties = Array.Empty<Relatie>(),
Expand Down Expand Up @@ -132,6 +146,11 @@ await _elasticRepository.UpdateAsync(
hoofdactiviteitVerenigingsloket =>
new VerenigingZoekDocument.HoofdactiviteitVerenigingsloket
{
JsonLdMetadata =
CreateJsonLdMetadata(
JsonLdType.Hoofdactiviteit,
hoofdactiviteitVerenigingsloket.Code),

Code = hoofdactiviteitVerenigingsloket.Code,
Naam = hoofdactiviteitVerenigingsloket.Naam,
})
Expand Down Expand Up @@ -163,14 +182,14 @@ public async Task Handle(EventEnvelope<LocatieWerdToegevoegd> message)
{
await _elasticRepository.AppendLocatie(
message.VCode,
Map(message.Data.Locatie));
Map(message.Data.Locatie, message.VCode));
}

public async Task Handle(EventEnvelope<LocatieWerdGewijzigd> message)
{
await _elasticRepository.UpdateLocatie(
message.VCode,
Map(message.Data.Locatie));
Map(message.Data.Locatie, message.VCode));
}

public async Task Handle(EventEnvelope<LocatieWerdVerwijderd> message)
Expand All @@ -180,9 +199,11 @@ await _elasticRepository.RemoveLocatie(
message.Data.Locatie.LocatieId);
}

private static VerenigingZoekDocument.Locatie Map(Registratiedata.Locatie locatie)
private static VerenigingZoekDocument.Locatie Map(Registratiedata.Locatie locatie, string vCode)
=> new()
{
JsonLdMetadata = CreateJsonLdMetadata(JsonLdType.Locatie, vCode, locatie.LocatieId.ToString()),

LocatieId = locatie.LocatieId,
Locatietype = locatie.Locatietype,
Naam = locatie.Naam,
Expand All @@ -203,7 +224,7 @@ public async Task Handle(EventEnvelope<MaatschappelijkeZetelWerdOvergenomenUitKb
{
await _elasticRepository.AppendLocatie(
message.VCode,
Map(message.Data.Locatie));
Map(message.Data.Locatie, message.VCode));
}

public async Task Handle(EventEnvelope<MaatschappelijkeZetelVolgensKBOWerdGewijzigd> message)
Expand All @@ -229,4 +250,11 @@ public async Task Handle(EventEnvelope<VerenigingWerdVerwijderd> message)
await _elasticRepository.UpdateAsync(message.VCode, new VerenigingZoekDocument
{ IsVerwijderd = true });
}

private static JsonLdMetadata CreateJsonLdMetadata(JsonLdType jsonLdType, params string[] values)
=> new()
{
Id = jsonLdType.CreateWithIdValues(values),
Type = jsonLdType.Type,
};
}
Loading

0 comments on commit 5c70e6f

Please sign in to comment.