profileShare

rasmusjy / splitapp-backend-clean-onion

Read-only snapshot

No repository description.

main default branch 429 files Expires Sep 13, 2026, 9:06 AM
Index.cshtml 3,565 bytes
1 @model AdminExpenseIndexViewModel
2 @using App.Domain
3
4 <div class="admin-page-header">
5 <div>
6 <h1><i class="bi bi-cash-coin me-2"></i>@Localizer["Expenses"]</h1>
7 <p class="lead">@Localizer["Manage all expenses across trips"]</p>
8 </div>
9 <a asp-action="Create" class="btn btn-primary">
10 <i class="bi bi-plus-lg me-1"></i>@Localizer["New"]
11 </a>
12 </div>
13
14 <div class="admin-card mb-3">
15 <div class="admin-card-body">
16 <form method="get" class="row g-2 align-items-end">
17 <div class="col-auto">
18 <select name="tripId" class="form-select">
19 <option value="">— @Localizer["All"] —</option>
20 @foreach (var t in Model.Trips)
21 {
22 <option value="@t.Id" selected="@(Model.CurrentTripId?.ToString() == t.Id.ToString())">@t.Name</option>
23 }
24 </select>
25 </div>
26 <div class="col-auto">
27 <input type="text" name="search" value="@Model.CurrentSearch" class="form-control" placeholder="@Localizer["Search..."]" />
28 </div>
29 <div class="col-auto">
30 <button type="submit" class="btn btn-outline-primary"><i class="bi bi-search me-1"></i>@Localizer["Search"]</button>
31 </div>
32 </form>
33 </div>
34 </div>
35
36 <div class="admin-card">
37 <div class="admin-card-body p-0">
38 @if (Model.Items.Any())
39 {
40 <table class="table admin-table mb-0">
41 <thead>
42 <tr>
43 <th>@Localizer["Description"]</th>
44 <th>@Localizer["Trip"]</th>
45 <th>@Localizer["PaidByUser"]</th>
46 <th>@Localizer["SplitMethod"]</th>
47 <th class="text-end">@Localizer["Amount"]</th>
48 <th>@Localizer["ExpenseDate"]</th>
49 <th class="text-end">@Localizer["Actions"]</th>
50 </tr>
51 </thead>
52 <tbody>
53 @foreach (var item in Model.Items)
54 {
55 <tr>
56 <td>@item.Description</td>
57 <td>@item.Trip?.Name</td>
58 <td>@item.PaidByUser?.Email</td>
59 <td>@WebApp.Helpers.EnumHelper.GetDisplayName(item.SplitMethod)</td>
60 <td class="text-end fw-bold">@item.Amount</td>
61 <td>@item.ExpenseDate.ToString("d")</td>
62 <td class="text-end">
63 <div class="admin-action-group">
64 <a asp-action="Details" asp-route-id="@item.Id" class="btn btn-outline-secondary btn-sm" title="@Localizer["Details"]"><i class="bi bi-eye"></i></a>
65 <a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-outline-primary btn-sm" title="@Localizer["Edit"]"><i class="bi bi-pencil"></i></a>
66 <a asp-action="Delete" asp-route-id="@item.Id" class="btn btn-outline-danger btn-sm" title="@Localizer["Delete"]"><i class="bi bi-trash"></i></a>
67 </div>
68 </td>
69 </tr>
70 }
71 </tbody>
72 </table>
73 }
74 else
75 {
76 <div class="admin-empty">
77 <i class="bi bi-inbox"></i>
78 <div>@Localizer["No items yet"]</div>
79 </div>
80 }
81 </div>
82 </div>
83