| Name | Message | Date |
|---|---|---|
| 📄 Date.razor | 11 days ago | |
| 📄 Login.razor | 11 days ago | |
| 📄 Logout.razor | 11 days ago | |
| 📄 Participants.razor | 11 days ago | |
| 📄 Questions.razor | 11 days ago |
📄
MatDenDagen/Components/Pages/Admin/Date.razor
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
@page "/admin/date"
@attribute [Authorize(Roles = "Admin")]
@using MatDenDagen.Infrastructure.Storage.Database
@using MatDenDagen.Models
@using MatDenDagen.Services
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components
@inject DateService dateService
@inject QuestionnaireContext questionnaireContext
<h2>Konfigurera datum</h2>
<EditForm FormName="ConfigureDateSpan" Model="@dateSpanModel" OnSubmit="@SaveDateSpan" Enhance>
<p>
<label>
<span>Startdatum:</span>
<input type="date" name="dateSpanModel.Start" value="@(dateSpanModel?.Start ?? string.Empty)" required />
</label>
</p>
<p>
<label>
<span>Slutdatum:</span>
<input type="date" name="dateSpanModel.End" value="@(dateSpanModel?.End ?? string.Empty)" required />
</label>
</p>
<p>
<input type="submit" value="Spara datumspan" />
</p>
</EditForm>
@if (errorMessage != null)
{
<p>@errorMessage</p>
}
@if (showSuccessMessage)
{
<p>Datumspanen har sparats!</p>
}
<hr />
@if (currentDateSpan is null)
{
<p>Ingen datumspan är konfigurerad ännu.</p>
}
else
{
<EditForm FormName="RandomizeDate" Model="@dateModel" OnSubmit="@RandomizeDate" Enhance>
<button type="submit" disabled="@(!canRandomizeDate)">
Slumpa datum för <strong>dagen</strong>
</button>
</EditForm>
@if (showRandomizeSuccessMessage)
{
<p>Datumet för <strong>dagen</strong> har slumpats och sparats!</p>
}
}
@code {
[SupplyParameterFromForm]
private DateSpanModel? dateSpanModel { get; set; }
[SupplyParameterFromForm]
private object? dateModel { get; set; }
private DateSpan? currentDateSpan { get; set; }
private bool showSuccessMessage { get; set; }
private bool showRandomizeSuccessMessage { get; set; }
private string? errorMessage { get; set; }
protected override async Task OnInitializedAsync()
{
currentDateSpan = await dateService.GetDateSpanAsync();
if (currentDateSpan != null)
{
dateSpanModel = new()
{
Start = currentDateSpan.Start.ToString(),
End = currentDateSpan.End.ToString()
};
}
else
{
dateSpanModel ??= new();
}
dateModel ??= new();
}
private async Task SaveDateSpan()
{
if (dateSpanModel?.Start == null || dateSpanModel?.End == null)
{
errorMessage = "Både startdatum och slutdatum måste anges.";
return;
}
if (!DateOnly.TryParse(dateSpanModel.Start, out var startDate) ||
!DateOnly.TryParse(dateSpanModel.End, out var endDate))
{
errorMessage = "Ogiltigt datumformat. Använd ÅÅÅÅ-MM-DD.";
return;
}
var dateSpan = new DateSpan { Start = startDate, End = endDate };
if (!dateSpan.IsValid)
{
errorMessage = "Startdatum måste vara före eller lika med slutdatum.";
return;
}
try
{
await dateService.SaveDateSpanAsync(dateSpan);
currentDateSpan = dateSpan;
showSuccessMessage = true;
}
catch (Exception ex)
{
errorMessage = "Ett fel uppstod vid sparande: " + ex.Message;
}
}
private async Task RandomizeDate()
{
var result = await dateService.RandomizeDateAsync();
if (result != null)
{
showRandomizeSuccessMessage = true;
}
else
{
errorMessage = "Kunde inte slumpa datum. Kontrollera att datumspanen är korrekt konfigurerad.";
}
}
private bool canRandomizeDate => currentDateSpan?.IsValid ?? false;
private sealed class DateSpanModel
{
public string? Start { get; set; }
public string? End { get; set; }
}
}