diff --git a/Wave/Components/Pages/ManageCategories.razor b/Wave/Components/Pages/ManageCategories.razor index 676c29c..f542d24 100644 --- a/Wave/Components/Pages/ManageCategories.razor +++ b/Wave/Components/Pages/ManageCategories.razor @@ -5,7 +5,6 @@ @using Humanizer @using Wave.Utilities -@rendermode InteractiveServer @attribute [Authorize(Policy = "CategoryManagePermissions")] @inject IDbContextFactory ContextFactory @@ -16,23 +15,26 @@ - - - - - - @foreach (var color in Enum.GetValues()) { - string postfix = CategoryUtilities.GetCssClassPostfixForColor(color); - - } - - +
+ + + + + + + @foreach (var color in Enum.GetValues()) { + string postfix = CategoryUtilities.GetCssClassPostfixForColor(color); + + } + + +
- +
@@ -69,11 +71,16 @@ bg-error text-error-content @category.Color.Humanize() - +
+ + + + + } @@ -84,14 +91,17 @@ bg-error text-error-content [CascadingParameter(Name = "TitlePostfix")] private string TitlePostfix { get; set; } = default!; + [SupplyParameterFromForm(FormName = "add-category")] private InputModel Model { get; set; } = new(); + [SupplyParameterFromForm(Name = "category-id")] + private Guid CategoryId { get; set; } private List Categories { get; } = new(); private static string ModalId => "CreateCategoryDialog"; protected override async Task OnInitializedAsync() { await using var context = await ContextFactory.CreateDbContextAsync(); - (await context.Set().OrderBy(c => c.Color).ToListAsync()).ForEach(c => Categories.Add(c)); + Categories.AddRange(await context.Set().OrderBy(c => c.Color).ToListAsync()); } private async Task AddCategory() { @@ -107,20 +117,25 @@ bg-error text-error-content await context.SaveChangesAsync(); Categories.Add(category); Categories.Sort((c1, c2) => c1.Color.CompareTo(c2.Color)); - Model = new(); + Model = new InputModel(); Message.ShowSuccess(Localizer["Category_Success"]); } catch { Message.ShowError(Localizer["Category_Error"]); } } - private async Task DeleteCategory(Category category) { + private async Task DeleteCategory() { try { await using var context = await ContextFactory.CreateDbContextAsync(); + var category = await context.Set().FindAsync(CategoryId); + if (category is null) { + Message.ShowError(Localizer["Category_Delete_Error"]); + return; + } context.Remove(category); await context.SaveChangesAsync(); - Categories.Remove(category); + Categories.RemoveAt(Categories.FindIndex(c => c.Id == CategoryId)); Message.ShowSuccess(Localizer["Category_Delete_Success"]); } catch { Message.ShowError(Localizer["Category_Delete_Error"]);