diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor b/FoodsharingSiegen.Server/Pages/Prospects.razor
index 86b56b2..797c6cb 100644
--- a/FoodsharingSiegen.Server/Pages/Prospects.razor
+++ b/FoodsharingSiegen.Server/Pages/Prospects.razor
@@ -25,17 +25,35 @@
>
+
+
+
+ @if (HasCustomSort)
+ {
+ @CurrentSortText
+ }
+
+
@{
var filterList = ProspectList.ApplyFilter(Filter);
+ var sortList = SortProspects(filterList);
}
\ No newline at end of file
diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor.cs b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs
index b13f13f..fa3c3e8 100644
--- a/FoodsharingSiegen.Server/Pages/Prospects.razor.cs
+++ b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs
@@ -36,6 +36,8 @@ namespace FoodsharingSiegen.Server.Pages
///
private List? ProspectList { get; set; }
+ private ProspectSortOption CurrentSort { get; set; } = ProspectSortOption.NameAscending;
+
#endregion
#region Override InitializeDataAsync
@@ -63,6 +65,32 @@ namespace FoodsharingSiegen.Server.Pages
await EditProspectDialog.ShowAsync(ModalService, LoadProspects);
}
+ private async Task OpenSortDialogAsync()
+ {
+ await ProspectSortDialog.ShowAsync(ModalService, CurrentSort, async option =>
+ {
+ CurrentSort = option;
+
+ await InvokeAsync(StateHasChanged);
+ });
+ }
+
+ private bool HasCustomSort => CurrentSort != ProspectSortOption.NameAscending;
+
+ private string CurrentSortText => CurrentSort switch
+ {
+ ProspectSortOption.NameDescending => "Sortierung: Name (absteigend)",
+ ProspectSortOption.ModifiedAscending => "Sortierung: Zuletzt geaendert (aufsteigend) ",
+ ProspectSortOption.ModifiedDescending => "Sortierung: Zuletzt geaendert (absteigend) ",
+ _ => string.Empty
+ };
+
+ private async Task ResetSortAsync()
+ {
+ CurrentSort = ProspectSortOption.NameAscending;
+ await InvokeAsync(StateHasChanged);
+ }
+
#endregion
#region Private Method FilterChangedAsync
@@ -78,6 +106,18 @@ namespace FoodsharingSiegen.Server.Pages
await LocalStorageService.SetItem(StorageKeys.ProspectFilter, Filter);
}
+ private List SortProspects(List prospects)
+ {
+ return CurrentSort switch
+ {
+ ProspectSortOption.NameAscending => prospects.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase).ToList(),
+ ProspectSortOption.NameDescending => prospects.OrderByDescending(x => x.Name, StringComparer.OrdinalIgnoreCase).ToList(),
+ ProspectSortOption.ModifiedAscending => prospects.OrderBy(x => x.Modified ?? x.Created).ToList(),
+ ProspectSortOption.ModifiedDescending => prospects.OrderByDescending(x => x.Modified ?? x.Created).ToList(),
+ _ => prospects
+ };
+ }
+
#endregion
#region Private Method LoadProspects