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