summary refs log tree commit diff
path: root/testFrontend/SafeNSound.Demo/Pages/Monitor.razor
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>&#x1F514;</span>
                <br/>
                <i>@Alarms[user].Reason (@Alarms[user].CreatedAt)</i>
            }
            else {
                <span>&#x1F515;</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);
    }

}