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(); }