Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

or-2558 #1005

Merged
merged 11 commits into from
Nov 20, 2024
Merged

or-2558 #1005

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 38 additions & 70 deletions src/AssociationRegistry.Admin.Api/ValidationMessages.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions src/AssociationRegistry.Admin.Api/ValidationMessages.resx
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,10 @@
<data name="DatumTotMoetLaterZijnDanDatumVan" xml:space="preserve">
<value>Een einddatum in een periode moet altijd later zijn dan de startdatum.</value>
</data>
<data name="WerkingsgebiedKanNietGecombineerdWordenMetNVT">
<value>Het opgegeven werkingsgebied NVT kan niet gecombineerd worden met andere codes.</value>
</data>
<data name="WerkingsgebiedMagSlechtsEenmaalVoorkomen">
<value>Elke waarde in de werkingsgebieden mag slechts eenmaal voorkomen.</value>
</data>
</root>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
namespace AssociationRegistry.Admin.Api.Verenigingen.Common;

using FluentValidation;
using Infrastructure.Validation;
using Vereniging;

public class WerkingsgebiedenValidator : AbstractValidator<string[]?>
{
public WerkingsgebiedenValidator()
{
RuleFor(werkingsgebieden => werkingsgebieden)
.Must(NotHaveDuplicates)
.WithMessage(ValidationMessages.WerkingsgebiedMagSlechtsEenmaalVoorkomen)
.When(werkingsgebieden => werkingsgebieden is not null);

RuleFor(werkingsgebieden => werkingsgebieden)
.Must(NotHaveMoreThanOne)
.WithMessage(ValidationMessages.WerkingsgebiedKanNietGecombineerdWordenMetNVT)
.When(werkingsgebieden => werkingsgebieden is not null && werkingsgebieden.Contains(Werkingsgebied.NietVanToepassing.Code));

RuleForEach(werkingsgebieden => werkingsgebieden).MustNotContainHtml();
}

private static bool NotHaveDuplicates(string[]? values)
=> values is not null
? values.Length == values.DistinctBy(v => v.ToLower()).Count()
: true;

private static bool NotHaveMoreThanOne(string[]? values)
=> values is not null
? values.Length <= 1
: true;
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,23 @@ public class RegistreerFeitelijkeVerenigingRequest

/// <summary>De contactgegevens van deze vereniging</summary>
[DataMember]
public ToeTeVoegenContactgegeven[] Contactgegevens { get; set; } = Array.Empty<ToeTeVoegenContactgegeven>();
public ToeTeVoegenContactgegeven[] Contactgegevens { get; set; } = [];

/// <summary>Alle locaties waar deze vereniging actief is</summary>
[DataMember]
public ToeTeVoegenLocatie[] Locaties { get; set; } = Array.Empty<ToeTeVoegenLocatie>();
public ToeTeVoegenLocatie[] Locaties { get; set; } = [];

/// <summary>De vertegenwoordigers van deze vereniging</summary>
[DataMember]
public ToeTeVoegenVertegenwoordiger[] Vertegenwoordigers { get; set; } = Array.Empty<ToeTeVoegenVertegenwoordiger>();
public ToeTeVoegenVertegenwoordiger[] Vertegenwoordigers { get; set; } = [];

/// <summary>De codes van de hoofdactivititeiten volgens het verenigingsloket</summary>
[DataMember]
public string[] HoofdactiviteitenVerenigingsloket { get; set; } = Array.Empty<string>();
public string[] HoofdactiviteitenVerenigingsloket { get; set; } = [];

/// <summary>De codes van de werkingsgebieden</summary>
[DataMember]
public string[] Werkingsgebieden { get; set; } = Array.Empty<string>();
public string[]? Werkingsgebieden { get; set; } = [];

public RegistreerFeitelijkeVerenigingCommand ToCommand()
=> new(
Expand All @@ -70,5 +70,5 @@ public RegistreerFeitelijkeVerenigingCommand ToCommand()
Locaties.Select(ToeTeVoegenLocatie.Map).ToArray(),
Vertegenwoordigers.Select(ToeTeVoegenVertegenwoordiger.Map).ToArray(),
HoofdactiviteitenVerenigingsloket.Select(HoofdactiviteitVerenigingsloket.Create).ToArray(),
Werkingsgebieden.Select(Werkingsgebied.Create).ToArray());
Werkingsgebieden?.Select(Werkingsgebied.Create).ToArray() ?? AssociationRegistry.Vereniging.Werkingsgebieden.NietBepaald);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ namespace AssociationRegistry.Admin.Api.Verenigingen.Registreer.FeitelijkeVereni
using FluentValidation;
using Framework;
using Infrastructure.Validation;
using Vereniging;
using Vereniging.Exceptions;

public class RegistreerFeitelijkeVerenigingRequestValidator : AbstractValidator<RegistreerFeitelijkeVerenigingRequest>
Expand Down Expand Up @@ -38,8 +39,7 @@ public RegistreerFeitelijkeVerenigingRequestValidator(IClock clock)
.WithMessage("Een waarde in de hoofdactiviteitenLijst mag slechts 1 maal voorkomen.");

RuleFor(request => request.Werkingsgebieden)
.Must(NotHaveDuplicates)
.WithMessage("Een waarde in de werkingsgebiedenLijst mag slechts 1 maal voorkomen.");
.SetValidator(new WerkingsgebiedenValidator());

RuleFor(request => request.Startdatum)
.Must(BeTodayOrBefore)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
namespace AssociationRegistry.Admin.Api.Verenigingen.Registreer.MetRechtspersoonlijkheid;
namespace AssociationRegistry.Admin.Api.Verenigingen.Registreer.MetRechtspersoonlijkheid.RequestModels;

using AssociationRegistry.Admin.Api.Infrastructure.Validation;
using FluentValidation;
using Infrastructure.Validation;
using RequestModels;

public class RegistreerVerenigingUitKboRequestValidator : AbstractValidator<RegistreerVerenigingUitKboRequest>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace AssociationRegistry.Admin.Api.Verenigingen.WijzigBasisgegevens.Feiteli
using Common;
using FluentValidation;
using Infrastructure.Validation;
using Vereniging;

public class WijzigBasisgegevensRequestValidator : AbstractValidator<WijzigBasisgegevensRequest>
{
Expand All @@ -22,7 +23,6 @@ public WijzigBasisgegevensRequestValidator()

RuleFor(request => request.KorteBeschrijving).MustNotContainHtml();
RuleForEach(request => request.HoofdactiviteitenVerenigingsloket).MustNotContainHtml();
RuleForEach(request => request.Werkingsgebieden).MustNotContainHtml();

RuleFor(request => request.Naam)
.Must(naam => naam?.Trim() is null or not "")
Expand All @@ -34,9 +34,7 @@ public WijzigBasisgegevensRequestValidator()
.When(r => r.HoofdactiviteitenVerenigingsloket is not null);

RuleFor(request => request.Werkingsgebieden)
.Must(NotHaveDuplicates!)
.WithMessage("Elke waarde in de werkingsgebieden mag slechts 1 maal voorkomen.")
.When(r => r.Werkingsgebieden is not null);
.SetValidator(new WerkingsgebiedenValidator());

RuleFor(request => request.Doelgroep)
.SetValidator(new DoelgroepRequestValidator()!)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace AssociationRegistry.Admin.Api.Verenigingen.WijzigBasisgegevens.MetRech
using Common;
using FluentValidation;
using Infrastructure.Validation;
using Vereniging;

public class WijzigBasisgegevensRequestValidator : AbstractValidator<WijzigBasisgegevensRequest>
{
Expand All @@ -26,12 +27,8 @@ public WijzigBasisgegevensRequestValidator()
.WithMessage("Elke waarde in de hoofdactiviteiten mag slechts 1 maal voorkomen.")
.When(r => r.HoofdactiviteitenVerenigingsloket is not null);

RuleForEach(request => request.Werkingsgebieden).MustNotContainHtml();

RuleFor(request => request.Werkingsgebieden)
.Must(NotHaveDuplicates!)
.WithMessage("Elke waarde in de werkingsgebieden mag slechts 1 maal voorkomen.")
.When(r => r.Werkingsgebieden is not null);
.SetValidator(new WerkingsgebiedenValidator());

RuleFor(request => request.Doelgroep)
.SetValidator(new DoelgroepRequestValidator()!)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
namespace AssociationRegistry.Public.Api.Werkingsgebieden.ResponseExamples;

using ResponseModels;
using Swashbuckle.AspNetCore.Filters;
using Vereniging;
using Werkingsgebied = ResponseModels.Werkingsgebied;

public class WerkingsgebiedenResponseExamples : IExamplesProvider<WerkingsgebiedenResponse[]>
{
public WerkingsgebiedenResponse[] GetExamples()
=>
[
new()
{
Werkingsgebieden = [],
},
new()
{
Werkingsgebieden = Werkingsgebieden.NietVanToepassing
.Select(wg => new Werkingsgebied
{
Code = wg.Code,
Naam = wg.Naam,
}
).ToArray(),
},
new()
{
Werkingsgebieden = AssociationRegistry.Vereniging.Werkingsgebied.All.Take(5)
.Select(wg => new Werkingsgebied
{
Code = wg.Code,
Naam = wg.Naam,
})
.ToArray(),
},
];
}
Loading
Loading