From 6389da4bc119cc1050b7e744311fbd1210d8adf4 Mon Sep 17 00:00:00 2001 From: Andre Beging Date: Wed, 2 Apr 2025 08:40:38 +0200 Subject: [PATCH] Rename 'Deleted' state to 'Archived' and update related logic Replaced 'Deleted' with 'Archived' across the codebase to better reflect the intent of the state. Adjusted related features, including filters, UI labels, navigation, and permissions. Introduced a 'Recent Activity' filter for improved activity tracking. --- FoodsharingSiegen.Contracts/Enums/RecordState.cs | 2 +- .../Model/ProspectFilter.cs | 2 ++ .../Controls/ProspectContainer.razor | 10 +++++----- .../Controls/ProspectContainer.razor.cs | 6 +++--- .../Controls/ProspectFilterControl.razor | 16 +++++++++++++++- .../Data/Service/ProspectService.cs | 2 +- .../Pages/ProspectsAll.razor | 5 +++-- .../Pages/ProspectsAll.razor.cs | 3 ++- FoodsharingSiegen.Server/Shared/NavMenu.razor | 5 +++-- FoodsharingSiegen.Shared/Helper/FilterHelper.cs | 6 +++++- 10 files changed, 40 insertions(+), 17 deletions(-) diff --git a/FoodsharingSiegen.Contracts/Enums/RecordState.cs b/FoodsharingSiegen.Contracts/Enums/RecordState.cs index 1036afb..a3eba9f 100644 --- a/FoodsharingSiegen.Contracts/Enums/RecordState.cs +++ b/FoodsharingSiegen.Contracts/Enums/RecordState.cs @@ -7,6 +7,6 @@ namespace FoodsharingSiegen.Contracts.Enums { Default = 10, - Deleted = 20 + Archived = 20 } } \ No newline at end of file diff --git a/FoodsharingSiegen.Contracts/Model/ProspectFilter.cs b/FoodsharingSiegen.Contracts/Model/ProspectFilter.cs index 212ef99..2e39cb7 100644 --- a/FoodsharingSiegen.Contracts/Model/ProspectFilter.cs +++ b/FoodsharingSiegen.Contracts/Model/ProspectFilter.cs @@ -10,6 +10,8 @@ public bool NoActivity { get; set; } + public bool RecentActivity { get; set; } + public bool DeletedOnly { get; set; } } } \ No newline at end of file diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor index eab4b38..0faba7e 100644 --- a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor +++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor @@ -6,7 +6,7 @@ var divClass = $"{CssClass} pc-main"; if (Prospect is { Complete: true }) divClass += " complete"; if (Prospect is { Warning: true }) divClass += " warning"; - if (Prospect is { RecordState: RecordState.Deleted }) divClass += " deleted"; + if (Prospect is { RecordState: RecordState.Archived }) divClass += " deleted"; }
@@ -23,13 +23,13 @@ @if (CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador)) { - if (Prospect?.RecordState != RecordState.Deleted) + if (Prospect?.RecordState != RecordState.Archived) { - + } - else if(CurrentUser.IsAdmin()) + else { - + } } diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs index 2b785f1..7cc4e98 100644 --- a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs +++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor.cs @@ -55,13 +55,13 @@ namespace FoodsharingSiegen.Server.Controls /// Deletes the currently selected prospect after user confirmation. This action is irreversible and will update the record state to "Deleted". /// /// A task that represents the asynchronous delete operation. - private async Task DeleteProspectAsync() + private async Task ArchiveProspectAsync() { if (Prospect == null) return; - await ConfirmDialog.ShowAsync(ModalService, $"⚠️ {Prospect.Name} löschen", $"Soll {Prospect.Name} mit der FS-ID {Prospect.FsId} wirklich gelöscht werden? Das kann nicht rückgängig gemacht werden!!", async () => + await ConfirmDialog.ShowAsync(ModalService, $"{Prospect.Name} archivieren", $"Soll {Prospect.Name} mit der FS-ID {Prospect.FsId} wirklich ins Archiv verschoben werden?", async () => { - Prospect.RecordState = RecordState.Deleted; + Prospect.RecordState = RecordState.Archived; var updateR = await ProspectService.UpdateAsync(Prospect); if (updateR.Success && OnDataChanged != null) await OnDataChanged(); }); diff --git a/FoodsharingSiegen.Server/Controls/ProspectFilterControl.razor b/FoodsharingSiegen.Server/Controls/ProspectFilterControl.razor index 61946f6..535adfe 100644 --- a/FoodsharingSiegen.Server/Controls/ProspectFilterControl.razor +++ b/FoodsharingSiegen.Server/Controls/ProspectFilterControl.razor @@ -40,6 +40,12 @@ await FilterChanged.InvokeAsync(Filter); } + private async Task RecentActivityChangedAsync(bool arg) + { + Filter.RecentActivity = arg; + await FilterChanged.InvokeAsync(Filter); + } + }
@@ -64,11 +70,19 @@
} + @* RECENT ACTIVITY *@ + @if (new[] { ProspectStateFilter.All, ProspectStateFilter.OnBoarding, ProspectStateFilter.Verification }.Contains(StateFilter)) + { +
+ Kürzlich geändert (< 6 Monate) +
+ } + @* NO ACTIVITY *@ @if (new[] { ProspectStateFilter.All, ProspectStateFilter.OnBoarding, ProspectStateFilter.Verification }.Contains(StateFilter)) {
- Lange keine Aktivität (6 Monate) + Lange keine Aktivität (> 6 Monate)
} diff --git a/FoodsharingSiegen.Server/Data/Service/ProspectService.cs b/FoodsharingSiegen.Server/Data/Service/ProspectService.cs index fe7112d..881c4ad 100644 --- a/FoodsharingSiegen.Server/Data/Service/ProspectService.cs +++ b/FoodsharingSiegen.Server/Data/Service/ProspectService.cs @@ -120,7 +120,7 @@ namespace FoodsharingSiegen.Server.Data.Service prospectsQuery = prospectsQuery.Where(x => x.Interactions.All(i => !parameter.CannotHaveInteractions.Contains(i.Type))); if (!parameter.IncludeDeleted) - prospectsQuery = prospectsQuery.Where(x => x.RecordState != RecordState.Deleted); + prospectsQuery = prospectsQuery.Where(x => x.RecordState != RecordState.Archived); var prospects = await prospectsQuery.ToListAsync(); diff --git a/FoodsharingSiegen.Server/Pages/ProspectsAll.razor b/FoodsharingSiegen.Server/Pages/ProspectsAll.razor index 83f6222..5617172 100644 --- a/FoodsharingSiegen.Server/Pages/ProspectsAll.razor +++ b/FoodsharingSiegen.Server/Pages/ProspectsAll.razor @@ -1,11 +1,12 @@ @page "/all" +@page "/archive" @using FoodsharingSiegen.Contracts.Enums @using FoodsharingSiegen.Shared.Helper @inherits FsBase -Alle (Admin) - @AppSettings.Terms.Title -

Alle (Admin)

+Archiv - @AppSettings.Terms.Title +

Archiv

@if (AppSettings.TestMode) { diff --git a/FoodsharingSiegen.Server/Pages/ProspectsAll.razor.cs b/FoodsharingSiegen.Server/Pages/ProspectsAll.razor.cs index 62c5753..60b59ac 100644 --- a/FoodsharingSiegen.Server/Pages/ProspectsAll.razor.cs +++ b/FoodsharingSiegen.Server/Pages/ProspectsAll.razor.cs @@ -1,5 +1,6 @@ using FoodsharingSiegen.Contracts; using FoodsharingSiegen.Contracts.Entity; +using FoodsharingSiegen.Contracts.Enums; using FoodsharingSiegen.Contracts.Helper; using FoodsharingSiegen.Contracts.Model; using FoodsharingSiegen.Server.Data.Service; @@ -45,7 +46,7 @@ namespace FoodsharingSiegen.Server.Pages /// protected override async Task InitializeDataAsync() { - if(!CurrentUser.IsAdmin()) NavigationManager.NavigateTo("/"); + if(!CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador)) NavigationManager.NavigateTo("/"); // Load Filter var filter = await LocalStorageService.GetItem(StorageKeys.ProspectFilter); diff --git a/FoodsharingSiegen.Server/Shared/NavMenu.razor b/FoodsharingSiegen.Server/Shared/NavMenu.razor index 0c95e89..532aae1 100644 --- a/FoodsharingSiegen.Server/Shared/NavMenu.razor +++ b/FoodsharingSiegen.Server/Shared/NavMenu.razor @@ -1,3 +1,4 @@ +@using FoodsharingSiegen.Contracts.Enums
- @if (CurrentUser.IsAdmin()) + @if (CurrentUser.IsInGroup(UserGroup.WelcomeTeam, UserGroup.Ambassador)) {
diff --git a/FoodsharingSiegen.Shared/Helper/FilterHelper.cs b/FoodsharingSiegen.Shared/Helper/FilterHelper.cs index 0f8db0b..838ffc0 100644 --- a/FoodsharingSiegen.Shared/Helper/FilterHelper.cs +++ b/FoodsharingSiegen.Shared/Helper/FilterHelper.cs @@ -43,11 +43,15 @@ namespace FoodsharingSiegen.Shared.Helper // Show only deleted prospects if (filter.DeletedOnly) - filterListQ = filterListQ.Where(x => x.RecordState == RecordState.Deleted); + filterListQ = filterListQ.Where(x => x.RecordState == RecordState.Archived); // No Activity Filter if (filter.NoActivity) filterListQ = filterListQ.Where(x => DateTime.Now - x.Modified > TimeSpan.FromDays(180)); + + // Recent Activity Filter + if (filter.RecentActivity) + filterListQ = filterListQ.Where(x => DateTime.Now - x.Modified < TimeSpan.FromDays(180)); return filterListQ.ToList(); }