@model FeatureRequestDetailsViewModel @using Microsoft.AspNetCore.Html @using System.Text.Encodings.Web @{ ViewData["Title"] = Model.Request.Title; var request = Model.Request; }

Admin / Feature Request

@request.Title

@request.UserDisplayName (@request.UserEmail)

Back to list
@if (TempData["AdminMessage"] is string adminMessage) {
@adminMessage
}

Request

Status

@StatusBadge(request.Status)

Conversation

@ConversationBadge(request.ConversationState)

App area

@(request.AppArea ?? "Not set")

Importance

@(request.Importance ?? "Not set")

Created

@FormatDate(request.CreatedUtc)

Latest activity

@FormatNullableDate(request.LatestActivityUtc)

@request.Description

Conversation

@await Html.PartialAsync("~/Views/FeatureRequests/_Conversation.cshtml", Model)

Admin controls

Only Candidate, Planned, In Progress and Shipped requests appear on the roadmap.
@section Scripts { } @functions { private static string FormatDate(DateTime value) => value.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); private static string FormatNullableDate(DateTime? value) => value.HasValue ? FormatDate(value.Value) : "None yet"; private static IHtmlContent StatusBadge(string status) { var css = status switch { FeatureRequestStatuses.New => "text-bg-primary", FeatureRequestStatuses.NeedsDetail => "text-bg-warning", FeatureRequestStatuses.UnderReview => "text-bg-info", FeatureRequestStatuses.Candidate => "text-bg-secondary", FeatureRequestStatuses.Planned => "text-bg-success", FeatureRequestStatuses.InProgress => "text-bg-success", FeatureRequestStatuses.Shipped => "text-bg-dark", FeatureRequestStatuses.NotPlanned => "text-bg-light", _ => "text-bg-secondary" }; return new HtmlString($"{HtmlEncoder.Default.Encode(status)}"); } private static IHtmlContent ConversationBadge(string state) { var css = state switch { FeatureRequestConversationStates.WaitingForAdminReply => "text-bg-danger", FeatureRequestConversationStates.WaitingForUserReply => "text-bg-warning", _ => "text-bg-secondary" }; return new HtmlString($"{HtmlEncoder.Default.Encode(state)}"); } }