@namespace OpenArchival.Blazor.ArtifactGroupingDisplay
@page "/archive/{GroupingIdString}"
@using Microsoft.EntityFrameworkCore
@using OpenArchival.DataAccess;
@using OpenArchival.Blazor.FileViewer
@using MudBlazor
@if (_artifactGrouping is not null)
{
@_artifactGrouping.Title
@**@
Description
@_artifactGrouping.Description
Artifact Identifier
@_artifactGrouping.ArtifactGroupingIdentifier
Primary Artifact Category
@_artifactGrouping.Category.Name
Primary Artifact Type
@_artifactGrouping.Type.Name
@foreach (ArtifactEntry child in _artifactGrouping.ChildArtifactEntries) {
}
}
@inject IArtifactGroupingProvider GroupingProvider;
@inject NavigationManager NavigationManager;
@inject IDbContextFactory ContextFactory;
@code {
[Parameter]
public string GroupingIdString { get; set; }
///
/// The converted grouping id from the URL
///
private int _groupingId { get; set; }
private ArtifactGrouping _artifactGrouping { get; set; } = default!;
protected override async Task OnParametersSetAsync()
{
_groupingId = int.Parse(GroupingIdString);
await using var context = await ContextFactory.CreateDbContextAsync();
var grouping = await context.ArtifactGroupings
.Include(g => g.Category)
.Include(g => g.IdentifierFields)
.Include(g => g.Type)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.StorageLocation)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.Type)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.Files)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.Tags)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.ListedNames)
.Include(g => g.ChildArtifactEntries)
.ThenInclude(e => e.Defects)
.Include(g => g.ViewCount)
.FirstOrDefaultAsync(g => g.Id == _groupingId);
if (grouping is null)
{
NavigationManager.NavigateTo("/grouping-not-found");
}
_artifactGrouping = grouping!;
if (_artifactGrouping.ViewCount is null)
{
var viewCount = new ArtifactGroupingViewCount() {Grouping=grouping, Views=1};
_artifactGrouping.ViewCount = viewCount;
context.Add(viewCount);
} else
{
_artifactGrouping.ViewCount.Views++;
}
await context.SaveChangesAsync();
StateHasChanged();
await base.OnParametersSetAsync();
}
}