5
5
use App \Livewire \Traits \HasScrimEditor ;
6
6
use App \Models \Game ;
7
7
use App \Models \Overview ;
8
+ use App \Models \OverviewGametype ;
9
+ use App \Models \OverviewMap ;
10
+ use App \Support \Session \OverviewGametypeSession ;
8
11
use App \Support \Session \OverviewMapSession ;
9
12
use Illuminate \View \View ;
10
13
use Livewire \Component ;
@@ -17,15 +20,30 @@ class OverviewMatchesTable extends Component
17
20
18
21
public Overview $ overview ;
19
22
23
+ // @phpstan-ignore-next-line
24
+ public $ listeners = [
25
+ '$refresh ' ,
26
+ ];
27
+
20
28
public function render (): View
21
29
{
22
- $ mapId = OverviewMapSession::get ($ this ->overview );
30
+ $ overviewMapId = OverviewMapSession::get ($ this ->overview );
31
+ $ overviewGametypeId = OverviewGametypeSession::get ($ this ->overview );
32
+
33
+ // The default filter needs to be all maps of this overview
23
34
$ mapIds = $ this ->overview ->maps ->pluck ('map_id ' )->toArray ();
24
35
36
+ /** @var OverviewMap|null $filteredMapId */
37
+ $ filteredMapId = $ this ->overview ->maps ->firstWhere ('id ' , $ overviewMapId );
38
+
39
+ /** @var OverviewGametype|null $filteredGametypeIds */
40
+ $ filteredGametypeIds = $ this ->overview ->gametypes ->firstWhere ('id ' , $ overviewGametypeId );
41
+
25
42
$ games = Game::query ()
26
43
->with (['playlist ' , 'map ' , 'category ' , 'teams ' ])
27
- ->when ($ mapId === -1 , fn ($ query ) => $ query ->whereIn ('map_id ' , $ mapIds ))
28
- ->when ($ mapId !== -1 , fn ($ query ) => $ query ->where ('map_id ' , $ mapId ))
44
+ ->when ($ overviewMapId === -1 , fn ($ query ) => $ query ->whereIn ('map_id ' , $ mapIds ))
45
+ ->when ($ overviewMapId !== -1 , fn ($ query ) => $ query ->where ('map_id ' , $ filteredMapId ?->map_id))
46
+ ->when ($ overviewGametypeId !== -1 , fn ($ query ) => $ query ->whereIn ('gamevariant_id ' , $ filteredGametypeIds ?->gamevariant_ids))
29
47
->orderByDesc ('occurred_at ' )
30
48
->simplePaginate (16 );
31
49
0 commit comments