55use Illuminate \Http \Request ;
66use Illuminate \Support \Facades \Gate ;
77use Illuminate \Support \Facades \URL ;
8- use Opcodes \LogViewer \Enums \FolderSortingMethod ;
8+ use Opcodes \LogViewer \Enums \SortingMethod ;
99use Opcodes \LogViewer \Enums \SortingOrder ;
1010use Opcodes \LogViewer \Facades \LogViewer ;
1111use Opcodes \LogViewer \Http \Resources \LogFolderResource ;
@@ -17,37 +17,28 @@ public function index(Request $request)
1717 {
1818 $ folders = LogViewer::getFilesGroupedByFolder ();
1919
20- $ sortingMethod = config ('log-viewer.defaults.folder_sorting_method ' , FolderSortingMethod ::ModifiedTime);
20+ $ sortingMethod = config ('log-viewer.defaults.folder_sorting_method ' , SortingMethod ::ModifiedTime);
2121 $ sortingOrder = config ('log-viewer.defaults.folder_sorting_order ' , SortingOrder::Descending);
2222
23- $ fileSortingOrder = $ request ->query ('direction ' , 'desc ' );
23+ $ fileSortingMethod = config ('log-viewer.defaults.file_sorting_method ' , SortingMethod::ModifiedTime);
24+ $ fileSortingOrder = $ this ->validateDirection ($ request ->query ('direction ' ));
2425
25- if ($ sortingMethod === FolderSortingMethod::Alphabetical) {
26- if ($ sortingOrder === SortingOrder::Ascending) {
27- $ folders = $ folders ->sortAlphabeticallyAsc ();
28- } else {
29- $ folders = $ folders ->sortAlphabeticallyDesc ();
30- }
26+ $ folders ->sortUsing ($ sortingMethod , $ sortingOrder );
3127
32- // Still sort files inside folders by direction param
33- $ folders ->each (function ($ folder ) use ($ fileSortingOrder ) {
34- if ($ fileSortingOrder === 'asc ' ) {
35- $ folder ->files ()->sortByEarliestFirst ();
36- } else {
37- $ folder ->files ()->sortByLatestFirst ();
38- }
39- });
40- } else { // ModifiedTime
41- if ($ fileSortingOrder === 'asc ' ) {
42- $ folders = $ folders ->sortByEarliestFirstIncludingFiles ();
43- } else {
44- $ folders = $ folders ->sortByLatestFirstIncludingFiles ();
45- }
46- }
28+ $ folders ->each (fn ($ folder ) => $ folder ->files ()->sortUsing ($ fileSortingMethod , $ fileSortingOrder ));
4729
4830 return LogFolderResource::collection ($ folders ->values ());
4931 }
5032
33+ private function validateDirection (?string $ direction ): string
34+ {
35+ if ($ direction === SortingOrder::Ascending) {
36+ return SortingOrder::Ascending;
37+ }
38+
39+ return SortingOrder::Descending;
40+ }
41+
5142 public function requestDownload (Request $ request , string $ folderIdentifier )
5243 {
5344 $ folder = LogViewer::getFolder ($ folderIdentifier );
0 commit comments