ServerController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. *
  34. * @return Server|Collection|Model
  35. */
  36. public function show(Server $server)
  37. {
  38. $query = QueryBuilder::for(Server::class)
  39. ->where('id', '=', $server->id)
  40. ->allowedIncludes(self::ALLOWED_INCLUDES);
  41. return $query->firstOrFail();
  42. }
  43. /**
  44. * Remove the specified resource from storage.
  45. *
  46. * @param Server $server
  47. * @return Server
  48. */
  49. public function destroy(Server $server)
  50. {
  51. $server->delete();
  52. return $server;
  53. }
  54. /**
  55. * suspend server
  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. * @param Server $server
  71. * @return Server|JsonResponse
  72. */
  73. public function unSuspend(Server $server)
  74. {
  75. try {
  76. $server->unSuspend();
  77. } catch (Exception $exception) {
  78. return response()->json(['message' => $exception->getMessage()], 500);
  79. }
  80. return $server->load('product');
  81. }
  82. }