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