profileShare

rasmusjy / splitapp-backend-clean-onion

Read-only snapshot

No repository description.

main default branch 429 files Expires Sep 13, 2026, 9:06 AM
_Layout.cshtml 7,535 bytes
1 @using Microsoft.AspNetCore.Identity
2 @using App.Domain.Identity
3 @using WebApp.Areas.Admin.Models
4 @inject SignInManager<AppUser> _signInManager
5 @{
6 var pageTitle = (Model as ITitledViewModel)?.Title;
7 if (string.IsNullOrWhiteSpace(pageTitle)) pageTitle = "Admin";
8 var ctx = ViewContext.RouteData.Values;
9 var currentController = (ctx["controller"] as string ?? "").ToLowerInvariant();
10 bool IsActive(string name) => currentController == name.ToLowerInvariant();
11 }
12
13 <!DOCTYPE html>
14 <html lang="@Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName">
15 <head>
16 <meta charset="utf-8" />
17 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
18 <meta name="theme-color" content="#e8604c" />
19 <title>@pageTitle - SplitApp Admin</title>
20
21 <link rel="preconnect" href="https://fonts.googleapis.com" />
22 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
23 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
24
25 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" />
26 <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
27 <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
28 <link rel="stylesheet" href="~/css/splitapp-design.css" asp-append-version="true" />
29 <link rel="stylesheet" href="~/css/admin.css" asp-append-version="true" />
30 </head>
31 <body class="admin-body">
32 <div id="sa-toast-container" class="sa-toast-container"></div>
33 <div id="sa-tempdata-messages" style="display:none"
34 data-success="@TempData["Success"]"
35 data-error="@TempData["Error"]"
36 data-warning="@TempData["Warning"]"></div>
37
38 <div class="admin-shell">
39 <aside class="admin-sidebar">
40 <div class="admin-sidebar-brand">
41 <i class="bi bi-airplane-fill"></i>
42 <span>SplitApp</span>
43 <small class="admin-sidebar-brand-sub">Admin</small>
44 </div>
45 <nav class="admin-sidebar-nav">
46 <a class="admin-nav-link @(IsActive("Dashboard") ? "active" : "")" asp-area="Admin" asp-controller="Dashboard" asp-action="Index">
47 <i class="bi bi-speedometer2"></i><span>@Localizer["Dashboard"]</span>
48 </a>
49 <div class="admin-nav-section">@Localizer["Core"]</div>
50 <a class="admin-nav-link @(IsActive("Trips") ? "active" : "")" asp-area="Admin" asp-controller="Trips" asp-action="Index">
51 <i class="bi bi-suitcase-lg"></i><span>@Localizer["Trips"]</span>
52 </a>
53 <a class="admin-nav-link @(IsActive("Expenses") ? "active" : "")" asp-area="Admin" asp-controller="Expenses" asp-action="Index">
54 <i class="bi bi-cash-coin"></i><span>@Localizer["Expenses"]</span>
55 </a>
56 <a class="admin-nav-link @(IsActive("BudgetCategories") ? "active" : "")" asp-area="Admin" asp-controller="BudgetCategories" asp-action="Index">
57 <i class="bi bi-tags"></i><span>@Localizer["Budget Categories"]</span>
58 </a>
59 <a class="admin-nav-link @(IsActive("Currencies") ? "active" : "")" asp-area="Admin" asp-controller="Currencies" asp-action="Index">
60 <i class="bi bi-currency-exchange"></i><span>@Localizer["Currencies"]</span>
61 </a>
62 <div class="admin-nav-section">@Localizer["Activity"]</div>
63 <a class="admin-nav-link @(IsActive("Polls") ? "active" : "")" asp-area="Admin" asp-controller="Polls" asp-action="Index">
64 <i class="bi bi-bar-chart"></i><span>@Localizer["Polls"]</span>
65 </a>
66 <a class="admin-nav-link @(IsActive("Wishlist") ? "active" : "")" asp-area="Admin" asp-controller="Wishlist" asp-action="Index">
67 <i class="bi bi-stars"></i><span>@Localizer["Wishlist"]</span>
68 </a>
69 <a class="admin-nav-link @(IsActive("Invitations") ? "active" : "")" asp-area="Admin" asp-controller="Invitations" asp-action="Index">
70 <i class="bi bi-envelope"></i><span>@Localizer["Invitations"]</span>
71 </a>
72 <div class="admin-nav-section">@Localizer["Settlements"]</div>
73 <a class="admin-nav-link @(IsActive("SettlementPlans") ? "active" : "")" asp-area="Admin" asp-controller="SettlementPlans" asp-action="Index">
74 <i class="bi bi-diagram-3"></i><span>@Localizer["Settlement Plans"]</span>
75 </a>
76 <a class="admin-nav-link @(IsActive("SettlementPayments") ? "active" : "")" asp-area="Admin" asp-controller="SettlementPayments" asp-action="Index">
77 <i class="bi bi-credit-card-2-front"></i><span>@Localizer["Settlement Payments"]</span>
78 </a>
79 <a class="admin-nav-link @(IsActive("SplitPresets") ? "active" : "")" asp-area="Admin" asp-controller="SplitPresets" asp-action="Index">
80 <i class="bi bi-pie-chart"></i><span>@Localizer["Split Presets"]</span>
81 </a>
82 <a class="admin-nav-link @(IsActive("TripParticipants") ? "active" : "")" asp-area="Admin" asp-controller="TripParticipants" asp-action="Index">
83 <i class="bi bi-people"></i><span>@Localizer["Trip Participants"]</span>
84 </a>
85 <div class="admin-nav-section">@Localizer["System"]</div>
86 <a class="admin-nav-link @(IsActive("Users") ? "active" : "")" asp-area="Admin" asp-controller="Users" asp-action="Index">
87 <i class="bi bi-person-gear"></i><span>@Localizer["Users"]</span>
88 </a>
89 </nav>
90 <div class="admin-sidebar-footer">
91 <a asp-area="" asp-controller="Home" asp-action="Index" class="admin-back-link">
92 <i class="bi bi-arrow-left"></i>@Localizer["Back to site"]
93 </a>
94 </div>
95 </aside>
96
97 <div class="admin-main">
98 <header class="admin-topbar">
99 <button class="admin-topbar-toggle d-md-none" type="button" onclick="document.body.classList.toggle('admin-sidebar-open')" aria-label="Toggle sidebar">
100 <i class="bi bi-list"></i>
101 </button>
102 <div class="admin-topbar-title">
103 <i class="bi bi-shield-lock"></i> @pageTitle
104 </div>
105 <div class="admin-topbar-actions">
106 <partial name="_LanguageSelection" />
107 <partial name="_LoginPartial" />
108 </div>
109 </header>
110
111 <main role="main" class="admin-content sa-animate-fade-in">
112 @RenderBody()
113 </main>
114
115 <footer class="admin-footer">
116 <span><i class="bi bi-airplane-fill me-1"></i> SplitApp Admin &copy; 2026 TalTech</span>
117 <span>@Thread.CurrentThread.CurrentUICulture.Name</span>
118 </footer>
119 </div>
120 </div>
121
122 <script src="~/lib/jquery/dist/jquery.min.js"></script>
123 <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
124 <script src="~/js/splitapp.js" asp-append-version="true"></script>
125 <script src="~/js/site.js" asp-append-version="true"></script>
126 @await RenderSectionAsync("Scripts", required: false)
127 </body>
128 </html>
129