@model WritingContextDisplayViewModel @{ var scene = Model.Context!.Scene!; var pov = scene.CharacterOptions.FirstOrDefault(x => x.Value == scene.POVCharacterID?.ToString())?.Text ?? scene.SceneCharacters.FirstOrDefault(x => x.CharacterID == scene.POVCharacterID)?.CharacterName ?? "No POV set"; var primaryLocation = scene.LocationOptions.FirstOrDefault(x => x.Value == scene.PrimaryLocationID?.ToString())?.Text?.Trim() ?? "No primary location"; var purposeLabels = scene.ScenePurposeTypes .Where(x => scene.SelectedPurposeTypeIds.Contains(x.ScenePurposeTypeID)) .OrderBy(x => x.SortOrder) .Select(x => x.PurposeName) .ToList(); static string TextOr(string? value, string fallback) => string.IsNullOrWhiteSpace(value) ? fallback : value.Trim(); }

Current Scene

@scene.SceneTitle

@TextOr(scene.Summary, "No scene summary has been written yet.")

Where and When

POV
@pov
Date
@(scene.StartDateTime?.ToString("d MMM yyyy") ?? scene.RelativeTimeText ?? "Unknown")
Time
@(scene.StartDateTime?.ToString("HH:mm") ?? scene.TimeModeName ?? "Unknown")
Location
@primaryLocation
Status
@(scene.RevisionStatuses.FirstOrDefault(x => x.Value == scene.RevisionStatusID.ToString())?.Text ?? scene.RevisionStatusID.ToString())

Purpose

@if (purposeLabels.Any()) {
@foreach (var purpose in purposeLabels) { @purpose }
} else {

No scene purpose selected.

}

@TextOr(scene.ScenePurposeNotes, "No purpose notes yet.")

Outcome

@TextOr(scene.SceneOutcomeNotes, "No outcome notes yet.")

Continuity

@if (scene.Warnings.Any() || scene.AgeContinuityWarnings.Any()) { } else {

No continuity warnings.

}