ctrlpanel/app/Http/Controllers/Api/ServerController.php

98 lines
2.3 KiB
PHP
Raw Normal View History

2021-06-06 19:11:42 +00:00
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
2021-06-06 20:04:46 +00:00
use App\Models\Server;
use Exception;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
2021-06-06 20:04:46 +00:00
use Illuminate\Http\JsonResponse;
2021-06-06 19:11:42 +00:00
use Illuminate\Http\Request;
use Spatie\QueryBuilder\QueryBuilder;
2021-06-06 19:11:42 +00:00
class ServerController extends Controller
{
public const ALLOWED_INCLUDES = ['product', 'user'];
public const ALLOWED_FILTERS = ['name', 'suspended', 'identifier', 'pterodactyl_id', 'user_id', 'product_id'];
2021-06-06 19:11:42 +00:00
/**
* Display a listing of the resource.
*
* @param Request $request
2021-06-06 20:04:46 +00:00
* @return LengthAwarePaginator
2021-06-06 19:11:42 +00:00
*/
2021-06-06 20:04:46 +00:00
public function index(Request $request)
2021-06-06 19:11:42 +00:00
{
$query = QueryBuilder::for(Server::class)
->allowedIncludes(self::ALLOWED_INCLUDES)
->allowedFilters(self::ALLOWED_FILTERS);
return $query->paginate($request->input('per_page') ?? 50);
2021-06-06 19:11:42 +00:00
}
/**
* Display the specified resource.
*
* @param Server $server
* @return Server|Collection|Model
2021-06-06 19:11:42 +00:00
*/
2021-06-06 20:04:46 +00:00
public function show(Server $server)
2021-06-06 19:11:42 +00:00
{
$query = QueryBuilder::for(Server::class)
2021-10-12 19:37:11 +00:00
->where('id', '=', $server->id)
->allowedIncludes(self::ALLOWED_INCLUDES);
return $query->firstOrFail();
2021-06-06 19:11:42 +00:00
}
/**
2021-06-06 20:04:46 +00:00
* Remove the specified resource from storage.
2021-06-06 19:11:42 +00:00
*
* @param Server $server
2021-06-06 20:04:46 +00:00
* @return Server
2021-06-06 19:11:42 +00:00
*/
2021-06-06 20:04:46 +00:00
public function destroy(Server $server)
2021-06-06 19:11:42 +00:00
{
2021-06-06 20:04:46 +00:00
$server->delete();
2021-06-06 20:04:46 +00:00
return $server;
2021-06-06 19:11:42 +00:00
}
/**
2021-06-06 20:04:46 +00:00
* suspend server
*
* @param Server $server
2021-06-06 20:04:46 +00:00
* @return Server|JsonResponse
2021-06-06 19:11:42 +00:00
*/
2021-06-06 20:21:26 +00:00
public function suspend(Server $server)
{
2021-06-06 20:04:46 +00:00
try {
$server->suspend();
} catch (Exception $exception) {
2021-06-06 20:21:26 +00:00
return response()->json(['message' => $exception->getMessage()], 500);
2021-06-06 20:04:46 +00:00
}
return $server->load('product');
2021-06-06 19:11:42 +00:00
}
/**
2021-06-06 20:04:46 +00:00
* unsuspend server
*
* @param Server $server
2021-06-06 20:04:46 +00:00
* @return Server|JsonResponse
2021-06-06 19:11:42 +00:00
*/
2021-06-06 20:21:26 +00:00
public function unSuspend(Server $server)
{
2021-06-06 20:04:46 +00:00
try {
$server->unSuspend();
} catch (Exception $exception) {
2021-06-06 20:21:26 +00:00
return response()->json(['message' => $exception->getMessage()], 500);
2021-06-06 20:04:46 +00:00
}
return $server->load('product');
2021-06-06 19:11:42 +00:00
}
}