@page "/Newsletter" @using Microsoft.Extensions.Options @using Wave.Data @using Microsoft.EntityFrameworkCore @attribute [Authorize(Roles = "Admin")] @inject IStringLocalizer Localizer @inject IDbContextFactory ContextFactory @inject IOptions Features @(Localizer["Title"] + TitlePostfix)

@Localizer["Title"]

@Localizer["Subscribers_Total"]
@SubscribersTotal
@Localizer["Subscribers_Active"]
@SubscribersActive
@foreach (var newsletter in Newsletters) { }
@Localizer["Newsletter_Heading_Article"] @Localizer["Newsletter_Heading_DistributionDateTime"] @Localizer["Newsletter_Heading_IsSend"]
@newsletter.Article.Title @newsletter.DistributionDateTime.ToString("g")
@Localizer["Newsletter_Footer_Timezone"] @TimeZoneInfo.Local
@code { [CascadingParameter(Name = "TitlePostfix")] private string TitlePostfix { get; set; } = default!; private IReadOnlyList Newsletters { get; set; } = []; private int SubscribersTotal { get; set; } private int SubscribersActive { get; set; } protected override async Task OnInitializedAsync() { await using var context = await ContextFactory.CreateDbContextAsync(); Newsletters = await context.Set() .IgnoreQueryFilters() .Include(n => n.Article) .Where(n => !n.Article.IsDeleted) .OrderByDescending(n => n.DistributionDateTime) .ToListAsync(); SubscribersTotal = await context.Set().IgnoreQueryFilters().CountAsync(); SubscribersActive = await context.Set().CountAsync(); } }