diff --git a/ODPC.Server/Apis/Odrc/OdrcClientFactory.cs b/ODPC.Server/Apis/Odrc/OdrcClientFactory.cs index 2131369..d70960f 100644 --- a/ODPC.Server/Apis/Odrc/OdrcClientFactory.cs +++ b/ODPC.Server/Apis/Odrc/OdrcClientFactory.cs @@ -14,7 +14,7 @@ public class OdrcClientFactory(IHttpClientFactory httpClientFactory, IOptions _options = options; - public HttpClient Create(OdpUser user, string handeling) + public HttpClient Create(OdpUser user, string? handeling) { var config = _options.Value; var client = _httpClientFactory.CreateClient(); diff --git a/ODPC.Server/Apis/Odrc/PagedResponseModel.cs b/ODPC.Server/Apis/Odrc/PagedResponseModel.cs new file mode 100644 index 0000000..fa7a067 --- /dev/null +++ b/ODPC.Server/Apis/Odrc/PagedResponseModel.cs @@ -0,0 +1,10 @@ +namespace ODPC.Apis.Odrc +{ + public class PagedResponseModel + { + public List results { get; set; } + public int Count { get; set; } + public string? Next { get; set; } + public string? Previous { get; set; } + } +} diff --git a/ODPC.Server/Apis/Odrc/WaardelijstResponseModel.cs b/ODPC.Server/Apis/Odrc/WaardelijstResponseModel.cs new file mode 100644 index 0000000..fecf0d8 --- /dev/null +++ b/ODPC.Server/Apis/Odrc/WaardelijstResponseModel.cs @@ -0,0 +1,13 @@ +using System.ComponentModel; +using System.Text.Json.Serialization; + +namespace ODPC.Apis.Odrc +{ + public class WaardelijstResponseModel + { + [JsonPropertyName("uuid")] + public required string Id { get; set; } + [JsonPropertyName("naam")] + public required string Name { get; set; } + } +} diff --git a/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstViewModel.cs b/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstViewModel.cs index 5aec4de..8778934 100644 --- a/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstViewModel.cs +++ b/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstViewModel.cs @@ -1,10 +1,15 @@ -namespace ODPC.Features.WaardeLijstenOverzicht +using System.ComponentModel; +using System.Text.Json.Serialization; + +namespace ODPC.Features.WaardeLijstenOverzicht { - public class WaardelijstViewModel + public class WaardelijstViewModel { - + public required string Id { get; set; } + public required string Name { get; set; } - public required string Type { get; set; } + + public string Type { get; set; } = "INFORMATIECATEGORIE"; //tijdelijk. als de andere categorien ook uit het odrc gehaald worden, zullen de waardelijsten volledig gesplitst worden } } diff --git a/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstenController.cs b/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstenController.cs index 3545cb3..9b78d70 100644 --- a/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstenController.cs +++ b/ODPC.Server/Features/WaardeLijstenOverzicht/WaardelijstenController.cs @@ -1,24 +1,47 @@ -using Microsoft.AspNetCore.Mvc; +using System.Text.Json; +using System.Xml.Linq; +using Microsoft.AspNetCore.Mvc; +using ODPC.Apis.Odrc; +using ODPC.Authentication; +using ODPC.Config; +using ODPC.Features.Publicaties; namespace ODPC.Features.WaardeLijstenOverzicht { [Route("api/v1/[controller]")] [ApiController] - public class WaardelijstenController : ControllerBase + public class WaardelijstenController(OdpUser user, IOdrcClientFactory clientFactory) : ControllerBase { [HttpGet] - public IEnumerable Get() + public async Task> GetAsync() { - //hoe de waardelijsten api eruit komt te zien is nog onbekend. mogelijk wordt dit tzt losse endpoints per soort lijst, mogelijk worden de id's url's, mogelijk verschilt het model per soort lijst.... - //gezien alle onbekendheden kiezen we even voor een zo simpel mogelijke start opzet - return new WaardelijstViewModel[] { - new() { Id = "d3da5277-ea07-4921-97b8-e9a181390c76", Name="arbeidsomstandigheden", Type="THEMA" }, - new() { Id = "f1e4632d-9c71-4ea4-9048-a5665671bbe4", Name="wet of algemeen bindend voorschrift", Type="INFORMATIECATEGORIE" }, - new() { Id = "066241fe-7f39-41da-8efb-a702ef32b7d0", Name = "afval", Type="THEMA" }, - new() { Id = "8f939b51-dad3-436d-a5fa-495b42317d64", Name = "Organisatie 2", Type="ORGANISATIE" }, - new() { Id = "5c14e7e2-00a2-4990-adbb-7290cd89fb6e", Name = "Organisatie 3", Type="ORGANISATIE" }, - new() { Id = "0e7a0023-423a-421a-8700-359232fef584", Name = "europese zaken", Type="THEMA" } - }; + //infocategorien ophalen uit het ODRC + + //user en audit log handeling meegeven is misschien nog niet nodig, maar doet geen kwaad + var client = clientFactory.Create(user, "Waardelijsten ophalen"); + + var response = await client.GetAsync("/api/v1/informatiecategorieen/", new CancellationToken()); + + response.EnsureSuccessStatusCode(); + + var responseBody = await response.Content.ReadAsStringAsync(); + + var deserializedResponse = JsonSerializer.Deserialize>(responseBody, JsonSerialization.Options); + + var informatiecategorieen = deserializedResponse?.results ?? []; + + var waardelijstenViewModel = informatiecategorieen.Select(x=> new WaardelijstViewModel { Id = x.Id, Name = x.Name}).ToList(); + + + //nog wat dummy data toevoegen van andersoortige waardelijsten + waardelijstenViewModel.Add(new WaardelijstViewModel() { Id = "d3da5277-ea07-4921-97b8-e9a181390c76", Name = "arbeidsomstandigheden", Type = "THEMA" }); + waardelijstenViewModel.Add(new WaardelijstViewModel() { Id = "066241fe-7f39-41da-8efb-a702ef32b7d0", Name = "afval", Type = "THEMA" }); + waardelijstenViewModel.Add(new WaardelijstViewModel() { Id = "8f939b51-dad3-436d-a5fa-495b42317d64", Name = "Organisatie 2", Type="ORGANISATIE" }); + waardelijstenViewModel.Add(new WaardelijstViewModel() { Id = "5c14e7e2-00a2-4990-adbb-7290cd89fb6e", Name = "Organisatie 3", Type = "ORGANISATIE" }); + waardelijstenViewModel.Add(new WaardelijstViewModel() { Id = "0e7a0023-423a-421a-8700-359232fef584", Name = "europese zaken", Type = "THEMA" }); + + return waardelijstenViewModel; } + } }