@page "/group/{GroupId:guid}/completed" @using GmRelay.Web.Services @using GmRelay.Web.Services.Portfolio @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Components.Authorization @attribute [Authorize] @inject AuthorizedPortfolioService PortfolioService @inject AuthenticationStateProvider AuthStateProvider @inject NavigationManager Navigation Проведённые сессии — GM-Relay
@if (!string.IsNullOrEmpty(errorMessage)) {
⚠️ @errorMessage
} @if (sessions is null) {
} else if (sessions.Count == 0) {
📭
Проведённых сессий пока нет

Как только сессии закончатся, они появятся здесь и их можно будет добавить в портфолио.

} else {
@foreach (var session in sessions) {
@session.Title @session.ScheduledAt.FormatMoscow()
}
}
@code { [Parameter] public Guid GroupId { get; set; } private IReadOnlyList? sessions; private Guid? creatingDraftSessionId; private string? errorMessage; protected override async Task OnInitializedAsync() { sessions = await PortfolioService.GetCompletedSessionsForCurrentUserAsync(GroupId); } private async Task AddToPortfolio(Guid sessionId) { errorMessage = null; creatingDraftSessionId = sessionId; try { var portfolioId = await PortfolioService.CreateDraftForCurrentUserAsync(GroupId, sessionId); Navigation.NavigateTo($"/portfolio/manage/{portfolioId}"); } catch (SessionAccessDeniedException) { Navigation.NavigateTo("/access-denied"); } catch (Exception ex) { errorMessage = "Не удалось создать черновик: " + ex.Message; } finally { creatingDraftSessionId = null; } } }