sqlinsight-pro/src/SQLInsight.Web/Components/Layout/MainLayout.razor
Søren Eggert Lundsteen Olsen 50bc878776 Customers file support cases in SQLInsight Web and follow their status
- Repository migration 0005: insight.SupportCases. The web UI has only
  db_datareader, so INSERT on this one table is granted to public.
- Web: /support (menu "Support") lists the customer's cases and, with
  Hub sync on and a Professional/Enterprise license, a form (title,
  description, contact; contact prefilled from the Windows user).
  /support?fund=<id> prefills from a finding: instance, rule, severity,
  explanation and non-sensitive measurements.
- "Opret supportsag" on findings: right-click a finding link or a
  finding's heading (support-menu.js, a static file within the CSP;
  Shift+F10/context key, Escape closes), and a visible button on the
  finding page that works without JavaScript. Only when support is
  available.
- Agent: sends pending requests to POST /api/v1/cases, stores the case
  number, backs off on failures and gives up on 400/401/403/422; fetches
  the customer's cases every 5 minutes (at once after sending).
- Docs: support.md (also on the community site), databehandling.md
  (contact details are sent to the hub).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 11:34:06 +02:00

57 lines
2.4 KiB
Text

@inherits LayoutComponentBase
@inject Microsoft.Extensions.Options.IOptions<WebOptions> Options
@inject InsightRepository Repository
<div class="shell">
<aside class="sidebar">
<a class="brand" href="/">
<span class="logo" aria-hidden="true">SI</span>
<span>SQLInsight <strong>Pro</strong></span>
</a>
<nav class="nav">
<span class="nav-label">Overvågning</span>
<NavLink href="/" Match="NavLinkMatch.All"><Icon Name="servers" /> Instanser</NavLink>
<NavLink href="/fund"><Icon Name="list" /> Alle fund</NavLink>
<NavLink href="/rapporter"><Icon Name="book" /> Rapporter</NavLink>
<NavLink href="/system"><Icon Name="gauge" /> System</NavLink>
<NavLink href="/support"><Icon Name="support" /> Support</NavLink>
<span class="nav-label">Community</span>
<a href="@Options.Value.ForumUrl" rel="noopener"><Icon Name="users" /> Forum</a>
<a href="@(new Uri(Options.Value.CommunityUrl, "dokumentation"))" rel="noopener"><Icon Name="book" /> Dokumentation</a>
</nav>
<div class="support-card">
<Icon Name="support" />
<strong>Brug for en ekspert?</strong>
<p>Professional og Enterprise giver prioriteret mail- og telefonsupport fra erfarne SQL Server-folk.</p>
<a href="@(new Uri(Options.Value.CommunityUrl, "support"))" rel="noopener">Se supportaftaler</a>
</div>
</aside>
<div class="main">
<header class="topbar">
<span class="topbar-note">Gratis og open source · kører on-prem</span>
<button type="button" class="theme-toggle" data-theme-toggle title="Skift mellem lyst og mørkt tema">
<Icon Name="moon" /> <span>Tema</span>
</button>
</header>
<main class="page">
@Body
</main>
<footer class="footer">SQLInsight Pro · MIT-licens · <a href="https://git.seosoft.dk/seo/sqlinsight-pro">kildekode</a></footer>
</div>
</div>
@if (_supportAvailable)
{
@* Tells support-menu.js that "Opret supportsag" may be offered on findings. *@
<div hidden data-support-available></div>
}
@code {
private bool _supportAvailable;
protected override async Task OnInitializedAsync() =>
_supportAvailable = (await Repository.GetHubStatusAsync())?.AllowsSupportCases == true;
}