blob: f948b699d1715f41706c33b6ce352ec49f0326cd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
@page "/Monitor"
@if (_isInitialized) {
<h3>User</h3>
<LinkButton OnClick="@(() => {
NavigationManager.NavigateTo("/User/Devices");
return Task.CompletedTask;
})">Manage devices
</LinkButton>
@foreach (var user in AssignedUsers) {
<p>
<span>Assigned user @user</span>
@if (Alarms.ContainsKey(user)) {
<span>🔔</span>
<br/>
<i>@Alarms[user].Reason (@Alarms[user].CreatedAt)</i>
}
else {
<span>🔕</span>
}
</p>
<LinkButton OnClick="() => { _ = ManageUser(user); return Task.CompletedTask; }">Manage</LinkButton>
}
}
@if (!string.IsNullOrWhiteSpace(manageUserId)) {
<ModalWindow Title="Manage user">
<span>ID: @manageUserId</span><br/>
@if (Alarms.ContainsKey(manageUserId)) {
<span><b>User has alarm!</b></span>
<br/>
<i>@Alarms[manageUserId].Reason at @Alarms[manageUserId].CreatedAt.ToLocalTime()</i>
<LinkButton>Clear</LinkButton>
<br/>
}
<span>Budget: @manageUserBudget?.Amount EUR</span><br/>
<span>Add money: </span>
<FancyTextBox Value="@manageUserNewBudget?.Amount.ToString()"
ValueChanged="s => manageUserNewBudget.Amount = double.Parse(s)"/>
<span>, reason:</span>
<FancyTextBox @bind-Value="@manageUserNewBudget.Reason"/>
<LinkButton OnClick="@UpdateUserBudget">Add budget
</LinkButton>
</ModalWindow>
}
@code {
bool _isInitialized = false;
Dictionary<string, AlarmDto> Alarms { get; set; }
List<string> AssignedUsers { get; set; }
protected override async Task OnInitializedAsync() {
Alarms = await App.MonitorClient.GetAllAlarms();
AssignedUsers = await App.MonitorClient.GetAssignedUsers();
_isInitialized = true;
}
string? manageUserId { get; set; }
BudgetWithHistory? manageUserBudget { get; set; }
BudgetHistoryEntry manageUserNewBudget { get; set; }
private async Task ManageUser(string user) {
manageUserId = user;
manageUserBudget = await App.MonitorClient.GetBudget(manageUserId);
manageUserBudget ??= new BudgetWithHistory {
Amount = 0,
History = []
};
manageUserNewBudget = new() {
Venue = App.MonitorAuth.Username
};
StateHasChanged();
}
private async Task UpdateUserBudget() {
await App.MonitorClient.AddBudget(manageUserId, manageUserNewBudget);
await ManageUser(manageUserId);
}
}
|