@page "/seizoenen"
@attribute [Authorize(Policy = "Editor")]
@inject SeasonService SeizoenSvc
@inject ArticleService Artikelen
@inject LatexService Latex
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Af
Seizoenen — ProostenKrant
Seizoenen & drukwerk
Per seizoen wordt een editie van de krant gedrukt. Publiceer artikelen en druk daarna de editie.
@if (_melding is not null)
{
@_melding
@if (_nieuwPdf is not null)
{
Download de krant →
}
}
@if (_fout is not null)
{
}
@foreach (var seizoen in _seizoenInfo)
{
@seizoen.Season.Name @seizoen.Season.StartDate.Year
@if (seizoen.IsHuidig)
{
lopende editie
}
@Krant.DutchShortDate(seizoen.Season.StartDate) — @Krant.DutchShortDate(seizoen.Season.EndDate)
- @seizoen.Gepubliceerd gepubliceerd
- @seizoen.Klad klad
}
Gedrukte edities
@if (_edities.Count > 0)
{
| Editie | Datum | Grootte | |
@foreach (var editie in _edities)
{
| @editie.DisplayName |
@Krant.DutchShortDate(editie.Date) |
@(editie.SizeBytes / 1024) kB |
Download PDF |
}
}
else
{
Er werd nog geen editie gedrukt.
}
@code {
[SupplyParameterFromForm(FormName = "genereer-seizoen")]
private GenereerInput Input { get; set; } = new();
private sealed class GenereerInput
{
public int SeasonId { get; set; }
}
private List<(Season Season, int Gepubliceerd, int Klad, bool IsHuidig)> _seizoenInfo = new();
private List _edities = new();
private string? _melding;
private string? _fout;
private string? _nieuwPdf;
private string? _afToken;
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
protected override async Task OnInitializedAsync()
{
_afToken = Af.GetAndStoreTokens(HttpContext).RequestToken;
var seasons = await SeizoenSvc.GetAllAsync();
var alle = await Artikelen.GetAllAsync();
_seizoenInfo = seasons.Select(s =>
{
var vanS = alle.Where(a => a.SeasonId == s.Id).ToList();
return (s, vanS.Count(a => a.Status == "published"), vanS.Count(a => a.Status == "draft"),
s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now);
}).ToList();
_edities = Latex.ListEditions();
LeesMelding();
}
private void LeesMelding()
{
var query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(new Uri(Nav.Uri).Query);
query.TryGetValue("melding", out var melding);
query.TryGetValue("fout", out var fout);
_melding = melding;
_fout = fout;
query.TryGetValue("pdf", out var pdf);
_nieuwPdf = pdf;
}
}