diff --git a/Wave/Components/Pages/ManageCategories.razor b/Wave/Components/Pages/ManageCategories.razor index 482ae04..24f459a 100644 --- a/Wave/Components/Pages/ManageCategories.razor +++ b/Wave/Components/Pages/ManageCategories.razor @@ -4,55 +4,56 @@ @using System.ComponentModel.DataAnnotations @using Wave.Utilities +@rendermode InteractiveServer @attribute [Authorize(Policy = "CategoryManagePermissions")] @inject IDbContextFactory ContextFactory @inject IStringLocalizer Localizer +@inject IMessageDisplay Message @(TitlePrefix + Localizer["Title"]) + + + + + + + + @foreach (var color in Enum.GetValues()) { + string postfix = CategoryUtilities.GetCssClassPostfixForColor(color); + + } + + + + + + + +

@Localizer["Title"]

- - -@if (!string.IsNullOrWhiteSpace(Message)) { -
- @Message -
-} - -
- - -
- - - - @foreach (var color in Enum.GetValues()) { - string postfix = CategoryUtilities.GetCssClassPostfixForColor(color); - - } - - - -
-
-
-
+
+ +
@@ -60,18 +61,17 @@ [CascadingParameter(Name = "TitlePrefix")] private string TitlePrefix { get; set; } = default!; - [SupplyParameterFromForm] private InputModel Model { get; set; } = new(); - private List Categories { get; set; } = new(); + private List Categories { get; } = new(); - private string Message { get; set; } = string.Empty; + private static string ModalId => "CreateCategoryDialog"; protected override async Task OnInitializedAsync() { await using var context = await ContextFactory.CreateDbContextAsync(); - Categories = await context.Set().OrderBy(c => c.Color).ToListAsync(); + (await context.Set().OrderBy(c => c.Color).ToListAsync()).ForEach(c => Categories.Add(c)); } - private async Task AddCategory_OnValidSubmit() { + private async Task AddCategory() { try { await using var context = await ContextFactory.CreateDbContextAsync(); @@ -83,10 +83,24 @@ await context.AddAsync(category); await context.SaveChangesAsync(); Categories.Add(category); + Categories.Sort((c1, c2) => c1.Color.CompareTo(c2.Color)); Model = new(); - Message = Localizer["Category_Success"]; + Message.ShowSuccess(Localizer["Category_Success"]); } catch { - Message = Localizer["Category_Error"]; + Message.ShowError(Localizer["Category_Error"]); + } + } + + private async Task DeleteCategory(Category category) { + try { + await using var context = await ContextFactory.CreateDbContextAsync(); + + context.Remove(category); + await context.SaveChangesAsync(); + Categories.Remove(category); + Message.ShowSuccess(Localizer["Category_Delete_Success"]); + } catch { + Message.ShowError(Localizer["Category_Delete_Error"]); } } diff --git a/Wave/Resources/Components/Pages/ManageCategories.de-DE.resx b/Wave/Resources/Components/Pages/ManageCategories.de-DE.resx index 7241925..ff758f2 100644 --- a/Wave/Resources/Components/Pages/ManageCategories.de-DE.resx +++ b/Wave/Resources/Components/Pages/ManageCategories.de-DE.resx @@ -137,4 +137,10 @@ Fehler beim hinzufügen der Kategorie. Kategorien müssen einzigartis sein, ungeachtet Groß-/Kleinschreibung oder Akzenten. + + Kategorie wurde erfolgreich gelöscht + + + Konnte Kategorie nicht löschen, wird sie noch verwendet? + \ No newline at end of file diff --git a/Wave/Resources/Components/Pages/ManageCategories.resx b/Wave/Resources/Components/Pages/ManageCategories.resx index 94e1bf4..2187f2d 100644 --- a/Wave/Resources/Components/Pages/ManageCategories.resx +++ b/Wave/Resources/Components/Pages/ManageCategories.resx @@ -137,4 +137,10 @@ Failed to add category. Categories need to be unique, ignoring case and accents. + + Successfully deleted Category + + + Could not delete Category, is it still used? + \ No newline at end of file