Skip to content

Commit

Permalink
feat: OR-1759 add rename on related associations
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Lesage authored and koenmetsu committed Nov 9, 2023
1 parent 246df88 commit 145708f
Show file tree
Hide file tree
Showing 15 changed files with 73 additions and 33 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
namespace AssociationRegistry.Admin.ProjectionHost.Projections.Detail;

using System.Threading.Tasks;
using Events;
using Marten;
using Marten.Events;
Expand Down Expand Up @@ -37,13 +36,35 @@ await Update(@event.Data.Moedervereniging.VCode, @event, ops,

public async Task Project(IEvent<NaamWerdGewijzigd> @event, IDocumentOperations ops)
{
var doc = (await ops.LoadAsync<BeheerVerenigingDetailDocument>(@event.StreamKey!))!;

// ops.Query<BeheerVerenigingDetailDocument>()

BeheerVerenigingDetailProjector.Apply(@event, doc);
BeheerVerenigingDetailProjector.UpdateMetadata(@event, doc);
ops.Store(doc);
var updateDocs = Enumerable.Empty<BeheerVerenigingDetailDocument>().ToList();
var afdeling = (await ops.LoadAsync<BeheerVerenigingDetailDocument>(@event.StreamKey!))!;

var gerelateerdeVerenigingen = ops.Query<BeheerVerenigingDetailDocument>()
.Where(d => d.Relaties.Any(r => r.AndereVereniging.VCode == afdeling.VCode))
.ToList();

foreach (var gerelateerdeVereniging in gerelateerdeVerenigingen)
{
gerelateerdeVereniging.Relaties = gerelateerdeVereniging.Relaties.UpdateSingleWith(
identityFunc: relatie
=> relatie.AndereVereniging.VCode == @event.Data.VCode,
update: r => r with
{
AndereVereniging = r.AndereVereniging with
{
Naam = @event.Data.Naam,
},
})
.ToArray();

BeheerVerenigingDetailProjector.UpdateMetadata(@event, gerelateerdeVereniging);
updateDocs.Add(gerelateerdeVereniging);
}

BeheerVerenigingDetailProjector.Apply(@event, afdeling);
BeheerVerenigingDetailProjector.UpdateMetadata(@event, afdeling);
updateDocs.Add(afdeling);
ops.StoreObjects(updateDocs);
}

public async Task Project(IEvent<KorteNaamWerdGewijzigd> @event, IDocumentOperations ops)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,14 @@ public static IEnumerable<T> UpdateSingle<T>(this IEnumerable<T> collection, Fun
.Where(t1 => !identityFunc(t1))
.Append(updatedObject);
}

public static IEnumerable<T> UpdateSingleWith<T>(this IEnumerable<T> collection, Func<T, bool> identityFunc, Func<T, T> update)
{
var array = collection as T[] ?? collection.ToArray();
var objectToUpdate = array.Single(identityFunc);
var updatedObject = update(objectToUpdate);
return array
.Where(t1 => !identityFunc(t1))
.Append(updatedObject);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,12 @@ public record Sleutel
public string Waarde { get; init; } = null!;
}

public class Relatie
public record Relatie
{
public string Type { get; init; } = null!;
public GerelateerdeVereniging AndereVereniging { get; init; } = null!;

public class GerelateerdeVereniging
public record GerelateerdeVereniging
{
public string KboNummer { get; init; } = null!;
public string VCode { get; init; } = null!;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ public readonly V046_FeitelijkeVerenigingWerdGeregistreerd_ForWijzigStartdatum
public readonly V047_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen
V047AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen = new();

public readonly V048_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd
V048AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd = new();
public readonly V049_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd
V049AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd = new();


protected override async Task Given()
Expand Down Expand Up @@ -182,7 +182,7 @@ protected override async Task Given()
V045VerenigingMetRechtspersoonlijkheidWerdGeregistreerdWithContactgegevenFromKboForWijzigen,
V046FeitelijkeVerenigingWerdGeregistreerdForWijzigStartdatum,
V047AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen,
V048AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd
V049AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd
};

foreach (var scenario in scenarios)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V007_FeitelijkeVerenigingWerdGeregistreerd_WithContactgegeven()
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999007";
Naam = "Dee coolste club";
Naam = "De coolste club";
FeitelijkeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V008_FeitelijkeVerenigingWerdGeregistreerd_WithContactgegeven()
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999008";
Naam = "Dee coolste club";
Naam = "De coolste club";
FeitelijkeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V011_FeitelijkeVerenigingWerdGeregistreerd_WithVertegenwoordiger_ForRemov
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999011";
Naam = "Dee coolste club";
Naam = "De coolste club";
FeitelijkeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V014_FeitelijkeVerenigingWerdGeregistreerd_WithAllFields_ForWijzigBasisge
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999014";
Naam = "Dee coolste club";
Naam = "De coolste club";
FeitelijkeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V016_VerenigingMetRechtspersoonlijkheidWerdGeregistreerd_AlsMoeder_VoorRe
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999016";
Naam = "Dee coolste moeder";
Naam = "De coolste moeder";
VerenigingMetRechtspersoonlijkheidWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public V017_AfdelingWerdGeregistreerd_WithMinimalFields_And_Registered_Moeder()
var fixture = new Fixture().CustomizeAdminApi();

VCodeMoeder = "V9999017";
NaamMoeder = "Dee coolste moeder";
NaamMoeder = "De coolste moeder";
MoederWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
VCode = VCodeMoeder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V020_VerenigingMetRechtspersoonlijkheidWerdGeregistreerd_ForDuplicateDete
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999020";
Naam = "Dee coolste club";
Naam = "De coolste club";
VerenigingMetRechtspersoonlijkheidWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public V024_FeitelijkeVerenigingWerdGeregistreerd_WithLocatie_ForRemovingLocatie
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = "V9999024";
Naam = "Dee coolste club";
Naam = "De coolste club";
FeitelijkeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ public V047_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen()
{
var fixture = new Fixture().CustomizeAdminApi();

VCodeMoeder = "V9999017";
NaamMoeder = "Dee coolste moeder";
VCodeMoeder = "V9999047";
NaamMoeder = "De coolste moeder";
MoederWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
VCode = VCodeMoeder,
Naam = NaamMoeder,
};
KboNummerMoeder = MoederWerdGeregistreerd.KboNummer;

VCode = "V9999018";
VCode = "V9999048";
AfdelingWerdGeregistreerd = fixture.Create<AfdelingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,39 @@ namespace AssociationRegistry.Test.Admin.Api.Fixtures.Scenarios.EventsInDb;
using AssociationRegistry.Framework;
using Framework;
using AutoFixture;
using Vereniging;

public class V048_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd : IEventsInDbScenario
public class V049_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd : IEventsInDbScenario
{
public readonly VerenigingMetRechtspersoonlijkheidWerdGeregistreerd MoederWerdGeregistreerd;
public readonly AfdelingWerdGeregistreerd AfdelingWerdGeregistreerd;
public readonly NaamWerdGewijzigd NaamWerdGewijzigd;
public readonly CommandMetadata Metadata;

public V048_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd()
public V049_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd()
{
var fixture = new Fixture().CustomizeAdminApi();

VCodeMoeder = "V9999017";
NaamMoeder = "Dee coolste moeder";
VCodeMoeder = "V9999049";
NaamMoeder = "De coolste moeder";

VCode = "V9999050";
NaamAfdeling = "De coolste afdeling";

MoederWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
VCode = VCodeMoeder,
Naam = NaamMoeder,
Rechtsvorm = "SVON"
};
KboNummerMoeder = MoederWerdGeregistreerd.KboNummer;

VCode = "V9999018";
AfdelingWerdGeregistreerd = fixture.Create<AfdelingWerdGeregistreerd>() with
{
VCode = VCode,
Moedervereniging = new AfdelingWerdGeregistreerd.MoederverenigingsData(KboNummerMoeder, VCodeMoeder, NaamMoeder),
Locaties = Array.Empty<Registratiedata.Locatie>(),
Naam = "De minder coole afdeling",
KorteNaam = string.Empty,
Startdatum = null,
KorteBeschrijving = string.Empty,
Expand All @@ -43,23 +49,26 @@ public V048_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd()
NaamWerdGewijzigd = fixture.Create<NaamWerdGewijzigd>() with
{
VCode = VCode,
Naam = "De nog cooldere moeder"
Naam = NaamAfdeling
};

Metadata = fixture.Create<CommandMetadata>() with { ExpectedVersion = null };
}

public string KboNummerMoeder { get; set; }

public string NaamMoeder { get; set; }

public string NaamAfdeling { get; set; }

public string VCodeMoeder { get; set; }

public string VCode { get; set; }
public StreamActionResult Result { get; set; } = null!;

public IEvent[] GetEvents()
=> new IEvent[]
{ MoederWerdGeregistreerd, AfdelingWerdGeregistreerd };
{ MoederWerdGeregistreerd, AfdelingWerdGeregistreerd, NaamWerdGewijzigd };

public CommandMetadata GetCommandMetadata()
=> Metadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ namespace AssociationRegistry.Test.Admin.Api.When_Retrieving_Detail;
public class Given_MoederWerdGeregistreerd_And_Then_AfdelingWerdGeregistreerd_AndThen_NaamWerdGewijzigd
{
private readonly AdminApiClient _adminApiClient;
private readonly V048_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd _scenario;
private readonly V049_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd _scenario;

public Given_MoederWerdGeregistreerd_And_Then_AfdelingWerdGeregistreerd_AndThen_NaamWerdGewijzigd(EventsInDbScenariosFixture fixture)
{
_scenario = fixture.V048AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd;
_scenario = fixture.V049AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd;
_adminApiClient = fixture.DefaultClient;
}

Expand Down

0 comments on commit 145708f

Please sign in to comment.