From 93f038ffa95f1c2f4780c684a1b780666b086882 Mon Sep 17 00:00:00 2001 From: Marijn Besseling Date: Sun, 21 Sep 2025 17:47:15 +0200 Subject: Add BRP Test data --- Blog/Components/App.razor | 1 + Blog/Components/Pages/BRP.razor | 8 +++++ Blog/Components/Pages/BRP.razor.cs | 37 ++++++++++++++++++++++ Blog/Components/Pages/BrpTestData.razor | 12 +++++++ Blog/Components/Pages/BrpTestData.razor.cs | 31 ++++++++++++++++++ Blog/Components/_Shared/JsonRender.razor | 51 ++++++++++++++++++++++++++++++ 6 files changed, 140 insertions(+) create mode 100644 Blog/Components/Pages/BRP.razor create mode 100644 Blog/Components/Pages/BRP.razor.cs create mode 100644 Blog/Components/Pages/BrpTestData.razor create mode 100644 Blog/Components/Pages/BrpTestData.razor.cs create mode 100644 Blog/Components/_Shared/JsonRender.razor (limited to 'Blog/Components') diff --git a/Blog/Components/App.razor b/Blog/Components/App.razor index 147be34..6025047 100644 --- a/Blog/Components/App.razor +++ b/Blog/Components/App.razor @@ -53,6 +53,7 @@
  • Note
  • QR-code scanner
  • QR-code generator
  • +
  • BRP Test Data
  • diff --git a/Blog/Components/Pages/BRP.razor b/Blog/Components/Pages/BRP.razor new file mode 100644 index 0000000..6595d3a --- /dev/null +++ b/Blog/Components/Pages/BRP.razor @@ -0,0 +1,8 @@ +@page "/BRP/{BSN}" +@using System.Text.Json +BRP + +
    + +
    + diff --git a/Blog/Components/Pages/BRP.razor.cs b/Blog/Components/Pages/BRP.razor.cs new file mode 100644 index 0000000..e7298a9 --- /dev/null +++ b/Blog/Components/Pages/BRP.razor.cs @@ -0,0 +1,37 @@ +using System.Text.Json; +using System.Text.RegularExpressions; +using Blog.Services; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Mvc; + +namespace Blog.Components.Pages; + +public partial class BRP : ComponentBase +{ + [Parameter] + public required string BSN { get; set; } + + [Inject] + public required BrpService Service { get; set; } + + private JsonDocument Entry { get; set; } + + protected override async Task OnInitializedAsync() + { + Entry = await Service.GetBrpEntryAsync(BSN).ConfigureAwait(true); + await base.OnInitializedAsync(); + } + + internal static string Url(string bsn) + { + return $"/BRP/{bsn}"; + } + + internal static bool LooksLikeBSN(string value) + { + return BsnRegex().IsMatch(value); + } + + [GeneratedRegex(@"^\d{8,9}$", RegexOptions.NonBacktracking)] + private static partial Regex BsnRegex(); +} \ No newline at end of file diff --git a/Blog/Components/Pages/BrpTestData.razor b/Blog/Components/Pages/BrpTestData.razor new file mode 100644 index 0000000..1b6240e --- /dev/null +++ b/Blog/Components/Pages/BrpTestData.razor @@ -0,0 +1,12 @@ +@page "/BRPTestData" +BRP Test Data + +
    + @foreach (var entry in Entries) + { +
    + @entry.bsn + @entry.naam +
    + } +
    \ No newline at end of file diff --git a/Blog/Components/Pages/BrpTestData.razor.cs b/Blog/Components/Pages/BrpTestData.razor.cs new file mode 100644 index 0000000..9d0fb35 --- /dev/null +++ b/Blog/Components/Pages/BrpTestData.razor.cs @@ -0,0 +1,31 @@ +using Blog.Models; +using Blog.Services; +using System.Linq; +using Microsoft.AspNetCore.Components; + +namespace Blog.Components.Pages; + +public partial class BrpTestData : ComponentBase, IDisposable +{ + public void Dispose() + { + CancellationTokenSource.Cancel(); + CancellationTokenSource.Dispose(); + } + + [Inject] + public BrpService Service { get; set; } + + private CancellationTokenSource CancellationTokenSource { get; set; } = new CancellationTokenSource(); + + protected override async Task OnInitializedAsync() + { + this.Entries = (await Service.GetBrpEntriesAsync(CancellationTokenSource.Token) + .ConfigureAwait(true)) + .Where(entry => entry.bsn[0] != '1') + .ToArray(); + await base.OnInitializedAsync(); + } + + private BRPEntry[] Entries { get; set; } = []; +} \ No newline at end of file diff --git a/Blog/Components/_Shared/JsonRender.razor b/Blog/Components/_Shared/JsonRender.razor new file mode 100644 index 0000000..17e08a1 --- /dev/null +++ b/Blog/Components/_Shared/JsonRender.razor @@ -0,0 +1,51 @@ +@using System.Text.Json +@using Blog.Components.Pages +@code { + + [Parameter] + public JsonElement? Element { get; set; } +} +@if (Element is { } element) +{ + @switch (element.ValueKind) + { + case JsonValueKind.Object: + { + + break; + } + case JsonValueKind.Array: + { +
      + @foreach (var item in element.EnumerateArray()) + { +
    1. + +
    2. + } +
    + break; + } + case JsonValueKind.String: + { + string value = element.GetString() ?? string.Empty; + @if (BRP.LooksLikeBSN(value)) + { + @value + } + else + { + @value + } + break; + } + } +} -- cgit v1.2.3