feat(usability): explain booking fields and validate decimal input (U06)

This commit is contained in:
2026-11-02 06:32:32 +01:00
parent 33a8abf5cc
commit 76ba79b63e
12 changed files with 205 additions and 42 deletions
@@ -27,12 +27,20 @@ public partial class AddEntryDialog
private int? confirmedYear;
private bool OutsideYear => ContextYear.HasValue && date.Year != ContextYear.Value;
[Parameter] public string AccountName { get; set; } = string.Empty;
private bool CanSave => !string.IsNullOrWhiteSpace(title) && ValidAmount && date != default && (!OutsideYear || (confirmDifferentYear && confirmedYear == date.Year));
#region Fields
private EntryType entryType = EntryType.Income;
private DateTime date = DateTime.Today;
private string dateText = DateTime.Today.ToString("yyyy-MM-dd");
private DateTime date => Duempelkas.App.Services.BookingInput.Date(dateText);
private string title = string.Empty;
private decimal amount;
private string amountText = string.Empty;
private bool ValidAmount => Duempelkas.App.Services.BookingInput.TryAmount(amountText, out _);
private decimal amount => Duempelkas.App.Services.BookingInput.TryAmount(amountText, out var value) ? value : 0;
private bool initialized;
private int? initializedEntryId;
#endregion
@@ -40,12 +48,15 @@ public partial class AddEntryDialog
protected override void OnParametersSet()
{
if (initialized && initializedEntryId == EditEntry?.Id) return;
initialized = true;
initializedEntryId = EditEntry?.Id;
if (EditEntry != null)
{
entryType = EditEntry.Type;
date = EditEntry.Date;
dateText = EditEntry.Date.ToString("yyyy-MM-dd");
title = EditEntry.Title;
amount = EditEntry.Amount;
amountText = EditEntry.Amount.ToString("0.00", System.Globalization.CultureInfo.GetCultureInfo("de-DE"));
}
}
@@ -55,7 +66,7 @@ public partial class AddEntryDialog
private async Task Save()
{
if (OutsideYear && (!confirmDifferentYear || confirmedYear != date.Year)) return;
if (!CanSave) return;
if (EditEntry != null)
{
await EntryService.UpdateEntryAsync(EditEntry.Id, date, title.Trim(), amount);