moties werken (zonder caching)

Alphons van der Heijden <alphons@heijden.com> 7 Dec 2022, 13:22
fae52fbeddfa8b5f75f3e564b7a57ad303c41f2d
1 files changed
  • src/OpenKamer.LogicControllers/Web/Doucumenten.cs
diff --git a/src/OpenKamer.LogicControllers/Web/Doucumenten.cs b/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
index be4684c..31d84bc 100644
--- a/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
+++ b/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
@@ -11,34 +11,159 @@ public partial class WebController : ControllerBase
[Route("~/api/Moties")]
public async Task<IActionResult> Moties()
{
+ // documentType
+ // onderwerp: { $regex: '.*Motie van het lid Bromet.*', $options: 'i' },
var a = @"
[
+{
+ $match:
{
- $match:
- {
- 'organisatie' : 'Tweede Kamer',
- 'soort' : 'Motie',
- 'vergaderjaar' : '2021-2022'
- }
- },
+ verwijderd: false,
+ soort: 'Motie',
+ datum: { $gte:ISODate(""2022-11-01"") , $lt:ISODate(""2022-12-01"") }
+ }
+},
+
+{
+ $lookup:
{
- $project:
- {
- _id : 0,
- titel: '$titel',
- onderwerp: '$onderwerp',
- datum: '$datum',
- jaar: '$vergaderjaar'
+ localField: 'kamerstukdossier.ref',
+ from: 'kamerstukdossierType',
+ foreignField: '_id',
+ as: 'kamerstukdossier',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ verwijderd:0,
+ _id:0,
+ }
+ }
+ ]
+ }
+},
+{ $unwind: '$kamerstukdossier' },
+
+{
+ $lookup:
+ {
+ localField: 'huidigeDocumentVersie.ref',
+ from: 'documentVersieType',
+ foreignField: '_id',
+ as: 'huidigeDocumentVersie',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ verwijderd:0,
+ _id:0,
+ document:0
+ }
+ }
+ ]
+ }
+},
+{ $unwind: '$huidigeDocumentVersie' },
- }
- },
+{
+ $lookup:
+ {
+ localField: 'zaak.ref',
+ from: 'zaakType',
+ foreignField: '_id',
+ as: 'zaak',
+ pipeline:
+ [
+ {
+ $lookup:
+ {
+ localField: '_id',
+ from: 'besluitType',
+ foreignField: 'zaak.ref',
+ as: 'besluiten',
+ pipeline:
+ [
+ { $match: { verwijderd: false, besluitSoort: {$nin: [ null, 'Ingediend' ]} } },
+ {
+ $project:
+ {
+ agendapunt:0,
+ verwijderd:0,
+ zaak:0,
+ status:0,
+ agendapuntZaakBesluitVolgorde:0,
+ bijgewerkt:0
+ }
+ },
+ {
+ $lookup:
+ {
+ localField: '_id',
+ from: 'stemmingType',
+ foreignField: 'besluit.ref',
+ as: 'stemmingen',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ _id: 0,
+ verwijderd:0,
+ sidActorLid:0,
+ sidActorFractie: 0,
+ fractie:0,
+ bijgewerkt:0,
+ besluit:0,
+ vergissing:0,
+ persoon:0
+ }
+ },
+ {
+ $sort: { soort: -1 , actorNaam : 1}
+ }
+ ]
+ }
+ },
+ {
+ $sort: { 'stemmingen.soort':1, actorNaam:1 }
+ }
+ ]
+ }
+ },
+ {
+ $project:
+ {
+ _id:0,
+ kamerstukdossier:0,
+ agendapunt:0
+ }
+ },
+ { $unwind: '$besluiten' }
+ ]
+ }
+},
+{ $unwind: '$zaak' },
+
+{
+ $project:
+ {
+ verwijderd:0
+ }
+},
+{
+ $sort: { datum:-1, _id:1 }
+}
{ $skip: 0 },
-{ $limit: 100 }
+{ $limit: 10 }
]
";
-
var List = await db.GetCollection("documentType").Aggregate(a).ToListAsync();
return Ok(new