ServerController.php 2.2 KB

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