Skip to content

Commit 0b984ce

Browse files
koenmetsuemalfroy
authored andcommitted
fix: or-2462 only use necessary data in kbo sync for stopped vereniging
1 parent 4133c83 commit 0b984ce

File tree

12 files changed

+125
-74
lines changed

12 files changed

+125
-74
lines changed

src/AssociationRegistry.Magda/MagdaGeefVerenigingService.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public MagdaGeefVerenigingService(
4040
_logger = logger;
4141
}
4242

43-
public async Task<Result<VerenigingVolgensKbo>> GeefVereniging(
43+
public async Task<Result> GeefVereniging(
4444
KboNummer kboNummer,
4545
CommandMetadata metadata,
4646
CancellationToken cancellationToken)
@@ -95,7 +95,7 @@ public async Task<Result<VerenigingVolgensKbo>> GeefVereniging(
9595
}
9696
}
9797

98-
public async Task<Result<VerenigingVolgensKbo>> GeefSyncVereniging(
98+
public async Task<Result> GeefSyncVereniging(
9999
KboNummer kboNummer,
100100
CommandMetadata metadata,
101101
CancellationToken cancellationToken)
@@ -115,11 +115,16 @@ public async Task<Result<VerenigingVolgensKbo>> GeefSyncVereniging(
115115
var magdaOnderneming = magdaResponse?.Body?.GeefOndernemingResponse?.Repliek.Antwoorden.Antwoord.Inhoud.Onderneming ?? null;
116116

117117
if (magdaOnderneming is null ||
118-
// !HeeftToegestaneActieveRechtsvorm(magdaOnderneming) ||
119118
!IsOnderneming(magdaOnderneming) ||
120119
!IsRechtspersoon(magdaOnderneming))
121120
return VerenigingVolgensKboResult.GeenGeldigeVereniging;
122121

122+
if (!IsActief(magdaOnderneming))
123+
return VerenigingVolgensKboResult.InactieveVereniging(new InactieveVereniging()
124+
{
125+
EindDatum = DateOnlyHelper.ParseOrNull(magdaOnderneming.Stopzetting?.Datum, Formats.DateOnly)
126+
});
127+
123128
var naamOndernemingType = GetBestMatchingNaam(magdaOnderneming.Namen.MaatschappelijkeNamen);
124129

125130
if (naamOndernemingType is null)

src/AssociationRegistry/DecentraalBeheer/Registratie/RegistreerVerenigingUitKbo/RegistreerVerenigingUitKboCommandHandler.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,23 @@ public async Task<Result> Handle(
4646

4747
var geefVerenigingResult = await _magdaGeefVerenigingService.GeefVereniging(command.KboNummer, message.Metadata, cancellationToken);
4848

49-
if (geefVerenigingResult.IsFailure() || !geefVerenigingResult.Data.IsActief)
49+
if(geefVerenigingResult.IsFailure())
5050
throw new GeenGeldigeVerenigingInKbo();
5151

52-
await RegistreerInschrijving(command.KboNummer, message.Metadata, cancellationToken);
52+
switch (geefVerenigingResult)
53+
{
54+
case Result<VerenigingVolgensKbo> verenigingResult:
55+
await RegistreerInschrijving(command.KboNummer, message.Metadata, cancellationToken);
56+
57+
var result = await RegistreerVereniging(verenigingResult, message.Metadata, cancellationToken);
5358

54-
var result = await RegistreerVereniging(geefVerenigingResult, message.Metadata, cancellationToken);
59+
_logger.LogInformation($"Handle {nameof(RegistreerVerenigingUitKboCommandHandler)} end");
5560

56-
_logger.LogInformation($"Handle {nameof(RegistreerVerenigingUitKboCommandHandler)} end");
61+
return result;
5762

58-
return result;
63+
default:
64+
throw new ArgumentOutOfRangeException(nameof(geefVerenigingResult));
65+
}
5966
}
6067

6168
private async Task<Result> CheckForDuplicate(KboNummer kboNumber)

src/AssociationRegistry/Kbo/IMagdaGeefVerenigingService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66

77
public interface IMagdaGeefVerenigingService
88
{
9-
Task<Result<VerenigingVolgensKbo>> GeefVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken);
10-
Task<Result<VerenigingVolgensKbo>> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken);
9+
Task<Result> GeefVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken);
10+
Task<Result> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken);
1111
}

src/AssociationRegistry/Kbo/VerenigingVolgensKbo.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,10 @@ public record VerenigingVolgensKbo
1515
public DateOnly? EindDatum { get; set; }
1616
public bool IsActief { get; set; }
1717
}
18+
19+
public record InactieveVereniging
20+
{
21+
public KboNummer KboNummer { get; init; } = null!;
22+
public DateOnly? EindDatum { get; set; }
23+
}
24+

src/AssociationRegistry/Kbo/VerenigingVolgensKboResult.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
public class VerenigingVolgensKboResult
66
{
7-
public static Result<VerenigingVolgensKbo> GeldigeVereniging(VerenigingVolgensKbo verenigingVolgensKbo)
7+
public static Result GeldigeVereniging(VerenigingVolgensKbo verenigingVolgensKbo)
8+
=> Result.Success(verenigingVolgensKbo);
9+
10+
public static Result InactieveVereniging(InactieveVereniging verenigingVolgensKbo)
811
=> Result.Success(verenigingVolgensKbo);
912

1013
public static Result<VerenigingVolgensKbo> GeenGeldigeVereniging

src/AssociationRegistry/KboSyncLambda/SyncKbo/SyncKboCommandHandler.cs

Lines changed: 17 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,7 @@ public async Task<CommandResult> Handle(
5050
throw new GeenGeldigeVerenigingInKbo();
5151
}
5252

53-
vereniging.MarkeerAlsIngeschreven(message.Command.KboNummer);
54-
55-
if (verenigingVolgensMagda.Data.IsActief)
56-
{
57-
vereniging.WijzigRechtsvormUitKbo(verenigingVolgensMagda.Data.Type);
58-
vereniging.WijzigNaamUitKbo(VerenigingsNaam.Create(verenigingVolgensMagda.Data.Naam ?? ""));
59-
vereniging.WijzigKorteNaamUitKbo(verenigingVolgensMagda.Data.KorteNaam ?? "");
60-
vereniging.WijzigStartdatum(Datum.CreateOptional(verenigingVolgensMagda.Data.Startdatum ?? null));
61-
vereniging.WijzigMaatschappelijkeZetelUitKbo(verenigingVolgensMagda.Data.Adres);
62-
HandleContactgegevens(vereniging, verenigingVolgensMagda);
63-
}
64-
else
65-
{
66-
vereniging.StopUitKbo(Datum.Create(verenigingVolgensMagda.Data.EindDatum!.Value));
67-
}
68-
69-
vereniging.SyncCompleted();
53+
vereniging.NeemGegevensOverUitKboSync(verenigingVolgensMagda);
7054

7155
var result = await repository.Save(vereniging, message.Metadata, cancellationToken);
7256

@@ -75,39 +59,26 @@ public async Task<CommandResult> Handle(
7559
return CommandResult.Create(VCode.Create(vereniging.VCode), result);
7660
}
7761

78-
private static void HandleContactgegevens(
79-
VerenigingMetRechtspersoonlijkheid vereniging,
80-
Result<VerenigingVolgensKbo> verenigingVolgensMagda)
62+
private async Task RegistreerInschrijving(
63+
KboNummer kboNummer,
64+
CommandMetadata messageMetadata,
65+
CancellationToken cancellationToken)
8166
{
82-
vereniging.WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Email, ContactgegeventypeVolgensKbo.Email);
83-
vereniging.WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Website, ContactgegeventypeVolgensKbo.Website);
84-
85-
vereniging.WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Telefoonnummer,
86-
ContactgegeventypeVolgensKbo.Telefoon);
87-
88-
vereniging.WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.GSM, ContactgegeventypeVolgensKbo.GSM);
89-
}
90-
91-
private async Task RegistreerInschrijving(
92-
KboNummer kboNummer,
93-
CommandMetadata messageMetadata,
94-
CancellationToken cancellationToken)
67+
try
9568
{
96-
try
97-
{
98-
var result = await _registreerInschrijvingService.RegistreerInschrijving(
99-
kboNummer, messageMetadata, cancellationToken);
69+
var result = await _registreerInschrijvingService.RegistreerInschrijving(
70+
kboNummer, messageMetadata, cancellationToken);
10071

101-
if (result.IsFailure())
102-
throw new RegistreerInschrijvingKonNietVoltooidWorden();
72+
if (result.IsFailure())
73+
throw new RegistreerInschrijvingKonNietVoltooidWorden();
10374

104-
_logger.LogInformation(LoggerMessages.KboRegistreerInschrijvingGeslaagd, kboNummer);
105-
}
106-
catch (Exception ex)
107-
{
108-
_logger.LogError(ex, LoggerMessages.KboRegistreerInschrijvingNietGeslaagd, kboNummer);
75+
_logger.LogInformation(LoggerMessages.KboRegistreerInschrijvingGeslaagd, kboNummer);
76+
}
77+
catch (Exception ex)
78+
{
79+
_logger.LogError(ex, LoggerMessages.KboRegistreerInschrijvingNietGeslaagd, kboNummer);
10980

110-
throw new RegistreerInschrijvingKonNietVoltooidWorden();
111-
}
81+
throw new RegistreerInschrijvingKonNietVoltooidWorden();
11282
}
83+
}
11384
}

src/AssociationRegistry/Vereniging/VerenigingMetRechtspersoonlijkheid.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Exceptions;
77
using Framework;
88
using Kbo;
9+
using ResultNet;
910

1011
public class VerenigingMetRechtspersoonlijkheid : VerenigingsBase, IHydrate<VerenigingState>
1112
{
@@ -322,4 +323,50 @@ public void MarkeerAlsIngeschreven(KboNummer kboNummer)
322323
if(!State.IsIngeschrevenOpWijzigingenUitKbo)
323324
AddEvent(new VerenigingWerdIngeschrevenOpWijzigingenUitKbo(kboNummer));
324325
}
326+
327+
public void NeemGegevensOverUitKboSync(Result verenigingVolgensMagda)
328+
{
329+
MarkeerAlsIngeschreven(State.KboNummer);
330+
switch (verenigingVolgensMagda)
331+
{
332+
case Result<InactieveVereniging> inactieveVereniging:
333+
HandleInactief(inactieveVereniging.Data);
334+
335+
break;
336+
case Result<VerenigingVolgensKbo> actieveVereniging:
337+
HandleActief(actieveVereniging.Data);
338+
339+
break;
340+
default:
341+
throw new ArgumentOutOfRangeException(nameof(verenigingVolgensMagda));
342+
}
343+
SyncCompleted();
344+
}
345+
346+
private void HandleActief(VerenigingVolgensKbo verenigingVolgensMagda)
347+
{
348+
WijzigRechtsvormUitKbo(verenigingVolgensMagda.Type);
349+
WijzigNaamUitKbo(VerenigingsNaam.Create(verenigingVolgensMagda.Naam ?? ""));
350+
WijzigKorteNaamUitKbo(verenigingVolgensMagda.KorteNaam ?? "");
351+
WijzigStartdatum(Datum.CreateOptional(verenigingVolgensMagda.Startdatum ?? null));
352+
WijzigMaatschappelijkeZetelUitKbo(verenigingVolgensMagda.Adres);
353+
HandleContactgegevens(verenigingVolgensMagda);
354+
}
355+
356+
private void HandleInactief(InactieveVereniging verenigingVolgensMagda)
357+
{
358+
StopUitKbo(Datum.Create(verenigingVolgensMagda.EindDatum!.Value));
359+
}
360+
361+
private void HandleContactgegevens(
362+
Result<VerenigingVolgensKbo> verenigingVolgensMagda)
363+
{
364+
WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Email, ContactgegeventypeVolgensKbo.Email);
365+
WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Website, ContactgegeventypeVolgensKbo.Website);
366+
367+
WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.Telefoonnummer,
368+
ContactgegeventypeVolgensKbo.Telefoon);
369+
370+
WijzigContactgegevenUitKbo(verenigingVolgensMagda.Data.Contactgegevens.GSM, ContactgegeventypeVolgensKbo.GSM);
371+
}
325372
}

test/AssociationRegistry.Test.Admin.Api/Commands/VerenigingMetRechtspersoonlijkheid/When_SyncKbo/CommandHandling/With_Inactief_And_Einddatum.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@ public With_Inactief_And_Einddatum()
3434
var fixture = new Fixture().CustomizeAdminApi();
3535
_einddatum = fixture.Create<DateOnly>();
3636

37-
var verenigingVolgensKbo = fixture.Create<VerenigingVolgensKbo>() with
37+
var verenigingVolgensKbo = fixture.Create<InactieveVereniging>() with
3838
{
3939
EindDatum = _einddatum,
40-
IsActief = false,
4140
};
4241

4342
var command = new SyncKboCommand(_scenario.KboNummer);
@@ -75,7 +74,9 @@ public void Then_A_VerenigingWerdGestoptInKBO_Event_Is_Saved()
7574
.UncommittedEvents
7675
.ToArray()
7776
.Should()
78-
.ContainInOrder(new VerenigingWerdIngeschrevenOpWijzigingenUitKbo(_scenario.KboNummer), new VerenigingWerdGestoptInKBO(_einddatum), new SynchronisatieMetKboWasSuccesvol(_scenario.KboNummer))
77+
.ContainInOrder(new VerenigingWerdIngeschrevenOpWijzigingenUitKbo(_scenario.KboNummer),
78+
new VerenigingWerdGestoptInKBO(_einddatum),
79+
new SynchronisatieMetKboWasSuccesvol(_scenario.KboNummer))
7980
.And
8081
.HaveCount(3);
8182
}

test/AssociationRegistry.Test.Admin.Api/Framework/Fakes/MagdaGeefVerenigingNumberFoundServiceMock.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,27 @@
77

88
public class MagdaGeefVerenigingNumberFoundServiceMock : IMagdaGeefVerenigingService
99
{
10-
private readonly VerenigingVolgensKbo _verenigingVolgensKbo;
10+
11+
private readonly Result _result;
12+
13+
1114

1215
public MagdaGeefVerenigingNumberFoundServiceMock(VerenigingVolgensKbo verenigingVolgensKbo)
1316
{
14-
_verenigingVolgensKbo = verenigingVolgensKbo;
17+
_result = VerenigingVolgensKboResult.GeldigeVereniging(verenigingVolgensKbo);
18+
}
19+
20+
public MagdaGeefVerenigingNumberFoundServiceMock(InactieveVereniging inactieve)
21+
{
22+
_result = VerenigingVolgensKboResult.InactieveVereniging(inactieve);
1523
}
1624

17-
public Task<Result<VerenigingVolgensKbo>> GeefVereniging(
25+
public Task<Result> GeefVereniging(
1826
KboNummer kboNummer,
1927
CommandMetadata metadata,
2028
CancellationToken cancellationToken)
21-
=> Task.FromResult(VerenigingVolgensKboResult.GeldigeVereniging(_verenigingVolgensKbo));
29+
=> Task.FromResult(_result);
2230

23-
public Task<Result<VerenigingVolgensKbo>> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken)
24-
=> Task.FromResult(VerenigingVolgensKboResult.GeldigeVereniging(_verenigingVolgensKbo));
31+
public Task<Result> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken)
32+
=> Task.FromResult(_result);
2533
}

test/AssociationRegistry.Test.Admin.Api/Framework/Fakes/MagdaGeefVerenigingNumberNotFoundServiceMock.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77

88
public class MagdaGeefVerenigingNumberNotFoundServiceMock : IMagdaGeefVerenigingService
99
{
10-
public Task<Result<VerenigingVolgensKbo>> GeefVereniging(
10+
public async Task<Result> GeefVereniging(
1111
KboNummer kboNummer,
1212
CommandMetadata metadata,
1313
CancellationToken cancellationToken)
14-
=> Task.FromResult(VerenigingVolgensKboResult.GeenGeldigeVereniging);
14+
=> VerenigingVolgensKboResult.GeenGeldigeVereniging;
1515

16-
public Task<Result<VerenigingVolgensKbo>> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken)
17-
=> Task.FromResult(VerenigingVolgensKboResult.GeenGeldigeVereniging);
16+
public async Task<Result> GeefSyncVereniging(KboNummer kboNummer, CommandMetadata metadata, CancellationToken cancellationToken)
17+
=> VerenigingVolgensKboResult.GeenGeldigeVereniging;
1818
}

0 commit comments

Comments
 (0)