ServerController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Server;
  5. use Exception;
  6. use Illuminate\Contracts\Pagination\LengthAwarePaginator;
  7. use Illuminate\Database\Eloquent\Collection;
  8. use Illuminate\Database\Eloquent\Model;
  9. use Illuminate\Http\JsonResponse;
  10. use Illuminate\Http\Request;
  11. use Spatie\QueryBuilder\QueryBuilder;
  12. class ServerController extends Controller
  13. {
  14. public const ALLOWED_INCLUDES = ['product', 'user'];
  15. public const ALLOWED_FILTERS = ['name', 'suspended', 'identifier', 'pterodactyl_id', 'user_id', 'product_id'];
  16. /**
  17. * Display a listing of the resource.
  18. *
  19. * @param Request $request
  20. * @return LengthAwarePaginator
  21. */
  22. public function index(Request $request)
  23. {
  24. $query = QueryBuilder::for(Server::class)
  25. ->allowedIncludes(self::ALLOWED_INCLUDES)
  26. ->allowedFilters(self::ALLOWED_FILTERS);
  27. return $query->paginate($request->input('per_page') ?? 50);
  28. }
  29. /**
  30. * Display the specified resource.
  31. *
  32. * @param Server $server
  33. * @return Server|Collection|Model
  34. */
  35. public function show(Server $server)
  36. {
  37. $query = QueryBuilder::for(Server::class)
  38. ->where('id', '=', $server->id)
  39. ->allowedIncludes(self::ALLOWED_INCLUDES);
  40. return $query->firstOrFail();
  41. }
  42. /**
  43. * Remove the specified resource from storage.
  44. *
  45. * @param Server $server
  46. * @return Server
  47. */
  48. public function destroy(Server $server)
  49. {
  50. $server->delete();
  51. return $server;
  52. }
  53. /**
  54. * suspend server
  55. *
  56. * @param Server $server
  57. * @return Server|JsonResponse
  58. */
  59. public function suspend(Server $server)
  60. {
  61. try {
  62. $server->suspend();
  63. } catch (Exception $exception) {
  64. return response()->json(['message' => $exception->getMessage()], 500);
  65. }
  66. return $server->load('product');
  67. }
  68. /**
  69. * unsuspend server
  70. *
  71. * @param Server $server
  72. * @return Server|JsonResponse
  73. */
  74. public function unSuspend(Server $server)
  75. {
  76. try {
  77. $server->unSuspend();
  78. } catch (Exception $exception) {
  79. return response()->json(['message' => $exception->getMessage()], 500);
  80. }
  81. return $server->load('product');
  82. }
  83. }