@@ -12,15 +12,33 @@ class RankingController extends Controller
1212 private const EQUIPMENT_MIN_SLOTS = 0 ;
1313 private const EQUIPMENT_NOT_SLOTS = [8 ];
1414
15- public function showCharacter (int $ id )
15+ public function showCharacter (string $ idOrSlug )
1616 {
1717 /** @var AbstractChar $charModel */
1818 $ charModel = app (AbstractChar::class);
1919
20- $ character = $ charModel ::query ()
21- ->where ('CharID ' , $ id )
22- ->where ('deleted ' , 0 )
23- ->firstOrFail ();
20+ $ character = null ;
21+
22+ if (ctype_digit ($ idOrSlug )) {
23+ $ character = $ charModel ::query ()
24+ ->where ('CharID ' , $ idOrSlug )
25+ ->where ('deleted ' , 0 )
26+ ->first ();
27+ }
28+
29+ if (!$ character ) {
30+ $ charId = $ charModel ::query ()
31+ ->where ('deleted ' , 0 )
32+ ->get (['CharID ' , 'CharName16 ' ])
33+ ->first (fn (AbstractChar $ char ) => $ char ->slug === $ idOrSlug )
34+ ?->CharID;
35+
36+ $ character = $ charId
37+ ? $ charModel ::query ()->where ('CharID ' , $ charId )->where ('deleted ' , 0 )->first ()
38+ : null ;
39+ }
40+
41+ abort_unless ($ character , 404 );
2442
2543 $ character ->load ('guild ' );
2644
@@ -43,11 +61,24 @@ public function showCharacter(int $id)
4361 ]);
4462 }
4563
46- public function showGuild (int $ id )
64+ public function showGuild (string $ idOrSlug )
4765 {
48- $ guild = Guild::query ()
49- ->where ('ID ' , $ id )
50- ->firstOrFail ();
66+ $ guild = null ;
67+
68+ if (ctype_digit ($ idOrSlug )) {
69+ $ guild = Guild::query ()->where ('ID ' , $ idOrSlug )->first ();
70+ }
71+
72+ if (!$ guild ) {
73+ $ guildId = Guild::query ()
74+ ->get (['ID ' , 'Name ' ])
75+ ->first (fn (Guild $ g ) => $ g ->slug === $ idOrSlug )
76+ ?->ID ;
77+
78+ $ guild = $ guildId ? Guild::query ()->where ('ID ' , $ guildId )->first () : null ;
79+ }
80+
81+ abort_unless ($ guild , 404 );
5182
5283 $ members = $ guild ->guildMembers ()
5384 ->orderBy ('JoinDate ' , 'asc ' )
0 commit comments