Code
·
95 lines
·
2411 bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95# OpenKamer
Dit publieke .NET Core 7 project gebruikt het datamodel zoals te vinden is onder https://opendata.tweedekamer.nl/documentatie/
De XSD beschrijving is omgezet in C# classes, deze zijn te vinden onder OpenKamer.DataModel tkData-v1-0.cs
Een FeedController zorgt voor het overhalen van de data files volgens https://gegevensmagazijn.tweedekamer.nl/SyncFeed/2.0/ om deze vervolgens lokaal op te slaan (cache) op een filesysteem.

Een EntityController leest de datafiles en slaat de Entiteiten op in een mongodb server.

Na het importeren zijn dit de collecties binnen MongoDB

Voorbeeld (C#) van een mongodb query in een api method:
```c#
[HttpPost]
[Route("~/api/Fracties")]
public async Task<IActionResult> Fracties()
{
var query = @"
[
{ $match: { verwijderd: false, aantalZetels : { $gt : 0 } } },
{
$project:
{
_id: 0,
afkorting : 1,
naam: '$naamNl',
zetels: '$aantalZetels',
stemmen: '$aantalStemmen',
}
},
{
$sort: { aantalZetels : -1, aantalStemmen:-1 }
},
{ $skip: 0 },
{ $limit: 25 }
]";
var List = await db.GetCollection("fractieType").Aggregate(query).ToListAsync();
return Ok(new
{
List
});
}
```
Output (eerste 5):
```json
[
{
"afkorting": "VVD",
"naam": "Volkspartij voor Vrijheid en Democratie",
"zetels": 34,
"stemmen": 2279130
},
{
"afkorting": "D66",
"naam": "Democraten 66",
"zetels": 24,
"stemmen": 1565861
},
{
"afkorting": "PVV",
"naam": "Partij voor de Vrijheid",
"zetels": 17,
"stemmen": 1124482
},
{
"afkorting": "CDA",
"naam": "Christen-Democratisch App�l",
"zetels": 14,
"stemmen": 990601
},
{
"afkorting": "SP",
"naam": "Socialistische Partij",
"zetels": 9,
"stemmen": 623371
}
]
```
Als proof-of-concept is een webinterface beschikbaar waarbij beschikbare data kan worden opgevraagd.
Voorbeeld fractieType:
