diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 5145206..3521267 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -6,6 +6,7 @@ use App\Models\SaAdmin; use App\Models\SaAdminsFlags; use App\Models\SaServer; +use App\Models\ServerVisibilitySetting; use App\Services\RconService; use Carbon\Carbon; use Illuminate\Http\Request; @@ -21,12 +22,46 @@ class ServerController extends Controller * @param RconService $rcon * @return \Illuminate\Http\JsonResponse */ + + public function showServerSettings() + { + $servers = SaServer::all(); + $serverVisibilitySettings = ServerVisibilitySetting::pluck('is_visible', 'server_id')->toArray(); + + return view('settings.servers', compact('servers', 'serverVisibilitySettings')); + } + + public function updateServerSettings(Request $request) + { + $serverSettings = $request->input('servers', []); + + try { + // Insert new settings + foreach ($serverSettings as $serverId => $isVisible) { + ServerVisibilitySetting::updateOrCreate( + ['server_id' => $serverId], + ['is_visible' => $isVisible] + ); + } + + return redirect()->back()->with('success', 'Server visibility settings updated successfully.'); + } catch (\Exception $e) { + return redirect()->back()->withErrors(['error' => 'Failed to update server visibility settings: ' . $e->getMessage()]); + } + } + public function getAllServerInfo(RconService $rcon) { $servers = SaServer::all(); + $serverVisibilitySettings = ServerVisibilitySetting::pluck('is_visible', 'server_id')->toArray(); + $formattedServers = []; foreach ($servers as $server) { + if (isset($serverVisibilitySettings[$server->id]) && !$serverVisibilitySettings[$server->id]) { + continue; // Skip hidden servers + } + list($serverIp, $serverPort) = explode(":", $server->address); // Fetch server information using the SteamService try { @@ -70,7 +105,28 @@ public function getAllServerInfo(RconService $rcon) return response()->json($formattedServers); } + public function syncNewServers(Request $request) + { + $servers = SaServer::all(); + $synced = false; + + foreach ($servers as $server) { + $existingSetting = ServerVisibilitySetting::where('server_id', $server->id)->first(); + if (!$existingSetting) { + ServerVisibilitySetting::create([ + 'server_id' => $server->id, + 'is_visible' => 1 // Default to visible, change as needed + ]); + $synced = true; + } + } + if ($synced) { + return response()->json(['success' => 'New servers synced successfully.']); + } else { + return response()->json(['error' => 'No new servers to sync.']); + } + } private function isPortOpen($ip, $port, $timeout = 1) { $fp = @fsockopen($ip, $port, $errno, $errstr, $timeout); if (!in_array($errno, [SOCKET_ETIMEDOUT,SOCKET_EHOSTUNREACH,SOCKET_ENETUNREACH]) && stripos(strtolower($errstr), 'failed') === false) { diff --git a/app/Http/Controllers/WeaponSkinController.php b/app/Http/Controllers/WeaponSkinController.php index 08de588..64a6978 100644 --- a/app/Http/Controllers/WeaponSkinController.php +++ b/app/Http/Controllers/WeaponSkinController.php @@ -73,6 +73,7 @@ public function load($type) { $skins = json_decode(File::get(resource_path('json/skins.json')), true); $appliedSkins = DB::connection('mysqlskins')->table('wp_player_skins')->where('steamid', Auth::user()?->steam_id)->get(); + $appliedKnife = DB::connection('mysqlskins')->table('wp_player_knife')->where('steamid', Auth::user()?->steam_id)->first()->knife; $filteredSkins = array_filter($skins, function($skin) use ($type) { if($type == 'knife' && in_array($skin['weapon_defindex'], [ @@ -104,8 +105,11 @@ public function load($type) // Mark skin as applied if it exists in appliedSkins foreach ($filteredSkins as &$skin) { - $skin['is_applied'] = $appliedSkins->contains(function ($value) use ($skin) { - return $value->weapon_defindex == $skin['weapon_defindex'] && $value->weapon_paint_id == $skin['paint']; + $skin['is_applied'] = $appliedSkins->contains(function ($value) use ($skin, $type, $appliedKnife){ + if($type == 'knife'){ + return $value->weapon_defindex == $skin['weapon_defindex'] && $value->weapon_paint_id == $skin['paint'] && $appliedKnife == $skin['weapon_name'] ; + } + return $value->weapon_defindex == $skin['weapon_defindex'] && $value->weapon_paint_id == $skin['paint'] ; }); } @@ -203,13 +207,13 @@ public function agents() public function gloves() { $gloves = json_decode(File::get(resource_path('json/gloves.json')), true); + $appliedGloveIndex = DB::connection('mysqlskins')->table('wp_player_gloves')->where('steamid', Auth::user()?->steam_id)->first()->weapon_defindex; // Fetch applied gloves from the database $appliedGloves = DB::connection('mysqlskins')->table('wp_player_skins') ->where('steamid', Auth::user()?->steam_id) ->pluck('weapon_paint_id') ->toArray(); - // Group gloves by paint name prefix $gloveTypes = []; foreach ($gloves as $glove) { @@ -218,9 +222,10 @@ public function gloves() $gloveTypes[$paintPrefix] = []; } - // Mark glove as applied if it exists in appliedGloves - $glove['is_applied'] = in_array($glove['paint'], $appliedGloves); + // Mark glove as applied if it exists in appliedGloves + $glove['is_applied'] = in_array($glove['paint'], $appliedGloves) && $glove['weapon_defindex'] == $appliedGloveIndex; + // dump($glove); $gloveTypes[$paintPrefix][] = $glove; } @@ -231,7 +236,6 @@ public function gloves() }); $gloveTypes[$type] = $gloves; } - return view('weapons.gloves', compact('gloveTypes')); } @@ -242,6 +246,7 @@ public function loadGloves($type) ->where('steamid', Auth::user()?->steam_id) ->pluck('weapon_paint_id') ->toArray(); + $appliedGloveIndex = DB::connection('mysqlskins')->table('wp_player_gloves')->where('steamid', Auth::user()?->steam_id)->first()->weapon_defindex; $filteredGloves = array_filter($gloves, function($glove) use ($type) { return str_contains(strtolower($glove['paint_name']), strtolower($type)); @@ -249,7 +254,7 @@ public function loadGloves($type) // Mark glove as applied if it exists in appliedGloves foreach ($filteredGloves as &$glove) { - $glove['is_applied'] = in_array($glove['paint'], $appliedGloves); + $glove['is_applied'] = in_array($glove['paint'], $appliedGloves) && $glove['weapon_defindex'] == $appliedGloveIndex;; } // Sort applied gloves to be first diff --git a/app/Models/ServerVisibilitySetting.php b/app/Models/ServerVisibilitySetting.php new file mode 100644 index 0000000..cde71c8 --- /dev/null +++ b/app/Models/ServerVisibilitySetting.php @@ -0,0 +1,21 @@ +belongsTo(SaServer::class, 'server_id'); + } +} diff --git a/database/migrations/2024_06_08_101849_create_server_visibility_settings_table.php b/database/migrations/2024_06_08_101849_create_server_visibility_settings_table.php new file mode 100644 index 0000000..5aa460e --- /dev/null +++ b/database/migrations/2024_06_08_101849_create_server_visibility_settings_table.php @@ -0,0 +1,23 @@ +id(); + $table->unsignedBigInteger('server_id'); + $table->boolean('is_visible')->default(true); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('server_visibility_settings'); + } +} diff --git a/lang/en.json b/lang/en.json index 5918cd7..0ec3cf5 100644 --- a/lang/en.json +++ b/lang/en.json @@ -137,5 +137,5 @@ "admins.updateVIP": "Update VIP", "admins.vipAddedSuccessfully": "VIP Added Successfully", "admins.playerNick": "Player Nick", - "admins.settings": "Settings" + "admins.settings": "Panel" } diff --git a/resources/views/components/menu/vertical-menu.blade.php b/resources/views/components/menu/vertical-menu.blade.php index ea6b853..84d1081 100644 --- a/resources/views/components/menu/vertical-menu.blade.php +++ b/resources/views/components/menu/vertical-menu.blade.php @@ -180,13 +180,18 @@ @endif @if(PermissionsHelper::isSuperAdmin()) - + @endif