@@ -13,38 +13,39 @@ public async Task<IViewComponentResult> InvokeAsync(IList<string> groupings)
13
13
{
14
14
var extant = ( await platforms . GetAll ( ) ) . ToList ( ) ;
15
15
List < IReadOnlyList < SystemsResponse > > rows = [ ] ;
16
- void ProcessGroup ( string groupStr )
16
+ rows . AddRange ( groupings
17
+ . Select ( groupStr => ProcessGroup ( extant , groupStr ) )
18
+ . OfType < List < SystemsResponse > > ( ) ) ;
19
+
20
+ Platforms = extant
21
+ . Select ( sys => ( sys . DisplayName , sys . Code ) )
22
+ . Concat ( rows . Select ( row => (
23
+ DisplayName : string . Join ( " / " , row . Select ( sys => sys . DisplayName ) ) ,
24
+ Code : string . Join ( "-" , row . Select ( sys => sys . Code ) )
25
+ ) ) )
26
+ . OrderBy ( tuple => tuple . DisplayName )
27
+ . ToArray ( ) ;
28
+ PubClasses = await classes . GetAll ( ) ;
29
+
30
+ return View ( ) ;
31
+ }
32
+
33
+ private static List < SystemsResponse > ? ProcessGroup ( List < SystemsResponse > extant , string groupStr )
34
+ {
35
+ List < SystemsResponse > row = [ ] ;
36
+ foreach ( var idStr in groupStr . Split ( '-' ) )
17
37
{
18
- List < SystemsResponse > row = [ ] ;
19
- foreach ( var idStr in groupStr . Split ( '-' ) )
38
+ var found = extant . FirstOrDefault ( sys => sys . Code . Equals ( idStr , StringComparison . OrdinalIgnoreCase ) ) ;
39
+ if ( found is null )
20
40
{
21
- var found = extant . FirstOrDefault ( sys => sys . Code . Equals ( idStr , StringComparison . OrdinalIgnoreCase ) ) ;
22
- if ( found is null )
23
- {
24
- // ignore, TODO log?
25
- return ;
26
- }
27
-
28
- extant . Remove ( found ) ;
29
- row . Add ( found ) ;
41
+ // ignore, TODO log?
42
+ return null ;
30
43
}
31
44
32
- rows . Add ( row ) ;
45
+ extant . Remove ( found ) ;
46
+ row . Add ( found ) ;
33
47
}
34
48
35
- foreach ( var groupStr in groupings )
36
- {
37
- ProcessGroup ( groupStr ) ;
38
- }
39
-
40
- Platforms = extant . Select ( static sys => ( sys . DisplayName , sys . Code ) )
41
- . Concat ( rows . Select ( static row => (
42
- DisplayName : string . Join ( " / " , row . Select ( static sys => sys . DisplayName ) ) ,
43
- Code : string . Join ( "-" , row . Select ( static sys => sys . Code ) )
44
- ) ) )
45
- . OrderBy ( static tuple => tuple . DisplayName )
46
- . ToArray ( ) ;
47
- PubClasses = await classes . GetAll ( ) ;
48
- return View ( ) ;
49
+ return row ;
49
50
}
50
51
}
0 commit comments