KoogleApp/src/Koogle.Web/Components/Pages/CashBook/MembershipFeeDialog.razor

113 lines
3.5 KiB
Plaintext

@using Koogle.Application.DTOs
<MudDialog>
<TitleContent>
<MudText Typo="Typo.h6">Mitgliedsbeiträge erfassen</MudText>
</TitleContent>
<DialogContent>
<MudText Class="mb-4">
Erstellt automatisch Einnahme-Buchungen für alle aktiven Mitglieder.
</MudText>
<MudStack Row="true" Spacing="4" Class="mb-4">
<MudSelect T="int" @bind-Value="_selectedMonth" Label="Monat" Style="width: 150px;">
@for (int m = 1; m <= 12; m++)
{
var month = m;
<MudSelectItem Value="@month">@GetMonthName(month)</MudSelectItem>
}
</MudSelect>
<MudSelect T="int" @bind-Value="_selectedYear" Label="Jahr" Style="width: 120px;">
@for (int y = DateTime.Today.Year; y >= DateTime.Today.Year - 2; y--)
{
var year = y;
<MudSelectItem Value="@year">@year</MudSelectItem>
}
</MudSelect>
</MudStack>
<MudSwitch @bind-Value="_useOverride" Label="Betrag überschreiben" Color="Color.Primary" Class="mb-2" />
@if (_useOverride)
{
<MudNumericField @bind-Value="_overrideAmount"
Label="Beitragshöhe"
Format="N2"
Adornment="Adornment.Start"
AdornmentText="€"
Min="0.01m"
HelperText="Überschreibt den Standard-Mitgliedsbeitrag"
Class="mb-4" />
}
else
{
<MudText Typo="Typo.body2" Color="Color.Secondary" Class="mb-4">
Es wird der in den Club-Einstellungen hinterlegte Standardbeitrag verwendet.
</MudText>
}
@if (_showWarning)
{
<MudAlert Severity="Severity.Warning" Class="mb-4">
Für @GetMonthName(_selectedMonth) @_selectedYear wurden bereits Mitgliedsbeiträge erfasst.
Trotzdem fortfahren?
</MudAlert>
}
</DialogContent>
<DialogActions>
<MudButton OnClick="Cancel">Abbrechen</MudButton>
<MudButton Color="Color.Primary" Variant="Variant.Filled" OnClick="Submit">
Beiträge erstellen
</MudButton>
</DialogActions>
</MudDialog>
@code {
[CascadingParameter]
private IMudDialogInstance? MudDialog { get; set; }
[Parameter]
public bool HasExistingFees { get; set; }
private int _selectedMonth = DateTime.Today.Month;
private int _selectedYear = DateTime.Today.Year;
private bool _useOverride;
private decimal _overrideAmount = 10.00m;
private bool _showWarning;
protected override void OnParametersSet()
{
_showWarning = HasExistingFees;
}
private static string GetMonthName(int month) => month switch
{
1 => "Januar",
2 => "Februar",
3 => "März",
4 => "April",
5 => "Mai",
6 => "Juni",
7 => "Juli",
8 => "August",
9 => "September",
10 => "Oktober",
11 => "November",
12 => "Dezember",
_ => month.ToString()
};
private void Cancel() => MudDialog?.Cancel();
private void Submit()
{
var dto = new CreateMembershipFeesDto
{
Year = _selectedYear,
Month = _selectedMonth,
OverrideAmount = _useOverride ? _overrideAmount : null
};
MudDialog?.Close(DialogResult.Ok(dto));
}
}